Seite 1 von 3

Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 19:30
von MenschMarkus
Hi

Ich arbeite an einem Projekt welches ein Fenster mit ca 1000 Gadgets arbeitet. Wird das Fenster jetzt einfach nur über den Bildschirm verschoben (keine Größenänderung), schwebt das das Fenster zeitverzögert hinter dem Cursor her. Je nach Geschwindigkeit der Cursorbewegung ist das Fenster erst ca.1 sek, nach ClickRelease an der Endposition angekommen
Meine Fragen hierzu:
1. Woran liegt das?
2. Sind das einfach zu viele Gadgets im Fenster?


Alternativ zur normalen Fenstererzeugung bin ich gerade dabei HexORs DialogDesignor zu testen. Eigentlich ein gut übersichtliches Tool. Hierzu habe ich aber noch Verständnisfragen.
1. Gibt es eine Dokumentation ?

Bei ersten Gehversuchen habe ich versucht 2 Container in einer VBox zu erzeugen die sich den vertikalen Platz nicht 50/50 teilen sondern 20/80 und sich dabei sowohl horizontal wie auch Vertikal der Fenstergröße anpassen.
2. Wie kann ich das verwirklichen?

3. Ist ein Fenster mal erstellt und als XML gespeichert, wie kann ich das XML Konstrukt jetzt in PB einbinden? Das habe ich auch noch nicht gefunden.

LG

menschmarkus

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 20:33
von ccode_new
MenschMarkus,
was sind das alles für Gadgets ?

Die 1000 klingt nach viel, ist auch viel, muss aber nicht der ausschlaggebende Grund der Langsamkeit sein.

