Komponenten die selbst Steuerelemente enthalten

Komponentenentwicklung in BD7:
Ich möchte eine von TPanel geerbte Komponente entwickeln, die selbst TEdits enthält. Ich möchte damit immer wiederkehrende Eingabestrukturen meiner Programme/Formulare strukturell zusammenfassen und vereinfachen.
Also ich brauche ein Steuerelement von Class(TPanel), welches selbst mehrere TEdits und TComboBox enthält, die selbst schun zur Entwicklungszeit (nicht erst zur Laufzeit) auf dem TPanel zu sehen sind.

Vielen Dank für einen Tip

E. B.

Hi Eric,

um schon zur Entwicklungszeit z.B. ein Edit auf dem Panel zu sehen, musst du im Constructor deiner Komponente dieses Edit erzeugen.

constructor TMyComponent.Create(AOwner : TComponent);
begin
 inherited;
 with TEdit.Create(Self) do
 begin
 Parent := Self;
 Left := 10;
 Top := 10;
 end;
end;

Solltest du auf den Inhalt des Edits zugreifen müssen, (was ziemlich sicher ist), erstelle entweder ein entsprechende Variable im public-Teil (MyEdit : TEdit) deiner Komponente oder erzeug eine Property (z.B. EditText) über die du den Inhalt des Edits zur Entwicklungszeit im Objektinspektor ändern kannst.

Mit anderen Worten im published-Teil eine property deklarieren

property EditText : String read GetEditText write SetEditText

Im private-Teil deklarierst du die beiden Methoden und die Variable für das Edit

FMyEdit : TEdit;
function GetEditText : String;
procedure SetEditText(const Value : String);

die Implementation sieht dann so aus

constructor TMyComponent.Create(AOwner : TComponent);
begin
 inherited;
 FMyEdit := TEdit.Create(Self);
 FMyEdit.Parent := Self;
 FMyEdit.Left := 10;
 FMyEdit.Top := 10;
end;





function TMyComponent.GetEditText : String;
begin
 try
 Result := FMyEdit.Text;
 except
 // Hier sollte eine entsprechende Fehlerbehandlung sein.
 end;
end;





function TMyComponent.SetEditText(const Value : String);
begin
 try
 FMyText.Text := Value;
 except
 // Hier sollte eine entsprechende Fehlerbehandlung sein.
 end;
end;

Ich hoffe dass hilft dir weiter

Gruß

Mike

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Ich möchte eine von TPanel geerbte Komponente entwickeln, die
selbst TEdits enthält. Ich möchte damit immer wiederkehrende
Eingabestrukturen meiner Programme/Formulare strukturell
zusammenfassen und vereinfachen.
Also ich brauche ein Steuerelement von Class(TPanel), welches
selbst mehrere TEdits und TComboBox enthält, die selbst schun
zur Entwicklungszeit (nicht erst zur Laufzeit) auf dem TPanel
zu sehen sind.

hast du schon mal überlegt, ob ein TFrame nicht besser wäre? Eigentlich sind die für solche Fälle gemacht worden. Dabei hast du den Vorteil, dass du das von dir bearbeitete Frame sehr schnell in der Komponentenleiste einbinden kanns, die Position der Komponenten auf dem Frame jederzeit verschieben kannst ohne das Frame neu in der Komponentenleiste registrieren zu müssen.

Es handelt sich dabei praktisch um ein Template, welches jederzeit nachbearbeitet werden kann.

Gruss, Niels