Benutzung von TFrame

Für Fragen rund um die Ide und zum Debugger
Antworten
RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Benutzung von TFrame

Beitrag von RSE »

Hallo!

Ich bin dabei mich mit TFrame auseinanderzusetzen. Durch diese Seite habe ich einen ersten Einstieg gefunden:
http://wiki.lazarus.freepascal.org/Frames
Mein erster Test sieht so aus: Ich habe einen neuen Frame erstellt (File -> New -> Frame), einen Button eingefügt und ihn dann wie in der Anleitung in meine MainForm eingefügt. Nun hatte ich gehofft, dass der Frame in der Mainform als eine einzige Komponente auftritt, stattdessen kann ich den Button aber bewegen und verändern wie ich will. Kann man das abstellen? Die nächste Frage, die daraufhin aufgetreten ist, ist, wie ich Änderungen an meinem Frame auf dem Mainform sichtbar mache / übernehme...

Zu guter Letzt will ich den Frame missbrauchen, um ein eigenes Listenfeld zu programmieren, welches die Datenhaltung nicht selbst implementiert, sondern auf eine Schnittstelle zurückgreift und ich will es auch selbst zeichnen. Die dazu benötigten Quelltext will ich in einer eigenen Unit unterbringen. Dieses Listenfeld möchte ich im FormDesigner platzieren und in meine Form integrieren können. Ich möchte aber keine ganze Komponente im Vorfeld entwickeln, die ich dann irgendwie registrieren muss, um sie verwenden zu können (hab ich auch noch nie gemacht) und dann nicht mehr ändern kann. Von daher dachte ich, dass der Frame eine gute Lösung sei.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Benutzung von TFrame

Beitrag von Socke »

RSE hat geschrieben:Hallo!

Ich bin dabei mich mit TFrame auseinanderzusetzen. Durch diese Seite habe ich einen ersten Einstieg gefunden:
http://wiki.lazarus.freepascal.org/Frames
Mein erster Test sieht so aus: Ich habe einen neuen Frame erstellt (File -> New -> Frame), einen Button eingefügt und ihn dann wie in der Anleitung in meine MainForm eingefügt. Nun hatte ich gehofft, dass der Frame in der Mainform als eine einzige Komponente auftritt, stattdessen kann ich den Button aber bewegen und verändern wie ich will. Kann man das abstellen? Die nächste Frage, die daraufhin aufgetreten ist, ist, wie ich Änderungen an meinem Frame auf dem Mainform sichtbar mache / übernehme...

Zu guter Letzt will ich den Frame missbrauchen, um ein eigenes Listenfeld zu programmieren, welches die Datenhaltung nicht selbst implementiert, sondern auf eine Schnittstelle zurückgreift und ich will es auch selbst zeichnen. Die dazu benötigten Quelltext will ich in einer eigenen Unit unterbringen. Dieses Listenfeld möchte ich im FormDesigner platzieren und in meine Form integrieren können. Ich möchte aber keine ganze Komponente im Vorfeld entwickeln, die ich dann irgendwie registrieren muss, um sie verwenden zu können (hab ich auch noch nie gemacht) und dann nicht mehr ändern kann. Von daher dachte ich, dass der Frame eine gute Lösung sei.
Ich möchte nicht sagen, dass ist vollkommen falsch, was du machst, aber so kann man das auch machen. Spätestens wenn die Komponente produktiv eingesetzt werden soll, solltest du darüber nachdenken, das ganze auf TCustomControl umzustellen.
Zum nicht Auswählen empfehle ich TControl.ControlStyle += [csOwnedChildsSelectable] im Constructor zu setzten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Benutzung von TFrame

Beitrag von RSE »

Ich habe inzwischen etwas zur Komponentenentwicklung unter Lazarus gegoogelt. In Delphi gibt es da wohl einen Menüeintrag Komponente -> neue Komponente. Alles, was ich zu Lazarus gefunden habe, ist, dass man Lazarus neu compilieren muss, um neue Komponenten in der Komponentenpalette verfügbar zu machen... wie man überhaupt anfängt habe ich nicht gefunden. Welche Form muss eine entsprechende Unit haben, welche Sorte von Projekt benutzt man usw. Vielleicht kann mir da jemand eine Einstiegsseite nennen, auf der diese Infos zu finden sind.

Als ich den Hinweis von Socke ausprobieren wollte, ist mir aufgefallen, dass die Klasse TButton bei der Ausführung (Run) nicht gefunden wird und das Programm abgebrochen werden muss. Dabei sind alle Units, die in der Unit, in der der Frame implementiert ist, unter uses aufgeführt sind, auch in der Unit, die den Frame verwendet, im uses-Abschnitt aufgeführt. Da ist wohl noch was buggy. Außerdem würde ich csOwnedChildsSelectable so interpretieren, dass man damit den Button auch im verwendeten Frame anklicken kann. Ich wollte aber das Gegenteil: Dass man den Frame bei Verwendung nur als Ganzes anklicken kann und nicht jede einzelne Komponente, die darauf Verwendung findet. csOwnedChildsSelectable ist auch nicht standardmäßig gesetzt.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 10925
Registriert: Mo 11. Sep 2006, 19:01

Re: Benutzung von TFrame

Beitrag von theo »

RSE hat geschrieben:Ich habe inzwischen etwas zur Komponentenentwicklung unter Lazarus gegoogelt. In Delphi gibt es da wohl einen Menüeintrag Komponente -> neue Komponente. Alles, was ich zu Lazarus gefunden habe, ist, dass man Lazarus neu compilieren muss, um neue Komponenten in der Komponentenpalette verfügbar zu machen... wie man überhaupt anfängt habe ich nicht gefunden.
http://wiki.lazarus.freepascal.org/How_ ... _Component" onclick="window.open(this.href);return false;

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Benutzung von TFrame

Beitrag von RSE »

Ahh, danke! Mit write hätte ich also suchen müssen... Ich werds mir mal zu Gemüte führen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Benutzung von TFrame

Beitrag von monta »

RSE hat geschrieben:In Delphi gibt es da wohl einen Menüeintrag Komponente -> neue Komponente.
Den Dialog gibt es in Lazarus auch. Allerdings nicht direkt im Menü sondern im Package-Dialog. Dort auf Hinzufügen > Neue Komponente und dann kann man auch Basisklasse und Name usw. eingeben, ähnlich wie in Delphi.
Johannes

Antworten