AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie komme ich an dyn. ListView auf PageControl ran?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie komme ich an dyn. ListView auf PageControl ran?

Ein Thema von TheMiller · begonnen am 17. Dez 2008 · letzter Beitrag vom 19. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 21:43
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:
PageControl
    Tab0
        lv0
    Tab1
        lv1
    Tab2
        lv2
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:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lv: TListView;
begin
  lv:=TListView(PageControl1.Pages[0].FindComponent('lv0')));
  lv.Free; // oder sonst irgendwas...
end;
Danke im Voraus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 21:53
Was ist der Owner des ListViews?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 21:55
Owner ist Form1
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 22:12
Dann musst du auch die befragen:
Form1.FindComponent()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 22:17
Danke,

aber so geht's auch nicht.

(Form1.FindComponent('lv0') as TLIstView).GridLines:=True; Danke
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 22:50
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
Heiko
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 22:59
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
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 17. Dez 2008, 23:24
Also,

die TabSheets erstelle ich so:

Delphi-Quellcode:
    
    Tab:=TTabSheet.Create(PageControl1);
    Tab.Name:='Tab'+IntToStr(RecNo);
    Tab.Caption:=Form1.ZQuery1.FieldByName('realname').AsString;
    Tab.Parent:=PageControl1;
    Tab.PageControl:=PageControl1;
und so erzeuge ich die ListViews!

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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 18. Dez 2008, 06:59
Hallo,

beim Erzeugen der ListViews hast du kein Name für den ListView angegeben.
Deshalb war FindComponent immer NIL -> Schutzverletzung.


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Wie komme ich an dyn. ListView auf PageControl ran?

  Alt 18. Dez 2008, 08:05
Wenn Du schon irgendwelche Controls dynamisch erzeugst, wieso hälst du die nicht in einer Liste oder einer ähnlich gearteten Struktur?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz