Autor Beitrag
Hoda
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 08.10.02 11:10 
Hallo.
Da ich meine grenzen austesten will, versuche ich die ganze Zeit mich verrückt zu machen.

An folgendem Sachverhalt bin ich am Schrauben: Ich erzeuge unter "Button1" 5 Labels.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
... Tform1.Button1Click...
var i : integer;
begin 
for i := 1 to 5 do begin
  MyLabel := TLabel.Creat(self);
  MYlabel.Parent := self;
  Mylabel.Name := 'MYLabel' + intToStr(i);
  Mylabel.Caption := 'Meine Label';
end;
end;
soweit so gut. Es funktioniert :P

Hautproblem oder was ich machen möchte ist, die Labels die ich erstellt habe, anzusprechen. So dass ich den 3.Label oder 2.Label verändern kann. Beispiel den Caption. Nur ich bekommes nicht hin. Es wird immer der zur letzt angelegte Label verändert.

Meine Frage an euch ist: "WIE ode WAS muss ich machen, damit ich die Labels ansprechen kann ?!":? :roll:

Gruß + Danke
Hoda

(08.10.02 13:14 Tino) Titel geändert & Code-Tags hinzugefügt.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 08.10.02 11:42 
Hi
Wenn du tatsächlich exakt diesen Code verwendest, hast du zuerst mal das Problem, dass die 5 Labels exakt übereinander liegen. Damit siehst du praktisch immer nur den obersten.
Um ein einzelnes Label anzusprechen könntest du die Methode FindComponent verwenden:
ausblenden Quelltext
1:
2:
  with FindComponent('MYLabel1') as TLabel do
     Caption := 'test';

Übrigens: An der Aussagekraft deiner Titel musst du noch stark arbeiten :shock:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Rooof
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 24

Win 2000, WinXP, Win 98
D7 Prof
BeitragVerfasst: Mi 09.10.02 07:07 
Hi

Du könntest dieses Problem allenfalls auch mit einer Liste lösen.

Dieses würde dann ungefähr so aussehen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
... Tform1.Button1Click... 
var i : integer;
    PObjectList: TObjectList; 
begin 
PObjectList := TObjectList.create;
for i := 1 to 5 do begin 
  MyLabel := TLabel.Creat(self); 
  MYlabel.Parent := self; 
  Mylabel.Name := 'MYLabel' + intToStr(i); 
  Mylabel.Caption := 'Meine Label';
  PObjectList.add(Mylabel);
end; 
end;


Um dann wieder auf das Label zugreiffen zu können, kannst du direkt mit TLabel(PObjectList.Items[index des labels]).Caption := 'Das hier ist neuer Text'; darauf zugreiffen.

Das TLabel vorweg dient zum Casten des Labels, da die Liste nicht weiss, welcher ObjectTyp sich an der Adresse befindet, wo der Pointer drauf zeigt. Einfach so nachbasteln und es sollte funktionieren. Ansonsten Online-Hilfe zur Hand nehmen

Mfg
Rooof

_________________
Jedes Problem ist lösbar, wenn du dich nicht von deinem eigenen Denken und von deinem eigenen Verstand leiten lässt...
Hoda Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 09.10.02 07:35 
Danke Rooof.
Diese Variante werde ich auch testen.

Wie du natürlich weiß, je mehr man über unterschiedlicher Formen des Programmierens kennt, desto mehr ist man kreativ oder? :lol:

Ich bin jetzt dabei die Dynamischen Labels per Drag&Drop zu bewegen.
Mal sehen wie weit ich vorankomme. :roll:

Gruß
Hoda