mseIDE Fensterproblem

Forum für alles rund um die MSEide und MSEgui

mseIDE Fensterproblem

Beitragvon fliegermichl » 22. Jun 2017, 13:12 mseIDE Fensterproblem

Hallo,

ich versuche mich gerade ein wenig in der mseIDE zurecht zu finden. Ich habe das Projekt msekicadbom geöffnet und versuche herauszufinden, wie die Menüverbindung von "global settings" funktioniert.
Als "action" ist mainmo.globalsettingsact und bei dem unter "ifilink" steht editglobalsettings. Da ist aber nirgends ein Verweis auf das Formular zu finden, welches sich darauf öffnet.

Um hinter die Funktionalität zu kommen, habe ich mainmodule.pas in Zeile 1083 einen Breakpoint gesetzt und das Programm hält da auch an. Jetzt will ich mir den Stack anschauen und klicke auf View | Stack aber da wird kein Fenster angezeigt.

Ein ähnliches Problem hatte ich schonmal. Da war im "Source|message" Fenster plötzlich nur noch messages zu sehen und ich bekam den Source nicht mehr zu Gesicht.

Gibt es irgendeine Möglichkeit, das ganze Layout zu resetten?

Viele Grüße
Michael
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 22. Jun 2017, 13:50 Re: mseIDE Fensterproblem

Um hinter die Funktionalität zu kommen, habe ich mainmodule.pas in Zeile 1083 einen Breakpoint gesetzt und das Programm hält da auch an. Jetzt will ich mir den Stack anschauen und klicke auf View | Stack aber da wird kein Fenster angezeigt.

Schau mal oben links im Bildschirm, wahrscheinlich hat das Stack Fenster eine gespeicherte Grösse von 0. Ich habe irgendwo eine fehlerhafte default Datei die ich versehentlich als Projektdatei für MSEkicadBOM verwendet habe.
MSEkicadBOM habe ich dazu benutzt, um die strikte Trennung von Code und GUI zu demonstrieren, es ginge also auch einfacher. ;-)
"editglobalsettings" ist ein "tifiactionendpoint" im Hauptformular. Wenn das Ereignis getriggert wird, wird "onexecute" aufgerufen. Doppelklick auf "editglobalsettingsev" im Objektinspektor zeigt den entsprechenden Handlercode. Es wird ein "tglobalsettingsfo" Formular erstellt.
handler.png

Ein ähnliches Problem hatte ich schonmal. Da war im "Source|message" Fenster plötzlich nur noch messages zu sehen und ich bekam den Source nicht mehr zu Gesicht.

Bitte berichte, falls du das Problem reproduzieren kannst.
Gibt es irgendeine Möglichkeit, das ganze Layout zu resetten?

Ein Windowlayout kannst du aus einer beliebigen "*.prj" MSEide Projektdatei mit 'View'-'Load Window Layout' Laden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 23. Jun 2017, 08:59 Re: mseIDE Fensterproblem

Ah jetzt ja! :-)

Also kann man von der Menüseite her gar nicht herausfinden, wer alles mit dem tifiactionlinkcomp Objekt verknüpft ist.
Zum testen habe ich im mainfo nochmal eine zusätzliche tifiactionendpoint Komponente platziert und in dem onexecute event "showmessage('test 123');" untergebracht.
Dann erscheint zuerst das Formular "global settings" und danach dann "test 123".

Strikte Trennung von GUI und bussines finde ich gut. Es macht die Sache aber sehr schwer nachvollziehbar.

Das wirkt so ein bißchen wie globale Variablen auf mich. Man dreht hier ein klein wenig an einer Schraube und auf der anderen Seite fällt alles auseinander.

Für was steht eigentlich "ifi" ?

Das Problem mit dem verschwundenen Source Teil in dem Source|Messages Panel kann ich auch nicht mehr nachvollziehen. Das trat nur einmal auf. Mit View | Load Window Layout kam dann auch das Stackfenster wieder zum Vorschein.

Viele Grüße
Michael
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 23. Jun 2017, 12:36 Re: mseIDE Fensterproblem

