![]() |
Wie komme ich an dyn. ListView auf PageControl ran?
Hallo,
ich erstelle auf 3 TabSheets in einer PageControl jeweils eine ListView dynamisch. Dynamisch deshalb, weil die TabSheets auch dynamisch erstellt werden - abhängig von der Useranzahl aus der DB. Nun habe ich also folgende "Hierachie":
Delphi-Quellcode:
Wie komme ich jetzt mittels FindComponent an die ListView lv2 ran? Alles, was ich probiert habe, hat entweder keinen Effekt, oder bringt mir eine AV. Hier mein letzter Versuch, bevor ich mich entschieden habe, hier einen Thread zu eröffnen:
PageControl
Tab0 lv0 Tab1 lv1 Tab2 lv2
Delphi-Quellcode:
Danke im Voraus
procedure TForm1.Button1Click(Sender: TObject);
var lv: TListView; begin lv:=TListView(PageControl1.Pages[0].FindComponent('lv0'))); lv.Free; // oder sonst irgendwas... end; |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Was ist der Owner des ListViews?
|
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Owner ist Form1
|
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Dann musst du auch die befragen:
Form1.FindComponent() |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Danke,
aber so geht's auch nicht.
Delphi-Quellcode:
Danke
(Form1.FindComponent('lv0') as TLIstView).GridLines:=True;
|
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Hallo,
< ich erstelle auf 3 TabSheets in einer PageControl jeweils eine ListView dynamisch. > Zeig mal den Code des Erzeugens. Ausserdem fehlt ein Assert
Delphi-Quellcode:
lv:=TListView(PageControl1.Pages[0].FindComponent('lv0')));
Assert(lv<>NIL, 'argzzz LV is NIL'); if lv<>NIL then begin lv.Free; // oder sonst irgendwas... end; Heiko |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Hallo,
wenn du die ListViews selbst erzeugst, warum merkst du dir nicht einfach die Referenzen beim Erstellen (Array, TList, TComponentList...)? Damit würde doch die ganze Sucherei über FindComponent entfallen. Gruß Hawkeye |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Also,
die TabSheets erstelle ich so:
Delphi-Quellcode:
und so erzeuge ich die ListViews!Tab:=TTabSheet.Create(PageControl1); Tab.Name:='Tab'+IntToStr(RecNo); Tab.Caption:=Form1.ZQuery1.FieldByName('realname').AsString; Tab.Parent:=PageControl1; Tab.PageControl:=PageControl1;
Delphi-Quellcode:
lv:=TListView.Create(Form1);
lv.ViewStyle:=vsReport; for i:=0 to 4 do begin lv.Columns.Add; end; lv.Columns.Items[0].Caption:='Datum'; lv.Columns.Items[1].Caption:='Uhrzeit'; lv.Columns.Items[3].Caption:='Kommentar'; lv.Columns.Items[4].Caption:='Eingetragen von'; EDIT: Ich habe die Listviews jetzt doch in einem array gespeichert. Funktioniert. Danke |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Hallo,
beim Erzeugen der ListViews hast du kein Name für den ListView angegeben. Deshalb war FindComponent immer NIL -> Schutzverletzung. Heiko |
Re: Wie komme ich an dyn. ListView auf PageControl ran?
Wenn Du schon irgendwelche Controls dynamisch erzeugst, wieso hälst du die nicht in einer Liste oder einer ähnlich gearteten Struktur? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz