Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eine Komponente aus mehreren Einzelteilen zusammensetzen (https://www.delphipraxis.net/67992-eine-komponente-aus-mehreren-einzelteilen-zusammensetzen.html)

lizardking 22. Apr 2006 23:27


Eine Komponente aus mehreren Einzelteilen zusammensetzen
 
Hallo zusammen,

stehe momentan vor einem kleinen Problemchen. Und zwar will ich eine Komponente entwickeln, die wiederum aus mehreren kleinen Komponenten besteht und sich nach aussen hin verhaelt wie die Hauptkomponente. Mann... was ein ein Satz ;-) Ganz konkret, damit man sich vorstellen kann, was ich meine :

Ich moechte eine Art TVirtualSearchStringTree entwickeln. Dieser soll genau wie ein normaler VST angesprochen werden koennen, aber noch eine Zusatzfunktionalitaet bekommen. Es soll ein Panel da sein, darin ein VST mit Align auf alClient und ein weiteres Panel mit Align auf alBottom, dass ein Edit-Feld fuer die Suche hat.

Folgende Loesungsansaetze habe ich :

1. Komponente von TPanel ableiten, die den VST quasi als Property hat. Die Loesung finde ich aber recht unattraktiv, da ich dann in meinem kompletten Projekt die Codezeilen mit den Zugriffen aendern muesste. Ich muesste ja jeden einzelnen Zugriff a la "VST.GetNodeData" umaendern in "MeineCompo.VST.GetNodeData".

2. Komponente von TVirtualStringTree ableiten. Dann muesste ich aber wahrscheinlich komplett alle Paint-Methoden neu implementieren, oder ? Also falls die Suchfunktion aktiv ist, den Stringtree unten 20 Pixel kuerzen und da von Hand das Editfeld zeichnen etc...

3. Komponente von TPanel ableiten und alle Funktionen vom VST quasi durch sowas wie Proxy-Funktionen implementieren. Ungefaehr so :

Delphi-Quellcode:
function TBaseVirtualTree.GetNodeData(Node: PVirtualNode): Pointer;
begin
  result := FVirtualStringTree.GetNodeData(Node: PVIrtualNode);
end;

Gibt es da keine einfachere Loesung ?

Fuer Anregungen und Hilfe bin ich dankbar.

Gruss, Lizzy

sh17 25. Apr 2006 19:34

Re: Eine Komponente aus mehreren Einzelteilen zusammensetzen
 
Ich würde es mit Hilfe eines Frames und der 3. Variante bauen.

lizardking 5. Mai 2006 21:51

Re: Eine Komponente aus mehreren Einzelteilen zusammensetzen
 
Zitat:

Zitat von sh17
Ich würde es mit Hilfe eines Frames und der 3. Variante bauen.

Huch, hatte schon fast nicht mehr dran geglaubt, dass jemand antwortet und deshalb hier lange nicht reingeschaut (*jetzt mal Benachrichtigunsfunktion fuer Antworten eingeschaltet hab* :) )

Frames waren wirklich ein guter Denkanstoss. :) Zwar loese ich die Sache jetzt komplett ohne Frames, aber mir fiel dadurch der richtige Groschen. Mit Frames hab ich das mittlerweile geloest und entwickle es nun als Komponente. Und zwar folgendermassen:

- Es gibt keinen TVirtualSearchStringTree, sondern nur ein TVSTSearchPanel
- Dieses TVSTSearchPanel laesst sich frei und UNABHAENGIG vom VST auf der Form platzieren
- Fuer die Grundfunktionalitaet des SearchPanels braucht man nur den VST und die Suchspalte selektieren, dann laeuft die Sache :)

Ich weiss jetzt definitiv, dass es alles so funktioniert, wie ich mir das vorstelle. Man ersetzt dann halt nicht den in bestehenden Projekten vorhandenen VST, sondern fuegt halt das SearchPanel irgendwo in die Form ein. Wenn ich die Komponente fertig habe, werd' ich sie mal fuer Verbesserungsvorschlaege hier einstellen.

Gruesse,

Lizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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