Von eigenen TForms und TFrames ableiten

Rund um die LCL und andere Komponenten
wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Von eigenen TForms und TFrames ableiten

Beitrag von wp_xyz »

braunbär hat geschrieben:Das fertige EXE-File, das auf meinem PC gleich beim Starten abstürzt, wenn ich es aus dem Betriebssystem heraus aufrufe, [...]

Deaktiviere als erstes mal dein Antivirus-Programm für einen erneuten test bzw setze dann dein Lazarus- und Projektverzeichnis auf die Ausnahmeliste. Die Dinger werden für Programmentwickler immer schlimmer!

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Von eigenen TForms und TFrames ableiten

Beitrag von braunbär »

Ja, offenbar ist der Antivirus (Eset) schuld. Und zwar unabhängig von abgeleiteten Formularen und sonstigem Zeug.
Manchmal, nicht immer, braucht der AV neuerdings eine ganze Weile, um eine neu kompiliertes EXE-File als unschädlich einzustufen. Und das Schlimme ist, wenn gleich nach dem Kompilieren das EXE gestartet wird, egal ob aus der IDE oder aus dem Betriebsystem heraus, ensteht anscheinend ein Deadlock, und das Programm hängt sich komplett auf. Wartet man nach dem Kompilieren etwas mit dem Programmstart, dann funktioniert es.

Jetzt habe ich doch noch eine Frage zum Ableiten von Forms. Da bin ich nämlich in einem Dilemma, weil ein File ja nicht gleichzeitig in einem Package und in einem Projekt, das das Package verwendet, sein sollte (wenn ich das richtig verstanden habe).
Wenn ich will, dass zur Design-Time die neuen Komponenten meiner Vorlage im OI sichtbar sein sollen, muss ich diese Vorlagenkomponente (Frame oder Formular) als Teil eines Package in die IDE einbinden. Eigentlich wäre das gut so, und diese Vorlagen sollten auch gar nicht Teil des Projekts sein, weil sie ja projektübergreifend zum Einsatz kommen.
Diese Vorlagen werden prinzipiell nicht selbst erzeugt, sondern nur Nachkommen, die von ihnen abgeleitet werden. Aber, um eine Form von einer anderen Form (Vorlage) abzuleiten, muss diese Vorlage anscheinend Teil des Projekts sein, anders kann ich mit "Datei-Neu-AbgeleiteterPunkt-Abgeleitete Projektkomponente" keine entsprechende Unit erstellen, aber es fällt mir auch kein anderer Weg ohne mühsames manuelles Herumfrickeln im Quellcode und im OI bei jedem neuen abzuleitenden Formular ein.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Von eigenen TForms und TFrames ableiten

Beitrag von wp_xyz »

Sowas habe ich noch nicht gemacht, aber ich meine es müsste reichen, das Package (mit den Formular-Vorlagen) als "Anforderung" dem Projekt hinzuzufüben (Projekt-Inspektor > "+ Hinzufügen" > "Neue Anforderung"). Keinen Suchpfad ins Verzeichnis mit dem Package setzen, die IDE findet die Dateien auch so - das ist anders als bei Delphi; der Suchpfad macht nur Probleme!

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Von eigenen TForms und TFrames ableiten

Beitrag von braunbär »

Leider reicht das nicht. Das Package ist beim Projekt als required eingetragen, aber die Formulare werden nicht unter den ableitbaren Formularen aufgelistet.
In die Projektsuchpfade (Projekteinstellungen - Pfade - andere Units) hab ich den Pfad zwar probeweise einmal eingetragen, aber das hat erwartungsgemäß auch nichts geholfen.

Wenn da noch nichts vorgesehen ist, wäre das ein dringender Feature request - Wo deponiert man eigentlich einen solchen? Ich habe kurz in die Lazarus Sourcen geschnuppert, aber es wäre für mich leider zu aufwändig, um mich so weit in den Quellcode einzulesen, dass ich selbst einen Patch programmieren und einreichen könnte. Das Ding ist doch verdammt umfangreich...
Besonders schön wäre es, wenn ergänzend dazu noch ein Mechanismus angeboten würde, mit dem man die Neuerstellung bestimmter Formular- und Frameableitungen direkt in die erste Ebene des Datei-Eintrags setzen könnte - also auf der Ebene von "Neue Unit" und "Neues Formular" z.B. "neues MyForm" - Ich habe in meinen Delphi Projekten fast alle Formulare von eigenen Formularen und fast keine direkt von TForm abgeleitet, und möchte das unter Lazarus beibehalten.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Von eigenen TForms und TFrames ableiten

Beitrag von wp_xyz »

