Seite 1 von 1

Anfängerprobleme mit Dialog-Library

Verfasst: 17.04.2024 17:00
von Qnode
... ich schon wieder. Ich habe noch einen anderen Thread zu laufen, in dem ich schon geschrieben habe, dass ich mir nochmal die Dialog-Library anschaue, was ich jetzt schon mal gemacht habe. Habe mir ein Beispielprojet gebaut und angefangen, mit Dialogen rumzuexperimentieren.
Funktioniert schon ansatzweise und ich kann nur den DialogDesigner von Hex0r empfehlen, der in dem ganzen XML-Gebastel echt eine große Hilfe ist.

Wie dem auch sei, ich komme an einem Punkt nicht weiter, trotz Hilfe-Recherche (OpenXMLDialog) und Google-ist-dein-Freund.
Es geht darum, dass mein Testdialog bestimmte Komponenten einfach nicht anzeigt (z.B. Menü und Toolbox). Ich habe mir die Attribute angesehen, mit den Einstellungen rumgespielt, aber ich habe schlichtweg keinen Peil, was ich falsch mache.
Das gleiche habe ich mit der Scrollarea (ja, ja, ich und meine Scrollareas :roll: ). Da die ein Singlecontainer ist, dachte ich, dass ich sie mit einer vBox bestücke, die dann die Childs aufnimmt. So erscheint es mir jedenfalls logisch. Wird aber nix angezeigt...

Es ist nur ein Beispielprojekt, insofern wäre ich einfach dankbar, wenn mir jemand mit Ahnung von Dialogen mal eine Denkrichtung geben kann, was man tut, wenn ein Dialogteil nicht angezeigt wird. Das hat sicherlich eine ganz logische Ursache... wenn man nur darauf kommen würde...

Hier mein XML

Code: Alles auswählen

<dialogs>
  <window flags='#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered' text='Test' minwidth='400' minheight='200' width='900' height='600' name='Haupt' id='#Haupt'>
    <menu height='30' width='100' id='#mnuHaupt'>
      <submenu text='Datei' height='30' id='#mnuDatei'>
        <menuitem text='Programm beenden' height='30' id='#mnuBeenden'/> 
      </submenu> 
    </menu>
    <toolbar flags='#PB_ToolBar_Large' width='100' height='30' id='#tbHaupt'>
      <toolbutton image='#ICON_BUCHUNG_NEU' tooltip='Eine neue Buchung erzeugen' id='#tbBuchungNeu'/>
      <toolbutton image='#ICON_EINMALBUCHUNG_NEU' tooltip='Eine neue Einmalbuchung erzeugen' id='#tbEinmalbuchungNeu'/>
    </toolbar>
    <vbox expand='item:gridDatenbereich' id='#vbUeberschrift'>
      <gridbox columns='4' colspacing='5' rowspacing='5' colexpand='yes' rowexpand='yes' height='50' id='#leisteUeberschrift'>
        <buttonimage text='Vorher' name='btnMonatVorher' id='#btnMonatVorher'/>
        <string colspan='2' name='AktuellerTermin' id='#strAktuellerTermin' onlostfocus='textChanged()'/>
        <buttonimage text='Nachher' name='btnMonatNachher' id='#btnMonatNachher'/> 
      </gridbox>
      <hbox id='#hbHauptbereich'>
        <vbox id='#vbLinks'>
          <text text='Links' name='text_1' id='#txtText1'/> 
        </vbox>
        <scrollarea colspan='3' scrolling='vertical' innerwidth='500' invisible='yes' width='500' height='400' innerheight='5000' flags='#PB_ScrollArea_Raised' name='saBericht' id='#saBericht'>
          <vbox id='#vbBericht'>
            <text text='Monatsbericht April 2024' flags='#PB_Text_Center' height='30' name='MB_Ueberschrift' id='#MB_Ueberschrift'/>
            <text text='Nächster Text' name='text_3'/>
            <listicon height='100' name='listicon_1'/> 
          </vbox> 
        </scrollarea>
        <vbox id='#vbRechts'>
          <text text='Rechts' name='text_2' id='#txtText2'/> 
        </vbox> 
      </hbox> 
    </vbox> 
  </window>
