Seite 1 von 2

EventMenu() Klick manuell per Befehl auslösen?

Verfasst: 22.09.2008 15:14
von Ractur
Hallo,

ich hoffe ich nerve nicht, allerdings habe ich noch nicht recht was dazu gefunden, wie kann ich bei einen PopupMenu eine Eingabe "vortäuschen"?

Code: Alles auswählen

EventID = WaitWindowEvent(1000)

   If EventID = #PB_Event_Menu
      Select EventMenu()
       Case 0
Ich will Case 0 per Mausklick auslösen, ohne das ich aber im PopupMenu wirklich klicke.

Code: Alles auswählen

   If EventID = #PB_Event_SysTray

    If EventType() = #PB_EventType_RightClick
      DisplayPopupMenu(0,WindowID(#frm_Systray))
      EndIf
      If EventType() = #PB_EventType_LeftDoubleClick
??????????????????????????????????????????????????????
      EndIf
   EndIf
Wenn man im Systray 2 mal doppeltklickt auf das Icon, soll das eben den selben Effekt haben als wie wenn man im Popupmenü ein bestimmtes Feld klicken würde. :freak:

Grüsse Matthias[/code]

Verfasst: 22.09.2008 15:37
von STARGÅTE
ich glaube das einfachste wäre selber die variablen auf die gewünschten Werte zu setzen :

Code: Alles auswählen

EventID = WaitWindowEvent(1000) 
EventMenu = EventMenu() 

; hier dann einfach selber den Effekt setzten:
EventID = #PB_Event_Menu 
EventMenu = 0
; natürlich nur wenn du es wirklich willst... und es kein anderes Event gab ...

If EventID = #PB_Event_Menu 
 Select EventMenu 
  Case 0
das gleiche gilt für das andere ...

Verfasst: 22.09.2008 15:39
von edel
Es wird doch eh ein Event bei nem Doppelklick gefeuert. Einfach mit EventType() auswerten.

Verfasst: 22.09.2008 15:57
von Ractur
Huhu,

danke erstmal, bei Case 0 springt er ins Hauptprogramm rein, und dies möchte ich eben wie bei fast allen anderen Programmen nun auch mit Doppelklick auf das Icon möglich machen.

Der Doppelklick funktioniert auch und wird so auch ausgewertet, allerdings bräuchte ich ne Möglichkeit das er nun das Programm abarbeitet als wie wenn Case 0 eingetreten wäre.

EventMenu() ist denke mal eine feste Variable der ich nichts zuweisen kann?! Ich habe Dein Beispiel mal probiert STARGÅTE , das funktioniert aber nicht, keine Reaktion.

Ich hab schon gelesen mit SendMessage_ könnte man das machen, allerdings weiss ich nicht wie genau, da blick ich nicht durch. Natürlich wär die Lösung von Dir STARGÅTE am besten und schönsten, aber Sie funktioniert net, wohl auch deshalb weil ich EventMenu() nix zuweisen kann=!?

@edel ja, der Doppelklick funktioniert auch, nur ich müsste mit dem Doppelklick ja an eine bestimmte Stelle springen! Mit GOTO Sprungmarke habe ich das schon probiert, allerdings funktioniert dann das Programm nicht mehr richtig.

Grüsse Matthias

Verfasst: 22.09.2008 16:27
von edel
Hae, vielleicht solltest du dir dann eher Gedanken ueber dein Code machen?

Verfasst: 22.09.2008 16:30
von Kaeru Gaman
du denkst um die falsche ecke.

was spricht gegen

Code: Alles auswählen

Select EventMenu() 
  Case 0
    Call Hauptprogram()

;...

If EventType() = #PB_EventType_LeftDoubleClick
  Call Hauptprogramm()
... mal ganz abgesehen davon, dass das nicht das "Hauptprogramm" ist, aber das ist wohl auch relativ ...

Verfasst: 22.09.2008 17:02
von Ractur
Kaeru Gaman hat geschrieben:du denkst um die falsche ecke.

was spricht gegen

Code: Alles auswählen

Select EventMenu() 
  Case 0
    Call Hauptprogram()

;...

If EventType() = #PB_EventType_LeftDoubleClick
  Call Hauptprogramm()
... mal ganz abgesehen davon, dass das nicht das "Hauptprogramm" ist, aber das ist wohl auch relativ ...
Huhu das hört sich gut an, allerdings weiss ich net genau wie ich "Call" genau verwende und dann das Hauptprogramm "deklariere"! I

Ich habe mal nen Test gemacht, habe das Hauptprogramm unten rein kopiert in:

Code: Alles auswählen

If EventType() = #PB_EventType_LeftDoubleClick
Hier das gesamte Hauptprogramm was normal bei Case 0 
Da funktioniert es!

Nur wenn ich so mache:

Code: Alles auswählen

If EventT 
Case 0
Start:

;...

If EventType() = #PB_EventType_LeftDoubleClick
goto Start
Blinkt das Fenster n paar mal, und das Programm beendet sich von selbst! Wieso denn das? Ist doch nix anderes als er Case 0 abarbeiten würde *nachdenk*

Grüsse und Danke,

Matthias

Verfasst: 22.09.2008 17:13
von ts-soft
Mach mal aus Deinem Hauptprogramm eine Procedure und schmeiß die goto
raus, sonst wird das nie was :wink:

Beispiele gibts hier eigentlich genug. Dein Programmierstil der 80er bringt
Dich heutzutage eigentlich nicht zum Ziel.

Gruß
Thomas

Verfasst: 22.09.2008 17:23
von Ractur
ts-soft hat geschrieben: Beispiele gibts hier eigentlich genug. Dein Programmierstil der 80er bringt
Dich heutzutage eigentlich nicht zum Ziel.
:lol: Ok, also hätte ich wohl am Amiga wohl doch net mit Basic zum programmieren anfangen sollen? :lol:

Dabei hat mir das doch immer so gefallen:

Code: Alles auswählen

10 echo "hallo"
20 goto 10
Gut werde ich mich mal mit Prozeduren beschäftigen, hmmm, das kann ja was werden :roll: Ich dachte jetzt an eine einfache Lösung :twisted:

Grüsse Matthias

Verfasst: 22.09.2008 17:27
von Kiffi
Ractur hat geschrieben:Ich dachte jetzt an eine einfache Lösung :twisted:
Prozeduren zu verwenden ist die einfachste Lösung.
Alles andere wäre Murks. ;-)

Grüße ... Kiffi