DialogXML und #SS_NOTIFY

Anfängerfragen zum Programmieren mit PureBasic.
Biozynotiker
Beiträge: 8
Registriert: 16.03.2013 19:44

DialogXML und #SS_NOTIFY

Beitrag 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!
PureBasic 5.60
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: DialogXML und #SS_NOTIFY

Beitrag von RSBasic »

Ohne getestet zu haben, kannst du mal folgendes ausprobieren:

Code: Alles auswählen

#PB_Text_Notify = #SS_NOTIFY
Wird #PB_Text_Notify ebenfalls ignoriert?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Biozynotiker
Beiträge: 8
Registriert: 16.03.2013 19:44

Re: DialogXML und #SS_NOTIFY

Beitrag von Biozynotiker »

RSBasic hat geschrieben:Ohne getestet zu haben, kannst du mal folgendes ausprobieren:

Code: Alles auswählen

#PB_Text_Notify = #SS_NOTIFY
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.
PureBasic 5.60
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: DialogXML und #SS_NOTIFY

Beitrag 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.
Win11 x64 | PB 6.00 (x64)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: DialogXML und #SS_NOTIFY

Beitrag von GPI »

zu faul eine kleine Demo zu schreiben, aber hast du die Konstante mal in mittels Runtime definiert?

Code: Alles auswählen

 #myflag=#ss_NOTIFY
runtime #myflag
dann könnte es gehen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: DialogXML und #SS_NOTIFY

Beitrag von Andesdaf »

Hab ich schon probiert, funktioniert auch dann nicht.
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: DialogXML und #SS_NOTIFY

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: DialogXML und #SS_NOTIFY

Beitrag 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
Hygge
Biozynotiker
Beiträge: 8
Registriert: 16.03.2013 19:44

Re: DialogXML und #SS_NOTIFY

Beitrag von Biozynotiker »

Ja, nachträglich #SS_NOTIFY hinzufügen funktioniert!

Danke für den Tipp/Code.
PureBasic 5.60
Antworten