AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kann nicht auf dynamisch erstelltes Listview zugreifen?
Thema durchsuchen
Ansicht
Themen-Optionen

Kann nicht auf dynamisch erstelltes Listview zugreifen?

Ein Thema von MisterNiceGuy · begonnen am 31. Dez 2005 · letzter Beitrag vom 31. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 00:37
Hi ich erstelle ein Listview dynamisch und gebe ihm einen Namen. Jetzt will ich auf eben diesen Namen zugreifen, aber ich bekomme jedesmal eine Fehlermeldung.

Der Code sieht wie folgt aus:
Delphi-Quellcode:
var currentlist:TListview
...
      currentlist := TListview(Findcomponent('listview'+inttostr(PageControl1.ActivePageIndex)));
      showmessage(currentlist.Name);
...
Kann sich jemand denken wo ich den Fehler gemacht habe? Hab noch nicht so viel Erfahrung im Erstellen von Kompos zur Laufzeit und lern grade
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 00:42
Source ist zu knapp. Ist da irgendwo ein Create ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#3

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 00:44
Japp der gesamte Code des Creates ist hier:
Delphi-Quellcode:
  var new_sheet:TTabSheet;
      new_listview:TListview;
      new_button:TButton;
begin
  new_Sheet := TTabSheet.Create(PageControl1);
  new_Sheet.Caption := inputbox('Neue Liste','Bitte Namen für die Liste eingeben','Neue Liste');
  new_Sheet.PageControl := PageControl1;
  new_listview := TListview.Create(new_Sheet);
  new_listview.Name := 'listview'+inttostr(pagecontrol1.PageCount);
  showmessage(new_listview.Name);
  new_listview.Parent := new_Sheet;
  new_listview.ViewStyle := vsreport;
  //new_listview.OnSelectItem := ListView1SelectItem;
  //new_listview.OnColumnClick := ListView1ColumnClick;
  //new_Listview.OnCompare := ListView1Compare;
  //new_listview.OnCustomDrawItem := ListView1CustomDrawItem;
  new_listview.columns := listview1.columns;
  new_listview.Width := listview1.Width;
  new_listview.Height := listview1.Height-30;
  new_listview.Anchors := [akbottom, aktop, akleft, akright];
  new_listview.GridLines := true;
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 09:00
new_listview := TListview.Create(new_Sheet); Die Methode Form1.FindComponent() findet nur solche Komponenten, deren Owner Form1 ist.

Delphi-Quellcode:
function ActiveListView(pc: TPageControl): TListView;
begin
  Result := pc.ActivePage.FindComponent('ListView' + IntToStr(pc.ActivePageIndex)) as TListView;
end;
Silvestergrüße vom marabu
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 10:09
new_listview := TListview.Create(new_Sheet); Vorsicht - ich bin ein ziemlicher Anfänger; deshalb bin ich mir nicht sicher, ob ich richtig liege. Ich könnte mir aber vorstellen, dass es heißen sollte:

new_listview := TListview.Create(new_ListView); Sorry, wenn ich falsch liegen sollte.

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 10:19
Wieso nicht einfach
list_view := TListView.Create(Form1);
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 10:45
new_listview := TListview.Create(new_ListView); Nicht so gut, weil der Zufallswert der nicht initialisierten lokalen Variable new_ListView als Owner im Konstruktor übergeben wird.

list_view := TListView.Create(Form1); Kann man machen - aber wenn die dynamisch erzeugten TabSheets auch dynamisch zerstört werden, dann sollten sie schon Owner ihrer controls sein, damit sie auch deren Speicher freigeben.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#8

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 13:21
hm ich könnte die Listviews am Ende ja "Freen" aber wenn ich

new_listview := TListview.Create(Form1); angebe, dann wird das Listview doch auf der Form erstellt oder irre ich mich da?


Gibt es noch eine andere möglichkeit an den Namen der Komponente ranzukommen außer per FindComponent?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#9

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 14:11
Falls es jemanden interessiert ich habs jetzt mit einer eigenen Methode gelöst.

Delphi-Quellcode:
function TForm1.FindListview(const Name: string): TListview;
var i,j: Integer;
begin
  for i:=0 to form1.PageControl1.PageCount-1 do
    for j:=0 to pagecontrol1.Pages[i].ComponentCount-1 do
      if pagecontrol1.Pages[i].Components[j] is TListview then
        begin
          result := TListview(pagecontrol1.Pages[i].Components[i]);
          if ansiSameText(Result.Name,Name) then exit;
        end;
  Result := nil;
end;
Edit: Waaa es geht aber immernoch nicht, das Problem ist genau das gleiche wie oben!
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Kann nicht auf dynamisch erstelltes Listview zugreifen?

  Alt 31. Dez 2005, 14:15
Originell dein Code ist.

Wenn du pro TabSheet nur eine ListView hast, dann würde ich mir die im TabSheet.Tag merken und die Sucherei entfällt:

new_Sheet.Tag := Integer(new_ListView); marabu
  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 19:38 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