weiß jemand eine Möglichkeit, wie man in PureBasic zu einem TextGadget ein Pop-up-Menü programmiert? Ich meine, wenn der Mauszeiger sich auf dem TextGadget befindet und man dann mit der rechten Maustaste klickt, daß dann ein Kontextmenü dazu erscheint. Ich habe so etwas in anderen Programmen gesehen, wo ein TextGadget mit vertieftem Rand (in PureBasic mit dem Flag #PB_Text_Border) z.B. für Dateipfade zu sehen war, das man dann rechts anklicken und den Dateipfad in die Zwischenablage kopieren konnte.
Um mir selbst ein erstes Bild zu verschaffen in bezug auf TextGadgets und Events, die man hierfür nutzen könnte, habe ich ein kleines Programm geschrieben:
Code: Alles auswählen
LoadFont(1,"MS Sans Serif", 10)
SetGadgetFont(#PB_Default, FontID(1))
OpenWindow(1, 0, 0, 295, 90, "Event-Test", #PB_Window_SystemMenu|
#PB_Window_ScreenCentered)
TextGadget(2, 15, 15, 122, 23, "D:\Programmierung", #PB_Text_Border)
StringGadget(3, 155, 15, 123, 23, "D:\Programmierung")
TextGadget(4, 158, 54, 123, 20, "D:\Programmierung")
ButtonGadget(5, 15, 50, 122, 25, "Ereignisse")
Define Z, Ek, Et, GNr
Repeat
Ek=WaitWindowEvent()
Et=EventType()
GNr=EventGadget()
Z+1
Debug Str(Z)+": "+"Event = "+Str(Ek)+", "+
"EventType = "+Str(Et)+", "+
"Gadget# = "+Str(GNr)
Until Ek=#PB_Event_CloseWindow
Das Anklicken des Buttons "Ereignisse" löst exakt 7 Events aus:
Das Anklicken des StringGadgets löst 7 Events aus:Event = 513, EventType = -1, Gadget# = 0 linke Maustaste gedrückt
Event = 15, EventType = -1, Gadget# = 0 Fensterabschnitt zeichnen
Event = 514, EventType = -1, Gadget# = 0 linke Maustaste losgelassen
Event = 13100, EventType = 0, Gadget# = 5 ein Fensterelement wurde angeklickt
Event = 512, EventType = -1, Gadget# = 5 Maus wurde bewegt
Event = 15, EventType = -1, Gadget# = 5 Fensterabschnitt zeichnen
Event = 275, EventType = -1, Gadget# = 5 #WM_TIMER
Das Anklicken der beiden TextGadgets (das mit vertieftem Rand und das ohne) löst 3 Events aus:Event = 513, EventType = -1, Gadget# = 0 linke Maustaste gedrückt
Event = 13100, EventType = 14000, Gadget# = 3 ein Fensterelement wurde angeklickt, EventType: Fokus erhalten
Event = 13100, EventType = 256, Gadget# = 3 ein Fensterelement wurde angeklickt, EventType: unbekannt
Event = 15, EventType = -1, Gadget# = 3 Fensterabschnitt zeichnen
Event = 514, EventType = -1, Gadget# = 3 linke Maustaste losgelassen
Event = 512, EventType = -1, Gadget# = 3 Maus wurde bewegt
Event = 275, EventType = -1, Gadget# = 3 #WM_TIMER
Während man also mit Button- und StringGadgets (ereignisschleifenmäßig) noch ein bißchen was machen kann, passiert bei TextGadgets so gut wie nichts. Zumindest liefert PureBasics WaitWindowEvent-Befehl hier nichts Ergiebiges.Event = 513, EventType = -1, Gadget# = 0 linke Maustaste gedrückt
Event = 514, EventType = -1, Gadget# = 0 linke Maustaste losgelassen
Event = 13112, EventType = 0, Gadget# = 0 linker Mausklick
Vielen Dank