Der Ort, wo du sowas unterbringen kannst, ist der übliche Bug-Tracker, in dem Fehler gemeldet werden (https://lists.lazarus-ide.org/listinfo/lazarus). Wenn du der Summary-Zeile ein "[Feature request]" voranstellst, dann ist klar, dass du keinen Fehler melden möchtest.

Da ich selbst nicht mit Formular-Vorlagen gearbeitet habe, bin ich nicht sicher, ob es so ein Feature vielleicht nicht doch gibt. Daher würde ich vorschlagen, zuerst in der Mailing-Liste anzufragen, denn dort erreichst du die Entwickler am besten. Dazu musst du dich unter https://lists.lazarus-ide.org/listinfo/lazarus anmelden und kannst dann eine E-Mail an angegebene Adresse schicken.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Von eigenen TForms und TFrames ableiten

Beitrag von af0815 »

Vorlagen in Packages gehen nicht. Ist meiner Meinung nach auch sinnvoll, sonst wird der New-Dialog überfrachtet. Woher weis ich was irgendein Fenster ist oder nur ein Template im Package ?

Was hindert dich daran das jetzige System zu verwenden ? Ich verwende Lazarus beruflich und arbeite viel mit Vorlagen, Frames und abgeleite Fenster (für Dialoge speziell) und auch Code Templates in der IDE. Wenn man sich eingearbeitet hat, ist das jetzige System logisch.

Projekttemplates http://wiki.freepascal.org/Project_Templates
Code Templates http://wiki.lazarus.freepascal.org/IDE_ ... _Templates
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Von eigenen TForms und TFrames ableiten

Beitrag von braunbär »

@wpxyz
Ja, das werde ich machen. Habe mich bei der Mailinglist schon registriert.

@af0815
Ich habe mir die Project templates jetzt angeschaut, das ist natürlich ein Workaround, aber doch sehr unbefriedigend, weil nur für neue Projekte nützlich - und auch da nicht als Lösung für mein Problem, weil es generell keine gute Idee ist, in verschiedenen Projekten mit Kopien der Framework-Dateien zu arbeiten. Das driftet irgendwann auseinander und produziert Chaos.
Ich komme von Delphi und möchte einige grössere Projekte auf Lazarus umstellen. Das beinhaltet zweierlei: Umstellung der Projekte selbst, und Umstellung (und in Verbindung damit auch ein gröberes Redesign) des Frameworks, das ich in diesen Projekten unter Delphi verwendet habe. Das bedeutet aber auch eine Menge Entwicklungsarbeit am Framework (eigentlich noch mehr als an den Projekten selbst), und ich möchte nicht gezwungen sein, nach jeder Änderung in den Dateien, die zum projektübergreifenden Famework gehören, diese Dateien erneut in alle anderen Projekte kopieren zu müssen.
Aber vor allem müssen die Vorlagen als Package in Lazarus eingebunden werden, weil sonst die in diesen Klassen neu eingeführten published properties nicht im OI angezeigt werden. Und gleichzeitig Package und Teil eines Projekts geht nicht gut.

af0815 hat geschrieben:Vorlagen in Packages gehen nicht. Ist meiner Meinung nach auch sinnvoll, sonst wird der New-Dialog überfrachtet.

Naja, viel mehr "überfrachten" als sämtliche Formulare und Frames des Projekts in dem Menü anzeigen geht wahrscheinlich schwer ;)

af0815 hat geschrieben:Woher weis ich was irgendein Fenster ist oder nur ein Template im Package ?

Denkbar wäre z.B. etwas, das so, wie "register" Komponenten in der Komponentenpalette registriert, Formularvorlagen ins Datei-neu-Menü (oder sogar in der obersten Stufe ins Datei-Menü) einbindet. Das normale Register für Formulare zu verwenden hat sogar den unerwünschten Nebeneffekt, dass die dann in der Komponentenpalette auftauchen, wo sie eigentlich nichts verloren haben. Diese Formulare und Frames sind ja nur zum Ableiten gedacht und nicht zum Platzieren in anderen Formularen.
Zuletzt geändert von braunbär am Do 20. Sep 2018, 13:20, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Von eigenen TForms und TFrames ableiten

Beitrag von af0815 »

Ich nehme die Templates dier ich benötige in mein Projekt auf. Wenn ich das mache, so sind sie automatisch im Menü unter File->New unter Inherited Items sichtbar. Es kann nur sein, das man das Formular vorher einmal öffnen muss, damit es erkannt wird. Dann leite ich davon ein neues Formular ab. Genau gleich funktioniert es bei mir mit den Frames. Wichtig ist nur, die Vorlage muss gefunden werden. WEnn man will kann man die Vorlagen später aus dem Projekt herausnehmen, man muss es nur im Suchpfad lassen. Die Templates liegen bei mir extra. damit habe ich die an einer Stelle und kann aus den verschiedenen Projekten darauf zugreifen.

Man kann es aber auch anders lösen. Die Templates in einen eigenen Git und diesen als Subeinheit in die verschiedenen Projektegits einbinden. Ist Geschmackssache.

Wieso gibt es Probleme bei dir, wenn du die Vorlage in Projekt aufnehmen musst ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Von eigenen TForms und TFrames ableiten

Beitrag von braunbär »

Es wird generell dringend davor abgeraten, eine Datei gleichzeitig in einem Package und als Teil eines Projekts zu verwenden, und ich habe selbst auch schon die unangenehme Erfahrung gemacht, dass dann immer irgendwelche alte Dateiversionen herumgeistern, mit Fehlern, die ich schon längst ausgebessert habe.
Und wenn die Datei nicht als Package eingebunden wird, dann sind neue published properties nicht im OI sichtbar.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Von eigenen TForms und TFrames ableiten

Beitrag von af0815 »

Ok, jetzt kapier ich was du meinst.

Das mit dem OI ist mir nicht bewusst gewesen :oops: jetzt wo du es schreibst wir mir dein Problem klarer. Vielleicht arbeite ich schon zu lange mit Lazarus :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten