Eigene Komponente und Eigenschaften von Design auf Laufzeit

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Eigene Komponente und Eigenschaften von Design auf Laufzeit

Beitrag von alexander »

Hi,

also ich bin so gut wie fertig eine eigene Komponente zu schreiben.
Sie baut auf eine TPanel auf und darauf plaziere ich einen Button.
Ich habe den Button ganz normal als Property in meiner Komponente und creiere und lösche sie dort auch.

Code: Alles auswählen

FButton:=TButton.Create(self);
  with FButton do
    Parent:=self;
Ich kann schön vom Objektinspektor die eigenschaften des Buttons verändern. Doch diese werden nicht in die Laufzeit übernommen und auch beim Neustart von Lazarus sind sie weg.

Was muss ich machen damit es auch gespeichert und übernommen wird?

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Die Eigenschaften auch zur laufzeit setzen, wenn du den Button zur laufzeit erstellst kannst du ihn natürlich nicht zur designzeit bearbeiten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

verstehe ich ehrlich gesagt nicht....

ich erstelle den Button natürlich nicht zur Laufzeit! Ich habe ihn in Lazarus eingebunden und bearbeite die Komponente zur Designzeit.
Doch wenn ich das Projekt dann kompiliere, übernimmt er die einstellungen des Buttons (der sich innherhalb der Kompo befindet) nicht; die einstellungen meiner Kompo übernimmt er.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du schreibst doch oben das der Button zu deiner Komponente gehört und bringst sogar das beispiel wie er erstellt wird ... was denn nun ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

Kannst du vielleicht einfach mal das:
Die Eigenschaften auch zur laufzeit setzen, wenn du den Button zur laufzeit erstellst kannst du ihn natürlich nicht zur designzeit bearbeiten.
mal ausführlicher sagen.
Das versteht nämlich kein Mensch.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

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:

Beitrag von monta »

naja, ist aber verständlich ;)

Du schreibst oben:

TButton.Create,
also erstellst du ihn ja erst, wenn dein Programm auch gestartet wird. Folglich kannst du zur Entwicklungszeit in der IDE keinerlei Eigenschaften für diesen Button setzen, da er ja noch nicht existiert.

Du kannst also entweder den Button in der IDE auf dein Formular packen und dann die Eigenschaften im OI setzen.
Oder du musst auch alle Eigenschaften zur Laufzeit setzen, wie du es oben schon mit Parent gemacht hast.


Aber das Problem ist wohl anders, du kannst den Button innerhalb deiner Komponente zur Designtime bearbeiten aber wenn du sie einsetzt wedren die gemachten Einstellungen nicht in die Laufzeit übernohmen, war das die Aussage?
Johannes

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ja.
Jetzt ist es klar.

Doch ehrlich gesagt ist das Problem noch immer da und ich weiß nicht wie ich innerhalb meiner Komponente einen Button haben kann und trotzdem die Einstellungen im OI setzten kann, die dann auch übernommen werden.

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Bastel dir (zur Entwicklungszeit) doch erst mal einen Button, so wie du ihn haben willst. Dann notierst du dir die Einstellungen im OI und weist die Zahlen und Werte zur Laufzeit zu. Dann sieht dein Button auch so aus wie gewünscht.

knight

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ganz einfach es ist aus der Sicht des Designers immernoch eine Standart Lazarus Komponente und damit bearbeitbar. Die Eigenschaften dafür werden aber nirgends gespeichert. Lazarus muss das irgendwann mal abfangen, aber ich find es eh ne unart innerhalb von Komponenten mit anderen Komponenten herumzufuchteln von daher störts mich am wenigsten ;).
Ralli oder Schnullerbacke weiß nicht mehr ganz genau wollten vor Urzeiten mal einen visuellen Designer für Komponenten baun ist dann wohl aber auch im sande verlaufen jedenfalls hab ich nie etwas veröffentlichtes gesehen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6857
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:

Beitrag von af0815 »

Christian hat geschrieben: Ralli oder Schnullerbacke weiß nicht mehr ganz genau wollten vor Urzeiten mal einen visuellen Designer für Komponenten baun ist dann wohl aber auch im sande verlaufen jedenfalls hab ich nie etwas veröffentlichtes gesehen.
Es ging in die Richtung von Vorlagen für Projekte und Formulare. Dabei bin ich aber auf die möglichkeiten von Templates gestossen, die eigenlich fast das gleiche machen, was wir machen wollten. Warum also was neues erfinden, wenn das schon in Lazarus gibt :-)
Somit ist das ganze ein wenig dokumentiert worden in Lazinfos und nachdem es keine Rückmeldungen davon gegeben hat, in der Priorität nach hinten gereiht worden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

knight hat geschrieben:Bastel dir (zur Entwicklungszeit) doch erst mal einen Button, so wie du ihn haben willst. Dann notierst du dir die Einstellungen im OI und weist die Zahlen und Werte zur Laufzeit zu. Dann sieht dein Button auch so aus wie gewünscht.

knight
Jaa klar. Aber das Problem ist, dass ich dem Endnutzer die möglichkeit geben will den Button innerhalb meiner Komponente zur Designzeit seinen Wünschen anzupassen; ohne dass er dies Zur Laufzeit machen muss.

Das muss doch irgendwie möglich sein....
Jaa da fällt mir ein nicht eleganter weg ein. Ich "verstecke" den Button vor dem OI und mache in meine Komponente die wichtigsten Propertys des Button rein die ich an den Button dann weiterleite....
Na ja unelegant..
Aber wenn ihr auch keine Lösung wisst....

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

alexander hat geschrieben:das Problem ist, dass ich dem Endnutzer die möglichkeit geben will den Button innerhalb meiner Komponente zur Designzeit seinen Wünschen anzupassen; ohne dass er dies Zur Laufzeit machen muss.
Wenn der Button erst zur Laufzeit erstellt wird, existiert er zur Designzeit (noch) nicht und kann daher nicht über den OI angepasst werden.

Was spricht dagegen, dass der Endnutzer deiner Komponente die Button-Eigenschaften im Quelltext übergibt? z.B.

EigenerButton.Top:=bla_bla;
EignerButton.Left:=blubb_blubb;

mit
bla_bla, blubb_blubb:integer;

(wenn ich deinen Text richtig interpretiere, entspricht dieser Weg in etwa auch deinem uneleganten Weg)

Gruß, Euklid

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Der Endbenutzer hat den Quelltext sicher nicht, einen Formdesigner zu implementieren ist aber nicht sonderlich rudimentär ich würde davon absehen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Christian hat geschrieben:Der Endbenutzer hat den Quelltext sicher nicht
Ich hatte den Alexander so verstanden, dass er mit Endbenutzer denjenigen meint, der seine Komponente in einem Projekt einsetzt. Ansonsten würde er ja nicht über die Möglichkeit sprechen, dass der Endnutzer den Button "zur Designzeit" anpasst.

Für diesen Fall gilt meine obige Aussage: Denn so würe es reichen, wenn der Alexander eine Schnittstelle in seiner Komponente schaffen würde, über welche der Endnutzer die zum Anpassen des Buttons benötigten Parameter übergeben kann.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

A so, dann kann man den Button ja als property übergeben damit kann man dann schlagartig alle Eigenschaften des Buttons ändern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten