Eine Eigene Komponente erstellen ?

Rund um die LCL und andere Komponenten
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Eine Eigene Komponente erstellen ?

Beitrag von pluto »

Hallo,
im Moment versuche ich für Lazarus kleine Komponenten zu erstellen.

Das Klappt auch so weit ganz gut. Allerdings habe ich die Komponenten entweder von der Listbox oder ComboBox abgeleitet. Jetzt wollte ich eine Vollkommen neue Komponente ableiten.
Intern soll sie aus eine ScrollBox, einer Shape, einem Label bestehen.

Das Problem ist jetzt wie mache ich sowas am besten ?
die Probleme fangen schon bei der Positionierung der Internen Komponenten an.
und bei der Größen Änderungen. Gibt es für die Position Änderung ein Ereignis ?
und für das Setzten vom Parent.

Ich wollte diese Komponente nämlich von TCustumControl ableiten.
und die drei Variablen Installisieren.
Ich hoffe ihr habt es soweit verstanden.
MFG
Michael Springwald

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

Beitrag von theo »

Für die Grössenänderung kannst du Resize überschreiben.
Was du mit Parent willst, kapier ich nicht.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Und wie mache ich das mit der Position ? Wenn ich z.b. eine Komponente schreiben möchte die aus drei teilen besteht. Also aus drei Standard Komponenten. Wie schaffe ich dann das sich alle auto. mit bewegen. Dafür brauche ich das Parent...

Denn Alle Komponenten sollen einem Internen Panel angehören.
Problem dabei ist nur, wenn ich die Komponente verschiebe, wie bekomme ich das mit ?

Evlt. kann ich die Komponente auch von TPanel ableiten. Dann währe das ganze einfacher glaube ich.... oder ?
MFG
Michael Springwald

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

Beitrag von theo »

Kapier ich nicht. Nimmst du denn nicht dein TCustomControl als Container (Parent) ?

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 brauchst mindestens n twincontrol als parent und kannst dann wie gewohnt entweder mit align oder über die resize Ereignisse die grösse deiner Komponenten anpassen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Dann ist TPanel oder TCustomPanel schon ganz richtig. Im constructor mußt du allerdings deine Standardkompos von Hand initialisieren. Dann kannst du aber mit Anchors dafür sorgen das sie z.B. entsprechend mit wandern (rechtsbündig) oder stehen bleiben (linksbündig). Wenn Panel der Vater ist darf dann eben auch nur Panel insgesamt verschoben werden, dann bleibt intern alles beim Alten. Beim Resize mußt du allerdings die entsprechende Methode der Komponenten aufrufen und das dort angleichen.

Andere Methode wäre, die einzelnen Komponenten auf jeweils ein eigenes Panel setzen und dort Align entsprechend zu setzen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Danke, für eure Antworten, aber ich habe gestern den wald voller Bäume nicht mehr gesehen..... Ich habe jetzt von Panel abgeleitet, und es geht so wie ich es mir vorgestellt habe...

Dann bleibt nur noch die frage offen wie das mit dem ICON geht, das später in der IDE angezeigt werden kann.....

(Wenn alles Fertig ist kommt es in eine lpk Datei und dann werde ich es auch hochladen, es handelt sich allerdings nur um einfache Komponenten, aber evlt. Praktische )
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Das ICON muß als xpm-file vorliegen. Dann baust du dir das lrs-file mit lazres zusammen.

lazres ../mypackagepath/lazresfile.lrs TMyCompnentName.xpm

achte darauf, das der Name der xpm-Datei gleich dem Typnamen deiner Komponente ist. 24*24 pixel sind ideal.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@pluto

Lade Dir einfach mach mal die ExtFileBrowser-Components unter Links runter. Da kannst Du das nachvollziehen wie man das machen kann.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Antworten