Anbei: (gehört nicht zum Thema)
Der DialogDesign0r von Hex0r ist cool, noch cooler wäre es wenn man das Teil auch unter Mac Os zum laufen brächte. (Ich habs mal versucht, es war mir dann aber zu nervig/stressig/unübersichtlich/was auch immer, und ich hab es sein gelassen.

Wie groß ist dein Bildschirm? Kann man die 1000 ernst nehmen, oder wird hier um einen Faktor > 10 übertrieben?

Es kommt auf den Inhalt an.
Verwendest du Gadgets zum scrollen?

Ich habe mal einen kleinen Button-Minesweeper-Test gemacht, der verursacht z.B. keine Probleme.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 21:18
von MenschMarkus
ccode_new hat geschrieben:was sind das alles für Gadgets ?
Die 1000 klingt nach viel, ist auch viel, muss aber nicht der ausschlaggebende Grund der Langsamkeit sein.
Alles Standard Gadgets, ContainerGadgets, ListIconGadgets, TextGadgets, StringGagets, ButtonGadgets, PanelGadgets, EditorGadgets, ComboBoxGadgets.
1 Imagegadget, ist aber ohne Inhalt.

Vielleicht noch zum Verständnis, die Gadgets verteilen sich auf 10 Container von denen immer nur 1 eingeblendet ist. Es bleiben also rund 100 pro dargestelltem Container übrig. Die verteilen sich wiederum auf verschiedene Panels. Das FrontEnd bleibt also übersichtlich. Dennoch, das Fenster enthält ca 1000 Gadgets, auch wenn nur ca 10% sichtbar sind.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 21:26
von ccode_new
Ich vermute dein Problem hat irgendwas mit der Eventabarbeitung zu tun. (Event-Loop-Abbfragen, etc.)
Es kann aber auch etwas ganz anderes sein.
Sind bei dir andere Fenster auch so träge?
Ist dein Grafikkartentreiber aktuell?
(Hast du einen aktiven Grafikkartentreiber?)
Software-Rendering?
????

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 21:33
von MenschMarkus
ccode_new hat geschrieben:Ich vermute dein Problem hat irgendwas mit der Eventabarbeitung zu tun. (Event-Loop-Abbfragen, etc.)
Die Veränderung der Fenstergröße wird mit BindEvent() abgearbeitet, das hat aber nichts mit dem reinen Verschieben des Fensters zu tun, glaube ich. Ansonsten arbeitet kein Event im Hintergrund, da nur das FrontEnd arbeitet, sonst keine weitere Funktion.
ccode_new hat geschrieben:Sind bei dir andere Fenster auch so träge?
Nein

und die Treiber sind alle aktuell.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 21:48
von ccode_new
Kannst du deinen Code nur auf die Darstellung der GUI reduzieren (ohne Abhängigkeiten) und hier posten?

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 21:57
von MenschMarkus
>2000 Zeilen Code?

Hier mal ein Ausschnitt

Code: Alles auswählen

Procedure OpenWindow_ERP();(x = 10, y = 10, width = 1440, height = 900)
  Protected cwidth.i, cheight.i, kshift.i = 25
  With gadgetsize
  OpenWindow(#Window_BiFi_ERP, \wxpos, \wypos, \wwidth, \wheight, "ERP (Version 0." + #PB_Editor_BuildCount + "." + #PB_Editor_CompileCount + ")", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  SetWindowColor(#Window_BiFi_ERP, RGB(200,200,200))
  CreateStatusBar(0, WindowID(#Window_BiFi_ERP))
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarText(0, 0, "Datum", #PB_StatusBar_Raised)
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarText(0, 1, "Benutzer", #PB_StatusBar_Raised)
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarText(0, 2, "Datenbank")
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarProgress(0, 3, 0)
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarText(0, 4, "Kommentar")
  AddStatusBarField(\wwidth / 20 * 3)
  StatusBarText(0, 5, "Timeout", #PB_StatusBar_Right)

  ContainerGadget(#Container_Toolbar,           10, 10              , \wwidth - 20, \wheight/20)    ;{ Container Toolbar @
  cwidth = GadgetWidth(#Container_Toolbar)
  cheight = GadgetHeight(#Container_Toolbar)  
  ButtonGadget(#Button_Toolbar_Partner, 10, cheight/6 , cwidth/25 * 2,  cheight * 0.7, "&Partner", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Produkt, cwidth/25 * 2 + 10, cheight/6, cwidth/25 * 2, cheight * 0.7, "P&rodukte", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Vorgang, cwidth/25 * 4 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "&Vorgänge", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Aufgaben, cwidth/25 * 8 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "&Aufgaben", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Kalender, cwidth/25 * 10 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "&Kalender", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_OP, cwidth/25 * 15 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "&Offene Posten", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Lot, cwidth/25 * 17 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "&LOT Verw.", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Lager, cwidth/25 * 19 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "La&gerhaltung", #PB_Button_Toggle)
  ButtonGadget(#Button_Toolbar_Admin, cwidth/25 * 21 + 10, cheight/6, cwidth/25 * 2,  cheight * 0.7, "A&dministration")
  ButtonGadget(#Button_Toolbar_logout, cwidth/25 * 24, cheight/6, cwidth/25,  cheight * 0.7, "Logout")
  CloseGadgetList()   ;} Container Toolbar

  ContainerGadget(#Container_Aufgaben,          10, \wheight/20 + 20, \wwidth - 20, \wheight - 100) ;{ Container Aufgaben @
  HideGadget(#Container_Aufgaben,1)
    cwidth = GadgetWidth(#Container_Aufgaben)
    cheight = GadgetHeight(#Container_Aufgaben) 
    HideGadget(#Container_Aufgaben, 1)
    ListIconGadget(#ListIcon_aufgaben_liste, cwidth/20 *0.2, cheight/20, cwidth/20 * 20 - (cwidth/20 * 0.2) * 2, cheight/20 * 19 - 4, "ID", 50, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 1, "Angelegt", 150)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 2, "Thema", 650)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 3, "Zeit", 75)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 4, "Status", 75)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 5, "Fälligkeit", 150)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 6, "von", 100)
    AddGadgetColumn(#ListIcon_aufgaben_liste, 7, "an", 100)
  CloseGadgetList() ;} Container Aufgaben


...  to be continued
Code ist nicht ausführbar !

vielleicht hilft Dir dieser Ausschnitt

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:06
von ccode_new
MenschMarkus hat geschrieben:>2000 Zeilen Code?
Nur der GUI Teil?

Hast du die GUI mit Hilfe eines "Formdesigners" erstellt?

Bitte keine "Set/Get"-Befehle und auch keine eingebundenen Ressourcen, sowie einen leeren Event-Loop.

Ist die GUI auf mehrere Include-Dateien verteilt ?

Ansonsten gibt es auch Upload-Möglichkeiten des Codes.

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:09
von MenschMarkus
Code Ausschnitt siehe oben...
ccode_new hat geschrieben:Hast du die GUI mit Hilfe eines "Formdesigners" erstellt?
Nein, die gute alte Handmethode

Re: Fragen zu Fenster und HexORs DialogDesignor

Verfasst: 14.12.2020 22:26
von ccode_new
Du hast am Anfang das hier geschrieben:
MenschMarkus hat geschrieben: Wird das Fenster jetzt einfach nur über den Bildschirm verschoben (keine Größenänderung)
Was passiert bei Größenänderung?