</dialogs>
Hier die Startroutine

Code: Alles auswählen

#Dialog = 1
#XML = 1
Runtime Enumeration Fenster
  #Haupt
EndEnumeration

Runtime Enumeration Icons
  #ICON_BUCHUNG_NEU
  #ICON_EINMALBUCHUNG_NEU
EndEnumeration

Runtime Enumeration Menue
  #mnuHaupt
  #mnuDatei
  #mnuBeenden
  #tbHaupt
  #tbBuchungNeu
  #tbEinmalbuchungNeu
EndEnumeration

Runtime Enumeration Gadgets
 #vbUeberschrift
#leisteUeberschrift
#btnMonatVorher
#strAktuellerTermin
#btnMonatNachher
#hbHauptbereich
#vbLinks
#txtText1
#saBericht
#vbBericht
#MB_Ueberschrift
#vbRechts
#txtText2

EndEnumeration

Runtime Procedure textChanged()
  Debug "Text wurde geändert"
EndProcedure

LoadImage(#ICON_BUCHUNG_NEU, "Dauerbuchung.png")
LoadImage(#ICON_EINMALBUCHUNG_NEU, "Einmalbuchung.png")

If LoadXML(#XML, "frmHaupt.xml") And XMLStatus(#XML) = #PB_XML_Success
  If CreateDialog(#Dialog) 
    If OpenXMLDialog(#Dialog, #XML, "Haupt")
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  Else  
    Debug "Dialog error: " + DialogError(#Dialog)
  EndIf
  
    
  EndIf
Else
  Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
  
EndIf

Re: Anfängerprobleme mit Dialog-Library

Verfasst: 17.04.2024 18:41
von Andesdaf
Woher hast du denn die Info, dass sich Menüs und Toolbars mit der Dialog-Lib erstellen ließen? Die werden nicht unterstützt und müssen manuell nachträglich eingefügt werden.

Die Scrollarea wird nicht angezeigt, weil du sie mit invisible="yes" definierst.

hbox und vbox haben keine IDs und für das expand-Item musst du eine Zahl eingeben (die Nummer des Child-Elements), keine Konstante.

Re: Anfängerprobleme mit Dialog-Library

Verfasst: 17.04.2024 20:03
von Qnode
Hallo und danke für die Antwort.

Das mit den Menüs und Toolbars habe ich vom DialogDesigner. Dort kann man sie einfügen und deshalb dachte ich, dass sie dann auch automatisch angezeigt werden.

Das mit der Scrollarea ist peinlich... ich habe total auf den xml-code und Breiten und Größen und Expands usw. gestarrt und das echt nicht gesehen. Aua, aua...

Danke für den Hinweis für das expand-Item. Dann weiß ich, was ich machen muss .

Re: Anfängerprobleme mit Dialog-Library

Verfasst: 17.04.2024 20:45
von HeX0R
Leider gehen keine Menüs/ToolBars/Statusbar out-of-the box in PBs Dialogen, ich habe daher einen "Hack" verwendet, den Du natürlich dann auch wieder nutzen musst, wenn Du Deine Dialoge in Deiner App nutzt:
https://www.purebasic.fr/english/viewtopic.php?p=561576

Ich empfand es einfach immer als unvollständig, wenn ich schon mein HMI durch eine XML designen/definieren kann, finde ich, müssen auch Menüs, ToolBars und Statusbars mit in die XML.

Und, natürlich kannst Du vbox, hbox und Co IDs zuweisen, das sind aber sog. virtuelle Container, die existieren am Ende eigentlich gar nicht, von daher ist es unnötig.
Aber erlaubt.

Re: Anfängerprobleme mit Dialog-Library

Verfasst: 18.04.2024 10:10
von Qnode
Danke für die Info. Kämpfe auch noch mit hBox und vBox... habe aber vor, zu gewinnen ;-)