fliegermichl hat geschrieben:Also kann man von der Menüseite her gar nicht herausfinden, wer alles mit dem tifiactionlinkcomp Objekt verknüpft ist.
Zum testen habe ich im mainfo nochmal eine zusätzliche tifiactionendpoint Komponente platziert und in dem onexecute event "showmessage('test 123');" untergebracht.
Dann erscheint zuerst das Formular "global settings" und danach dann "test 123".

Korrekt, tifiactionlinkcomp verteilt die Ereignisse an die angeschlossen tifiactionendpoint.
Strikte Trennung von GUI und bussines finde ich gut. Es macht die Sache aber sehr schwer nachvollziehbar.
Das wirkt so ein bißchen wie globale Variablen auf mich. Man dreht hier ein klein wenig an einer Schraube und auf der anderen Seite fällt alles auseinander.

Ich habe für die ifi-Links und die ifi-Endpoints jeweils die gleichen Komponentennamen verwendet. Eine weitere Möglichkeit ist in den Formulardateien mit der Funktion 'Search-Find in Files' nach dem im Menu eingehängten ifi-Link zu suchen.
search.png

Doppelklick in Zeile 2 zeigt, dass "mainmo.editglobalsettings" im Objekt "editglobalsettings" von mainfo in die Property "ifilink" gewählt ist. RightClick-'Show as Form' im Editor wechselt wieder zur Formularanzeige.
search1.png

Die Idee der strikten Trennung ist, dass die Steuersoftware von der GUI nichts weiss, das hat natürlich Konsequenzen. Meist ist auch eine weniger strikte Trennung vernünftiger. ;-) Beispielsweise könnte mainmo.globalsettingsact.onexecute die Aktion direkt ausführen.
Für was steht eigentlich "ifi" ?

Da hat keine Bedeutung mehr. Denke dir was aus!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 24. Jun 2017, 12:52 Re: mseIDE Fensterproblem

Ich finde das schon gut.

Ich möchte eine Anwendung schreiben, bei der der (geschulte) Anwender oder wer auch immer die Oberfläche selbst gestalten können soll. Da darf der bussines Bereich des Programmes keinerlei Annahmen über die GUI machen.
Mit den ifiactionendpoints hat man den Vorteil, daß ein Ereignis eine ganze Reihe von Reaktionen auslösen kann und das ganze auch recht flexibel.

Man muß es nur halt erstmal verstehen.

Ich werde das msekicadbom Projekt noch etwas weiter untersuchen.
Das ist ein schönes Beispiel für die Verwendung der Datenbankkomponenten und auch der Reportfunktion. (Der konnte ich bislang noch keinerlei Reaktion entlocken :-)

Hat es einen Grund, daß die Daten der Datenbank in dbdata.pas als Konstanten definiert sind?
Ich würde eher eine Liste der Tabellen mit entsprechenden "create table if not exist ..." Konstrukten machen.

Viele Grüße
Michael
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 24. Jun 2017, 13:20 Re: mseIDE Fensterproblem

fliegermichl hat geschrieben:Hat es einen Grund, daß die Daten der Datenbank in dbdata.pas als Konstanten definiert sind?
Ich würde eher eine Liste der Tabellen mit entsprechenden "create table if not exist ..." Konstrukten machen.

Die Daten in dbdata.pas wurden mit "gbak -M" erstellt. Das hat den Vorteil, dass MSEkicadBOM die Datenstruktur nicht genau kennen muss. Zudem ist die Struktur recht kompliziert mit Triggern und vielen Foreignkeys. Es wäre gar nicht so einfach, die DB Schritt für Schritt aufzubauen.
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon mse » 24. Jun 2017, 13:58 Re: mseIDE Fensterproblem

fliegermichl hat geschrieben:Ich werde das msekicadbom Projekt noch etwas weiter untersuchen.
Das ist ein schönes Beispiel für die Verwendung der Datenbankkomponenten und auch der Reportfunktion. (Der konnte ich bislang noch keinerlei Reaktion entlocken :-)

Report Beispiele gibt es hier:
https://gitlab.com/mseide-msegui/mseuni ... als/report
Weitere Beispiele:
https://gitlab.com/mseide-msegui/mseuni ... er/samples
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

• Themenende •

Zurück zu MSEide und MSEgui



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried