Seite 1 von 1
Gadgets automates anpassen
Verfasst: 19.06.2023 08:47
von stevie1401
Man stelle sich vor man erstellt ein Fenster mit einigen Gadgets.
Wenn man jetzt die Fenstergröße des Browsers ändert, gibt es eine Möglichkeit, dass sich das erstellte Fenster automatisch erneuert und alle Gargets in ihm sich in Größe und Abstand zueinander automatisch anpassen?
Bis jetzt muss ich immer erst alles umständlich umrechnen und ggf sogar die Images in den Gadgets neu resizen und so. Das kostet immer viel Rechenzeit und ist alles andere als "flüssig".
Re: Gadgets automates anpassen
Verfasst: 19.06.2023 09:41
von dige
Dafür gibt es doch Dialog. Muss man allerdings ein bischen umdenken. Von HeX0R gibts dafür den DialogDesignOR.
Re: Gadgets automates anpassen
Verfasst: 19.06.2023 10:37
von stevie1401
Sorry, ich habe mir das eben mal heruntergeladen. Damit kann ich überhauptnichts anfangen...
Ich habe auch keine xml Dateien, nur Spiderbasic-Dateien.
Re: Gadgets automates anpassen
Verfasst: 25.06.2023 15:30
von Benubi
Nunja das ginge vermutlich wohl am Einfachsten mit "wrappen" wenn keine Dialogs möglich sind, und es nicht in HTML/CSS selbst geht.
1) Du müsstest für jedes Gadget eine Info-Struktur anlegen. Darin enthalten: gadget_id, x.f,y.f,w.f,h.f., ggf. window_id. Die id's sind die PB bzw. SB id's (nicht WindowID(#Window) sondern -> #Window benutzen).
Die Werte in der Info Struktur entsprechen bei x,w = GadgetX() bzw. GadgetWidth() geteilt durch original Fenster Breite, und bei y,h = Wert/Original Höhe.
2) Des Weiteren eine Struktur für das Fenster mit den Original Abmaßen (Breite x Höhe) und #Window Nummer. Vielleicht ließe sich in diese Struktur die Gadget Liste je Fenster implementieren, aber es ginge auch mit einer globalen Liste die sich alle Gadgets teilen.
3) Wenn die Fenstergröße sich ändert arbeitest Du die Gadget-Info Liste ab und multiplizierst x,y,w,h mit den neuen jeweiligen Größen. Dann sollte das komplette Fenster perfekt skallieren. Du könnstest auch mit den Strukturen rumspielen, min/max werte hinzufügen für die höhen und breiten. Damit kannst du verhindern dass die Gadgets zu groß oder klein werden können, ggf. das WindowResize begrenzen und erneuern.
Nach dem Aufbauen eines Fensters könntest Du deine Gadgets "registrieren" also der Liste bzw. den Listen (je nachdem wie Du es machen willst) hinzufügen mit RegisterAutoResize(#Gadget, #Window) oder sowas Ähnliches. Vorher solltest Du aber schon das Fenster "registrieren", also die Abmaße in eine Info struktur setzen, weil ja die RegisterAutoResize() unter Punkt 3 die u/v Koordinaten damit rausrechnen muß. Daher bräuchtest Du auch eine GetWindowInfoStructure() und GetGadgetInfoStructure() Hilfsfunktionen, sowie eine AutoResizeWindowGadgets()...
Re: Gadgets automates anpassen
Verfasst: 28.06.2023 15:31
von stevie1401
Ja, so in der Art dachte ich mir das auch.
Das finde ich allerdings ziemlich umständlich und ich bin mir nicht einmal sicher, ob das mit Spiderbasic so richtig funktionieren kann, da einige Dinge denn doch noch immer noch recht fehlerhaft sind.
Da kann man ja eigendlich fast gleich direkt Javascript programmieren.
Ok, erst einmal danke für die Info

Re: Gadgets automates anpassen
Verfasst: 28.06.2023 18:53
von HeX0R
Da ist gar nix umständlich, wenn man denn auf dige gehört hätte.
Ich meine jetzt den Hinweis mit Dialogen, nicht mit meinem Tool, wenn Dir das zu kompliziert ist, brauchst Du es ja nicht benutzen.
Dialoge kann man auch zu Fuß erstellen (wenn man denn möchte).
Hier 5 Minuten Arbeit (Achtung: SpiderBasic Code!):
Code: Alles auswählen
Procedure.s GetXMLString()
Protected XML$
XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
XML$ + ""
XML$ + "<dialogs><!--Created by Dialog Design0R V1.84 => get it from: https://hex0rs.coderbu.de/en/sdm_downloads/dialogdesign0r/-->"
XML$ + " <window flags='#PB_Window_SystemMenu|#PB_Window_SizeGadget' minwidth='300' name='window_1' minheight='350' xpos='84' ypos='286'>"
XML$ + " <vbox expand='item:3'>"
XML$ + " <hbox expand='item:2'>"
XML$ + " <text text='Bratpfannentyp:' name='text_1'/>"
XML$ + " <string width='100' name='string_1' height='24'/>"
XML$ + " </hbox>"
XML$ + " <frame text='Stinktiere' name='frame_1'>"
XML$ + " <gridbox columns='3' colexpand='item:2'>"
XML$ + " <text text='Name:' name='text_2'/>"
XML$ + " <string colspan='2' name='string_2' height='24'/>"
XML$ + " <text text='Genitallänge:' name='text_3'/>"
XML$ + " <string colspan='2' name='string_3' height='24'/>"
XML$ + " <text text='Geschlecht:' name='text_4'/>"
XML$ + " <combobox name='combobox_1' height='24'/>"
XML$ + " <checkbox text='divers' name='checkbox_1'/>"
XML$ + " </gridbox>"
XML$ + " </frame>"
XML$ + " <frame text='Log:' name='frame_2'>"
XML$ + " <editor height='200' name='editor_1'/>"
XML$ + " </frame>"
XML$ + " </vbox>"
XML$ + " </window>"
XML$ + "</dialogs><!--DDesign0R Definition: SpiderBasic|1|1|1|__|example_with_declares|0|AddOn:3:0-->"
XML$ + ""
ProcedureReturn XML$
EndProcedure
a$ = GetXMLString()
If ParseXML(0, a$) And XMLStatus(0) = #PB_XML_Success
CreateDialog(0)
OpenXMLDialog(0, 0, "window_1")
AddGadgetItem(DialogGadget(0, "combobox_1"), -1, "weiblich")
AddGadgetItem(DialogGadget(0, "combobox_1"), -1, "männlich")
SetGadgetState(DialogGadget(0, "combobox_1"), 0)
EndIf
Re: Gadgets automates anpassen
Verfasst: 03.07.2023 10:14
von dige