Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - untererzeugt objekte
inselberg - Mo 21.04.03 14:59
Titel: untererzeugt objekte
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.
FloSch - 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:
inselberg - Mo 21.04.03 20:01
lol das war aber ne klasse antwort :D
ich mach mal en codebeispiel
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 ;)
FloSch - 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
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:
Christian S. - Mo 21.04.03 20:12
Könntest Du nicht ein "Array of TTabSheet" erzeugen? Also, wenn Du 12 Tabsheets erzeugen willst, so:
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
FloSch - 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:
Christian S. - Mo 21.04.03 20:49
Jo, ich auch. Sollte ja aber auch nur das Prinzip verdeutlichen.
inselberg - Mo 21.04.03 22:26
einen direktzugriff gibt es also nicht ... von der art
"tabsheet[x].memo"
Tino - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!