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.
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
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.

Ok, also hätte ich wohl am Amiga wohl doch net mit Basic zum programmieren anfangen sollen?
Dabei hat mir das doch immer so gefallen:
Gut werde ich mich mal mit Prozeduren beschäftigen, hmmm, das kann ja was werden

Ich dachte jetzt an eine einfache Lösung
Grüsse Matthias
Verfasst: 22.09.2008 17:27
von Kiffi
Ractur hat geschrieben:Ich dachte jetzt an eine einfache Lösung

Prozeduren zu verwenden
ist die einfachste Lösung.
Alles andere wäre Murks.
Grüße ... Kiffi