Fragen zu Fenster und HexORs DialogDesignor

Für allgemeine Fragen zur Programmierung mit PureBasic.
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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.
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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?
????
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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.
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von ccode_new »

Kannst du deinen Code nur auf die Darstellung der GUI reduzieren (ohne Abhängigkeiten) und hier posten?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag von MenschMarkus »

Code Ausschnitt siehe oben...
ccode_new hat geschrieben:Hast du die GUI mit Hilfe eines "Formdesigners" erstellt?
Nein, die gute alte Handmethode
Wissen schadet nur dem, der es nicht hat !
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fragen zu Fenster und HexORs DialogDesignor

Beitrag 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?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten