MichaK Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 Servus, wie kann man listitems in einem Listview Objekt ausblenden? MfG Michael Klaus Zitieren
geloescht_JesterDay Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 Ich rate jetzt einfach mal (weiss es jetzt ehrlich nicht) aber ich würde Listview.Item.Visible oder Listview.Item.enabled mal probieren (falls es die Eigenschaften gibt, denke aber schon) Könnte auch sein, das die Items ein Array sind, also Listview.Items[1].visible oder so Zitieren
Peregrin Geschrieben 15. Januar 2003 Geschrieben 15. Januar 2003 hi, meines wissens nach geht das nicht (kann mich aber auch irren). ich glaube mich zu erinnern, dass ich das problem mal hatte und mit folgender loesung zurechgekommen bin: die hoehe der betroffenen zeile auf 0 setzen dann darf der user allerding auch nicht die moeglichkeit haben, die zeilen-hoehe zu aendern (allowUserResize oder so aehnlich). kann ich aber bei bedarf gerne noch mal nachsehen... hoffe, geholfen zu haben. Zitieren
geloescht_JesterDay Geschrieben 16. Januar 2003 Geschrieben 16. Januar 2003 Stimmt, hab gerade mal nachgesehen, gibt es nicht... es gibt allerdings die Eigenschaft ListView, darin steht das ListView in dem das ListItem angezeigt wird. Meine Idee wäre jetzt mal das auf nil zu setzen. Es geht dabei wie gesagt nur um die Anzeige, das ListItem bleibt erhalten... Wieder nur eine Idee, hab ich nicht probiert... Zitieren
MichaK Geschrieben 16. Januar 2003 Autor Geschrieben 16. Januar 2003 die funktionen die Ihr beschrieben habt gibt es nicht. die idee mit height=0 hatte ich auch schon, leider kommt dann bei mir immer die meldung "Eigenschaft ist Schreibgeschützt" wie kann ich das ändern? MfG Michael Klaus Zitieren
geloescht_JesterDay Geschrieben 16. Januar 2003 Geschrieben 16. Januar 2003 Ok, hab mal kurz was programmiert. Hier kannst du ein gewähltes ListItem "verstecken". Ist nur mal kurz als Beispiel gedacht, du müsstest es noch selber ausarbeiten... type THiddenItems = Array of TListItem; TForm1 = class(TForm) ListView1: TListView; Button1: TButton; Button2: TButton; Button3: TButton; ImageList1: TImageList; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } HiddenArray: THiddenItems; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} // ListItem hinzufügen procedure TForm1.Button1Click(Sender: TObject); begin with ListView1.Items.Add do begin ImageIndex:= ListView1.Items.Count; Caption:= 'Item'+ IntToStr(ListView1.Items.Count); end; end; // selektiertes ListItem verstecken procedure TForm1.Button2Click(Sender: TObject); begin SetLength(HiddenArray, Length(HiddenArray)+1); HiddenArray[High(HiddenArray)]:= TListItem.create(ListView1.Items); // Das Item muss ein // TListItems als Parent haben, nil geht nicht (gibt Fehler beim Zugriff) HiddenArray[High(HiddenArray)].Caption:= ListView1.Selected.Caption; HiddenArray[High(HiddenArray)].ImageIndex:= ListView1.Selected.ImageIndex; ListView1.Selected.Delete; end; // ListItems wieder anzeigen // Es werden allebisher "versteckten" angezeigt // es müsste noch aus dem Array gelöscht werden procedure TForm1.Button3Click(Sender: TObject); var i: Integer; item: TListItem; begin for i:= 0 to High(HiddenArray) do begin item:= ListView1.Items.Add; item.Caption:= HiddenArray[i].Caption; item.ImageIndex:= HiddenArray[i].ImageIndex; end; end; end. Das mit dem Array ist nur ein Beispiel, wenn du nur ein bestimmtes Item verstecken willst kannst du das auch mit einer Variable o.ä. machen. auch evtl. mehr Werte als Caption und ImageIndex... Hoffe es hilft... P.S. Mir fällt gerade auf, ich hab vergessen am Ende aufzuräumen, du müsstest alle von dir Erzeugten ListItems auch wieder freigeben... sollte eigentlich klar sein. Zitieren
MichaK Geschrieben 16. Januar 2003 Autor Geschrieben 16. Januar 2003 Danke für die Antwort JesterDay, aber ich habe vergessen dazu zu sagen das ich in visual basic programmiere. Hast du dazu ne lösung? MfG Mk Zitieren
geloescht_JesterDay Geschrieben 16. Januar 2003 Geschrieben 16. Januar 2003 Nein, aber vom Prinzip her müsste es da genauso gehen... Zitieren
MichaK Geschrieben 16. Januar 2003 Autor Geschrieben 16. Januar 2003 hat jemand anders noch eine idee wie ich einzelne elemente eines listviews unter visual basic ausblenden kann oder wie ich die höhe der einzelnen zeilen ändere mfg michael klaus Zitieren
Peregrin Geschrieben 16. Januar 2003 Geschrieben 16. Januar 2003 hi, ich habe mal nachgesehen, aber ich hatte das problem nicht bei einer listview sondern bei einem anderen control (spread). bei dem konnte man die zeilenhoehe festlegen... allerding ist der ansatz von JesterDay ja nicht verkehrt... du baust dir eine speicherstruktur (z.b. eine klasse mit den spalten der listview als eigenschaften oder ein array, oder ein type, ...) auf, in der du die elemente der listview ablegst. dabei sollte man die itemdata-eigenschaft der listitems (kann auch anders heissen) nutzen um diese in der speicherstruktur wiederzufinden. dann gehst du mit einer schleife ueber alle element der listview und loeschst alle elemente, welche du nicht anzeigen moechtest. umgekehrt gehst du mit einer schleife ueber deine speichersturuktur und fuegst alle elemente wieder ein, welche du anzeigen moechtest. den code dazu musst du aber schon selber schreiben... :-) viel erfolg! Zitieren
MichaK Geschrieben 28. Januar 2003 Autor Geschrieben 28. Januar 2003 Der gedanke ist zwar nicht schlecht Peregrin, aber was machst du wenn in dem Listview 2000 bis 3000 einträge stehen und du dazu noch eine Array erzeugen musst. Um das Listview zu durchsuchen und das Array zuschreiben braucht der Rechner zu viel zeit. Damit ist kein flüssiges Arbeiten mehr möglich. need support - help me Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.