AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigene VCL Komponente aus mehreren bestehenden erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene VCL Komponente aus mehreren bestehenden erstellen

Ein Thema von CodeX · begonnen am 9. Mär 2014 · letzter Beitrag vom 10. Mär 2014
Antwort Antwort
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

Eigene VCL Komponente aus mehreren bestehenden erstellen

  Alt 9. Mär 2014, 14:15
Ich habe schon ein paar eigene Komponenten erstellt, indem ich vorhandene abgeleitet und meinen Wünschen entsprechend angepasst habe. Die Grundvoraussetzungen sind also vorhanden.

Nun würde ich aber gerne eine komplexere Komponente zusammensetzen, die aus einer Checkbox, einem Label und einem Button besteht und deren Hintergrund transparent ist. Da hier mehrere Komponenten zusammengefasst werden, sollte vermutlich nicht von einer dieser drei Komponenten abgeleitet werden, sondern von einer gruppierenden Komponente. Nun habe ich hin und her recherchiert, kann mich aber nicht entscheiden, was die beste Vorgehensweise ist. Ich würde mich freuen, wenn mir da jemand auf die Sprünge helfen könnte:
  1. Von welcher Komponente soll ich das ableiten? Irgendwie kommt von TComponent bis TCustomTransparentControl alles in Frage. Ich weiß nicht genau, nach welchen Kriterien ich hier wählen muss. Order ganz anders?
  2. Wenn ich die drei Komponenten im Constructor der neuen Komponente per T... .Create(Self) erstelle, muss ich diese im Destructor nicht noch gesondert freigeben, oder?
  3. In welcher Methode sollten die Positionen und Größen der drei Komponenten aktualisiert werden? OnPaint? OnResize?
  4. Muss ich irgendwas Bestimmtes beachten, wenn ich innerhalb dieser neuen Komponente zwischen den enthaltenen Komponenten per Tab durchschalten können möchte? Ich möchte beispielsweise, dass sowohl die Checkbox als auch der Button per TabStop angesteuert werden.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Eigene VCL Komponente aus mehreren bestehenden erstellen

  Alt 9. Mär 2014, 14:17
Ich habe es zwar lange nicht mehr angesehen, aber IIRC wird das in diesem Video recht gut erklärt: Composite Controls
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Eigene VCL Komponente aus mehreren bestehenden erstellen

  Alt 9. Mär 2014, 14:29
Du könntest auch von einer der drei Komponenten ableiten, diese quasi als "Mittelpunkt" betrachten und dann die anderen Komponenten als weitere Unter-Objekte Deiner Komponente nutzen.

Schaue vielleicht mal, wie das TLabeledEdit das macht - ist ja letztlich auch nur die Heirat zweier ansonsten eigenständiger Komponenten mit dem Ziel des gemeinsamen Life-Cycles.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eigene VCL Komponente aus mehreren bestehenden erstellen

  Alt 9. Mär 2014, 15:08
Zur Transparenz kann ich nichts sagen.
Ansonsten kannst Du die SubControls im OnCreate Deiner Komponente (z.B. abgeleitet von TPanel o.ä.) erzeugen und wenn Du als Owner Deine Kompo angibst werden sie auch später automatisch frei gegeben.
Du kannst Resize überschreiben und dort Deine SubControls ausrichten.
Zur Laufzeit sollten die SubControls bedienbar und m.E. auch mit Tab umschaltbar sein.
Zur Designtime kommst Du nur an Deine eigene Komponente heran, nicht an die SubControls.

Wenn Du Deine SubControls auch zur Designtime konfigurieren willst, dann könnte SetSubComponent helfen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#5

AW: Eigene VCL Komponente aus mehreren bestehenden erstellen

  Alt 10. Mär 2014, 23:21
Vielen herzlichen Dank! Ihr habt mir alle drei auf drei Arten weitergeholefen.
@DeddyH: Das Video war sehr lehrreich. Die Frame Component Idee am Ende war z.B. gänzlich neu für mich.
@Daniel: Das mit TLabeledEdit war eine sehr gute Anregung. Ich hatte mich gedanklich etwas drauf verharrt, dass alle Komponenten bei der Darstellung innerhalb einer gemeinsamen liegen müssen. Wenn man diese außerhalb anordnen kann, ergeben sich ganz neue Möglichkeiten.
@stahli: Die Erläuterungen helfen auf jeden Fall!

Ich muss jetzt die verschiedenen Varianten alle mal durchprobieren, aber ich denke, dass ich damit jetzt zurechtkomme.
Danke!
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz