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