Hallo,
ich habe ein Problem in einer Komponenten bei vorbelegtem String (published), den ich im Objektinspektor leeren möchte.
Ein kleines Beispiel:
Ich erzeuge eine neue Komponente (TestKompo1) vom Typ TWinControl.
Auf diese Komponente setze ich ein Label.
Dieses Label wird mit 'Hallo Welt' vorbelegt.
Ich setze diese Komponente (TestKompo1) auf eine Form.
Die Komponente zeigt, wie zu erwarten war, 'Hallo Welt' an.
Beim Starten der Form wird ebenfalls 'Hallo Welt' angezeigt.
Wenn ich im Objektinspektor die Caption des Labels in 'Hurra' verändere,
dann wird auch während der Entwicklung die Caption von 'Hallo Welt' in 'Hurra' verändert.
Nach dem Starten der Form steht jetzt 'Hurra'.
Wenn ich im Objektinspektor die Caption des Labels in '' verändere,
dann wird auch während der Entwicklung die Caption von (jetzt) 'Hurra' in '' verändert.
Nach dem Starten der Form wird aber 'Hallo Welt' angezeigt.
Wenn ich also im Objektinspektor eines vorbelegten Strings in '' verändere,
so wird dies ignoriert und die Vorbelegung übernommen.
Frage:
Wie bekomme ich es hin, dass '' übernommen wird?
Als Beispiel möchte ich noch meinen Quellcode zeigen:
Delphi-Quellcode:
unit TestKompo1;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
TTestKompo1 =
class(TWinControl)
private
FLabel: TLabel;
FLabelCaption: TCaption;
procedure SetLabelCaption(
const Value: TCaption);
protected
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
published
property LabelCaption: TCaption
read FLabelCaption
write SetLabelCaption;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Test', [TTestKompo1]);
end;
{ TTestKompo1 }
constructor TTestKompo1.Create(AOwner: TComponent);
begin
inherited;
FLabel := TLabel.Create(Self);
FLabel.Parent := Self;
FLabel.Top := 0;
FLabel.Left := 0;
FLabelCaption := '
Hallo Welt';
FLabel.Caption := FLabelCaption;
end;
destructor TTestKompo1.Destroy;
begin
FreeAndNil(FLabel);
inherited;
end;
procedure TTestKompo1.SetLabelCaption(
const Value: TCaption);
begin
FLabelCaption := Value;
FLabel.Caption := Value;
end;