Autor Beitrag
inselberg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Mo 21.04.03 14:59 
hi,

ich erzeuge - zur laufzeit - neue tabsheets (auf einer pagecontrol).
gleichzeitig kommt auf jedes tabsheet ein memo und eine listbox.

das ist ja nicht besonders schwierig.

aber wie greif ich im nachhinein auf die die einzelnen memos/listboxen zu ?

Self.FindComponent scheint mir auch nicht der richtige wert zu sein da die memos ja alle den gleichen namen tragen, oder muss ich mir zuerst das tabsheet "suchen" (falls ja wie ?) ...


danke.

_________________
hans bist du das ?
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Mo 21.04.03 16:02 
Hallo,

wie du im nachinein auf die Komponenten zugreifst? Mit einem Namen.

Sobald du die Objekte dynamisch erstellst, wirst du ihnen - hoffentlich - auch einen Namen zuweisen.

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Mo 21.04.03 20:01 
lol das war aber ne klasse antwort :D

ich mach mal en codebeispiel
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var NewTabSheet: TTabSheet;
     Memo: TMemo;
   
begin
 NewTabSheet:=TTabSheet.Create(Self);
 NewTabSheet.PageControl:=PageControl1;
 NewTabSheet.Caption:=achannel.Name;

 Memo:=TMemo.Create(Self);
 Memo.Parent:=NewTabSheet;
 Memo.align:=alClient;
end;


so und nun sag mir den namen vom 12. memo ;)

_________________
hans bist du das ?
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Mo 21.04.03 20:10 
inselberg hat folgendes geschrieben:
lol das war aber ne klasse antwort :D


Danke :lol:

inselberg hat folgendes geschrieben:

ich mach mal en codebeispiel
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var NewTabSheet: TTabSheet;
     Memo: TMemo;
   
begin
 NewTabSheet:=TTabSheet.Create(Self);
 NewTabSheet.PageControl:=PageControl1;
 NewTabSheet.Caption:=achannel.Name;

 Memo:=TMemo.Create(Self);
 Memo.Parent:=NewTabSheet;
 Memo.align:=alClient;
end;


so und nun sag mir den namen vom 12. memo ;)


Memo.Name := 'DeinMemoName';

Zugreifen tust du dann per DeinMemoName :wink:

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 21.04.03 20:12 
Könntest Du nicht ein "Array of TTabSheet" erzeugen? Also, wenn Du 12 Tabsheets erzeugen willst, so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
VAR i : INTEGER;
   tabsheet : Array[0..11] Of TTabSheet;
begin
  for i:=0 TO 11 DO
  begin
    tabsheet[i]:=TTabSheet.Create(self);
    {...}
  end;
end;

Dann kannst Du mit TabSheet[0] bis TabSheet[11] auf die TabSheets zugreifen.

Oder aber, Du setzt bei jedem TabSheet, wenn Du es mit Deiner Methode erzeusgt, die Eigenschaft "Name" und sprichst es über FindComponent an. Dann brauchst Du das Array nicht.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Mo 21.04.03 20:45 
Hallo,

da würde ich persönlich auf einen dynamischen Array zurückgreifen, wenn man die Anzahl nicht genau bestimmen kann, wieviel TabSheets man genau benötigt (z.b. ein Texteditor).

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 21.04.03 20:49 
Jo, ich auch. Sollte ja aber auch nur das Prinzip verdeutlichen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Mo 21.04.03 22:26 
einen direktzugriff gibt es also nicht ... von der art
"tabsheet[x].memo"

_________________
hans bist du das ?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 22.04.03 09:07 
Hallo,

FloSch hat folgendes geschrieben:
Memo.Name := 'DeinMemoName';
Zugreifen tust du dann per DeinMemoName

Nein, das funktioniert nicht. Du hast dann nur über die Funktion FindComponent die Möglichkeit das Kontrol zu finden.

inselberg hat folgendes geschrieben:
einen direktzugriff gibt es also nicht ... von der art
"tabsheet[x].memo"

Nicht so ohne weiteres. Du könntest allerdings eine Ableitung von tTabSheet erstellen welches im Constructor die benötigten Kontrols (Memo, etc) erstellt. Über ein Property könntest Du den Zugang zu den Kontrols herstellen.

Gruß
Tino