Einzelnen Beitrag anzeigen

LuckySpacy

Registriert seit: 2. Apr 2003
Ort: Fränkisch-Crumbach
50 Beiträge
 
Delphi 10.4 Sydney
 
#1

Komponente und Strings (Leerzeichen wird nicht erkannt)

  Alt 27. Sep 2004, 11:43
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;
Thomas Bachmann
  Mit Zitat antworten Zitat