Autor Beitrag
DT2158
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: So 03.11.02 11:18 
Auf alte Threads will anscheindend keiner Antworten deswegen mach ich jetzt einen neuen auf!

Rooof schrieb:
Zitat:

Hi

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

Dieses würde dann ungefähr so aussehen:

Code:

... 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


Mein Problem ist folgendeds:
ich möchte mal auf Rooof´s möglichkeit zurückkommen.
Bloß bei mir angepasst!


Deklartion
Code:

ausblenden Quelltext
1:
2:
3:
4:
TabsheetsList: TObjectList; 
SynEditsList: TObjectList; 
TabSheet: TTabSheet; 
SynEditA: TSynEdit
;



Implementation

Code:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
TabSheetsList := TObjectList.Create; 
TabSheet := TTabSheet.Create(Self); 
TabSheet.PageControl := PageControl_Edit; 
Tabsheet.Caption := 'Unbenannt 0'; 
Tabsheet.Name := 'TabSheet_Edit1'; 
TabSheetsList.Add(TabSheet); 
TabSheetsList.Items[0]. * 
SynEditA := TSynEdit.Create(Self); 
SynEditA.Parent := TabSheetsList. * 
SynEditA.Align := alClient;




Die beiden Zeilen mit den Sternechen bereiten mir Kopfzerbrechen.

1. Ich kann nicht einfach einfach "TabSheetsList.Items[0].caption := 'Neuer Text';" verwenden wie roof es geschildert hatte(undefiniert)
2. SynEditA.Parent erfodert einen TWincontrol-Typen den es allerdings nicht gibt!

Danke im voraus
Dt2158
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: So 03.11.02 12:49 
Bitte in Zukunft nicht mehrfach die gleiche Frage posten!

Hier meine Antwort aus dem anderen Topic:

DT2158 hat folgendes geschrieben:
Ich kann nicht einfach einfach "TabSheetsList.Items[0].caption := 'Neuer Text';" verwenden wie roof es geschildert hatte(undefiniert)

Das liegt daran das die Eingeschaft Items vom Type tObject ist und tObject hat nun mal keine Caption Eigenschaft. Eine Lösung wäre ein Typecast:
ausblenden Quelltext
1:
tTabSheet (TabSheetsList.Items [0]).Caption := 'Neuer Text';					


DT2158 hat folgendes geschrieben:
SynEditA.Parent erfodert einen TWincontrol-Typen den es allerdings nicht gibt!
Wenn es kein Parent gibt dann lass die Anweisung weg oder gibt NIL an. Allerdings wird das SynEdit dann auch nicht angezeigt. Ist ja logisch weil es ja kein Parent gibt. Was ich aber vermute ist das Du es auf einer Form anzeigen lassen möchtest. So "könnte" es funktionieren:
ausblenden Quelltext
1:
SynEditA.Parent := Self;					

Wenn Du das SynEdit allerdings in einem Deiner TabSheets anzeigen lassen möchtest musst Du natürlich nicht das tForm sondern ein tTabSheet als Parent angeben
ausblenden Quelltext
1:
SynEditA.Parent := tTabSheet (TabSheetsList.Items [0]);					


Gruß
TINO
DT2158 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: So 03.11.02 13:25 
okay hab das mit den parents anders gelöst
ausblenden Quelltext
1:
SynEditNew.Parent := FindControl((FindComponent('TabSheet_Edit1') as TTabSheet).Handle);					

und die liste lass ich auch weg, ist ja nicht zwingend nötig

trotzdem danke