Folgender Code hängt in keiner Weise mit irgendeinem bisher in diesem Thread geposteten Code zusammen sondern wurde gerade von mir erstellt (ich hab mich ein bisschen am "original" TLabeledEdit orientiert):
Delphi-Quellcode:
unit LabeledDBEdit;
interface
uses
DBCtrls, StdCtrls, Classes, Controls;
type
TLabeledDBEdit =
class(TDBEdit)
private
FLabel: TLabel;
protected
procedure SetParent(Value: TWinControl);
override;
public
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
override;
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Test', [TLabeledDBEdit]);
end;
constructor TLabeledDBEdit.Create(AOwner: TComponent);
begin
inherited;
FLabel := TLabel.Create(Self);
FLabel.Caption := '
LabelCaption';
end;
destructor TLabeledDBEdit.Destroy;
begin
FLabel.Free;
FLabel :=
nil;
inherited;
end;
procedure TLabeledDBEdit.SetParent(Value: TWinControl);
begin
inherited;
if Assigned(FLabel)
then
begin
FLabel.Parent := Value;
FLabel.Top := Top - FLabel.Height - 1;
FLabel.Left := Left;
FLabel.Visible := True;
end;
end;
procedure TLabeledDBEdit.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
inherited;
if Assigned(FLabel)
then
begin
FLabel.Top := Top - FLabel.Height - 1;
FLabel.Left := Left;
end;
end;
end.
Ich hab die Kompo nicht ausführlich getestet, aber es funktioniert soweit alles. Das Label wird sowohl zur
Design-Time als auch RunTime richtig angezeigt.
Es sollte also kein Problem sein das TRealEdit so zu erweitern..