Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Label zur Laufzeit erstellen


[TP]Hawk274 - So 08.12.02 02:24
Titel: Label zur Laufzeit erstellen
Ich wollte zur Laufzeit ein Label erstellen nachdem ich auf button geklickt habe und das mache ich folgendermaßen:

Quelltext
1:
lSaveError := TLabel.Create(self);                    

lSaveError, vom Typ TLabel, wird in der Variablendeklaration vom Form deklariert.
Danach mache ich folgendes:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  lSaveError.Name := 'lSaveError';
  with lSaveError do
  begin
    Font.Name := 'Tahoma';
    Font.Color := clRed;
    Font.Style := [fsBold];
    Height := 13;
    Top := 250;
    Left := 16;
    Width := 100;
    Visible := TRUE;
    Enabled := TRUE;
    Caption := 'LALALA';
  end;


Aber es funktioniert nicht. Ich sehe es nicht!? Kann mir mal jemand erklären was ich falsche mache?


Wolff68 - So 08.12.02 02:46

Nun, Du solltest dem Label auch noch ein Parent geben, damit es weis wo es erscheinen soll. (Form, Panel, ....)
Willst Du es direkt auf der Form genügt ein Parent := Self; (wobei Self die Form ist, nicht das Label)


[TP]Hawk274 - So 08.12.02 02:53

Da war er mein AHA Effekt. thx

Wie kann ich eigentlich heraus finden ob dieses Objekt bereits existiert?


Wolff68 - So 08.12.02 20:23
Titel: Prüfen, ob Komponente existiert
Es gibt dafür 2 Wege:

1. Assigned(TComponent)

Quelltext
1:
2:
3:
4:
  IF Assigned(lSaveError) then
    ShowMessage('Label existiert.')
  else
    ShowMessage('Label existiert nicht.');


2. FindComponent(TComponent.Name)

Quelltext
1:
2:
3:
4:
  IF FindComponent('lSaveError') <> nil then
    ShowMessage('Label existiert.')
  else
    ShowMessage('Label existiert nicht.');


Wobei ich oben gesehen hab, daß Du der Komponente keinen Namen zugewiesen hast. Mach am besten noch ein lSaveError.Name := 'lSaveError';
Klar greifst Du über die Objektvariable lSaveError auf das Label zu, aber die Eigenschaft Name des Objekts solltest Du auch noch setzen, da gerade FindComponent den Inhalt der Name-Eigenschaft auswertet und .Name auch sonst eine gewisse Referenz darstellt.