Seite 1 von 1
DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 16:30
von Biozynotiker
Hallo Zusammen,
Ich verwende gerne auf TextGadgets das #SS_NOTIFY Flag,
da man somit ein TextGaget 'Klickbar' bzw. somit ein Event auslösen kann.
Nun Benutze ich seit geraumer Zeit für meine Projekte die DialogXML
und hier scheint es, als würden nur PureBasic eigene Konstanten als Flag erlaubt.
Ist es irgendwie möglich, das z.B. ein Doppelklick auf ein TextGadget das mit DialogXML
erstellt wurde ein Event auszulösen?
Für einen Tipp währe ich dankbar!
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 16:34
von RSBasic
Ohne getestet zu haben, kannst du mal folgendes ausprobieren:
Wird #PB_Text_Notify ebenfalls ignoriert?
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 16:57
von Biozynotiker
RSBasic hat geschrieben:Ohne getestet zu haben, kannst du mal folgendes ausprobieren:
Wird #PB_Text_Notify ebenfalls ignoriert?
Also #SS_NOTIFY verhinderte das OpenXMLDialog überhaupt öffnete, was mit #PB_Text_Notify nun funktioniert.
Allerdings löse ich damit kein Event aus, wenn ich auf das TextGadget klicke.
Ich verwende wie bei anderen Gadgets, BindGadgetEvent auf das TextGadget, jedoch wird wie beschrieben kein Event ausgelöst.
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 18:53
von Andesdaf
Biozynotiker hat geschrieben:Also #SS_NOTIFY verhinderte das OpenXMLDialog überhaupt öffnete, was mit #PB_Text_Notify nun funktioniert.
ich bekomme immer einen Dialog-Error (<text text='Text' flags='#PB_Text_Notify' />)
Dialog error: '#PB_Text_Notify' flag is not supported for the following gadget: text
Hätte mich auch gewundert, wenn das funktioniert hätte. Soweit ich weiß akzeptiert die Dialog-Lib
nur bestimmte (und teils nicht mal alle normal vorgesehenen) PB-Flags.
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 18:58
von GPI
zu faul eine kleine Demo zu schreiben, aber hast du die Konstante mal in mittels Runtime definiert?
dann könnte es gehen.
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 19:06
von Andesdaf
Hab ich schon probiert, funktioniert auch dann nicht.
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 19:14
von RSBasic
Und wenn man #SS_NOTIFY nachträglich hinzufügt?
Code: Alles auswählen
EnableExplicit
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(1, 10, 10, 480, 20, "Text Text Text Text Text Text Text Text Text Text", 0)
SetWindowLongPtr_(GadgetID(1), #GWL_STYLE, GetWindowLongPtr_(GadgetID(1), #GWL_STYLE) | #SS_NOTIFY)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Debug "Klick"
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: DialogXML und #SS_NOTIFY
Verfasst: 02.08.2017 19:22
von Kiffi
RSBasic hat geschrieben:Und wenn man #SS_NOTIFY nachträglich hinzufügt?
ja, das funktioniert:
Code: Alles auswählen
#Dialog = 0
#Xml = 0
Runtime Enumeration
#myText
EndEnumeration
Runtime Procedure myTextEvent()
Debug "clicked!"
EndProcedure
XML$ = "<window id='#PB_Any' name='test' text='test' minwidth='100' minheight='100' flags='#PB_Window_ScreenCentered | #PB_Window_SystemMenu'>" +
" <text id='#myText' text='Click me!' onevent='myTextEvent()' />" +
"</window>"
If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
SetWindowLongPtr_(GadgetID(#myText), #GWL_STYLE, GetWindowLongPtr_(GadgetID(#myText), #GWL_STYLE) | #SS_NOTIFY)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Else
Debug "Dialog error: " + DialogError(#Dialog)
EndIf
Else
Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
EndIf
Grüße ... Peter
Re: DialogXML und #SS_NOTIFY
Verfasst: 03.08.2017 09:53
von Biozynotiker
Ja, nachträglich #SS_NOTIFY hinzufügen funktioniert!
Danke für den Tipp/Code.