![]() |
Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
Guten Morgen Delphianer,
habe einiges zum Thema Listbox und Listview gefunden was mich zur folgenden subjektiven Meinung führt: Vorteile einer Listbox: 1. Speichern und laden in eine Datei sehr simpel 2. Einfaches handling innerhalb des Programmcodes (oft nur eine Zeile - Beispiel "exchange") Nachteile 1. Nur eine Spalte 2. Drag ´n` Drop INNERHALB der Listbox bei aktiviertem Multiselect will mir einfach nicht gelingen Vorteile einer Listview 1. Mehrere Spalten (wenn man´s braucht ist dann die Listbox e keine Alternative) 2. Drag ´n´ Drop funktioniert auch bei Multiselect gescheit. (mehrere Dateien auf einmal markieren mit Maus usw) 3. rechte Maustaste Kontextmenu trifft direkt denn markierten Eintrag (das hab ich bei ner Listbox nur umständlich hinbekommen) Nachteile einer Listview 1. Umständliches Handling bei einfachen Dingen wie Laden und speichern in eine Datei (scheinbar nur mit Schleife möglich) 2. Umständliches Handling innerhalb des Programmcodes (gibt kein exchange; move und der gleichen) Habe ich dies richtig erkannt, oder sind mir ein paar einfache grundlegene Funktionen der Listview entgangen? Im Grunde geht es darum, dass ich bei einem Programm am Anfang auf eine Listbox gesetzt hab, und jetzt feststellen musste, dass einige Dinge einfach nicht so richtig funktionieren wie ich das gerne hätte: zum Beispiel Drag ´n´ Drop INNERHALB der Listbox. Jetzt hatte ich vor alles umzuschmeißen auf Listview und hab recht schnell erkannt, dass einige simple Funktionen der Listbox nur mit Aufwand in eine Listview zu ändern sind.... :| Padavan |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
wenn du einmal dabei bist umzusteigen, solltest du IMHO gleich auf VirtualTreeViews umsteigen. Deren Inhalt kannst du, soweit ich weiß, auch direkt speichern.
|
DP-Maintenance
Dieses Thema wurde von "Sharky" von "XML" nach "Programmieren allgemein" verschoben.
Hai, bin mir nicht richtig sicher wo die Frage am besten aufgehoben ist. Aber in der XML-Sparte auf keinen Fall ;-) |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
Also ich verwende Listboxen so gut wie nie. Die VirtualTreeView kenn ich nicht, ich weiss nur, das die hier mächtig gehyped wird, aber nur deshalb, weil die Möglichkeiten der TListView (Stichtwort: VirtualView) den Meisten hier unbekannt sind. Das soll keine Diskussion pro/contra anstossen. Vermutlich ist das ein tolles Produkt für 0,0 Euronen, aber die ListView ist eben vollig ausreichend.
Aber, was ist den schon dabei, eine Listview mit einem kleinen Schleifchen abzuspeichern? Über die Data-Eigenschaft eines TListViewItems musst Du doch sowieso beim Speichern/Laden Hand anlegen. Und wenn Du das oft brauchst, schreibst Du dir eine Klasse dafür. Bei Freeware-Tools bin ich (u.a.) bei RxLib schonmal auf die Schnautze gefallen, weil die zwischendurch eingestellt wurden und ich meine Projekte nicht mehr warten konnte. Ist schon ein Weilchen her, aber da setz ich lieber auf kommerzielle Produkte von grossen Firmen. Aber, zurück zum Thema und Abschluss: Die kleinen Nachteile der LV ggü der LB sind doch zu verschmerzen. |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
Zitat:
wollte nur sicherstellen, dass ich keine Funktion übersehen habe, welche das schon kann. Ist mir schonmal passiert, hab irgendwas mit hammermäßig viel Code umschifft und danach gemerkt, dass es das längst in der Klasse gibt.... Und wollte quasi die Bestätigung bekommen, dass ein Drag & Drop innerhalb der Listbox bei aktiviertem Multiselect nicht gescheit funktioniert ?!?!?!?! Sollte das nämlich doch gehen, muss ich mir die Mühe nicht machen, an der Stelle die Listbox zu ersetzen. Wäre schon ein "wenig" Arbeit. Danke Padavan |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
Hmm, jetzt muss ich aber doch nochmal was dazu fragen...
bei der Listbox habe ich via + oder - realisiert, dass man den Eintrag hoch bzw. runter setzen kann
Delphi-Quellcode:
Und zwar funktioniert das auch, OHNE das ein Eintrag selektiert wurde, also nur die gestrichelte Linie auf dem Eintrag liegt.
if key = '+' then begin
try listbox1.Items.Exchange(listbox1.ItemIndex,listbox1.ItemIndex-1); listbox1.ClearSelection; except screen.cursor := crdefault; //nur falls mal hängt end; end; if key = '-' then begin try listbox1.Items.Exchange(listbox1.ItemIndex,listbox1.ItemIndex+1); listbox1.ClearSelection; except screen.cursor := crdefault; //nur falls mal hängt end; end; Bei der Listview funktioniert das nicht, hab´s so versucht:
Delphi-Quellcode:
funktioniert auch, aber nur einmal, dann ist der der Focus weg und nicht geht mehr.
if (key = '-') and (listview1.selcount > 0) then begin
try listview1.items.Insert(Listview1.itemindex + 2); Listview1.Items[listview1.itemindex + 2] := listview1.Selected; Listview1.Items[listview1.itemindex].Delete; except screen.cursor := crdefault; //nur falls mal hängt end; end; aber ohne
Delphi-Quellcode:
gäbe es natürlich Crash, weil dann leere Zeilen eingefügt würden
and (listview1.selcount > 0)
wie kann ich sowas realisieren, und warum ist es bei der Listbox so, das es auch ohne den Focus geht und bei der Listview nicht? |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
hab´s so gelöst, nicht schön aber selten
Delphi-Quellcode:
procedure TForm1.ListView1KeyPress(Sender: TObject; var Key: Char);
var selected: integer; begin if (key = '-') and (listview1.selcount > 0) then begin try selected := Listview1.itemindex + 1; listview1.items.Insert(Listview1.itemindex + 2); Listview1.Items[listview1.itemindex + 2] := listview1.Selected; Listview1.Items[listview1.itemindex].free; Listview1.Items[selected].Selected := true; except screen.cursor := crdefault; //nur falls mal hängt end; end; if (key = '+') and (listview1.selcount > 0) then begin try selected := Listview1.itemindex - 1; listview1.items.Insert(Listview1.itemindex - 1); Listview1.Items[listview1.itemindex - 2] := listview1.Selected; Listview1.Items[listview1.itemindex].free; Listview1.Items[selected].Selected := true; except screen.cursor := crdefault; //nur falls mal hängt end; end; end; |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
ich unterhalt mich zwar die ganze Zeit mir selbst, aber egal.... :cheers: :roteyes:
aber nun stehe ich vor dem nächsten Problem. in die Listview etwas einfügen habe ich so gemacht:
Delphi-Quellcode:
aber wenn ich was ergänzen, also unten anhängen will, dann komme ich mit folgendem Code nicht weiter
procedure TForm1.Button2Click(Sender: TObject);
var i: integer; begin if opendialog1.Execute then begin Listview1.Clear; for i := 0 to Opendialog1.Files.Count - 1 do begin Listview1.Items.Add; Listview1.Items[i].Caption := Opendialog1.Files[i]; end; end; end;
Delphi-Quellcode:
kann mir jemand sagen, wie man das richtigerweise macht, oder wo mein Denkfehler liegt.
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; begin if opendialog1.Execute then begin for i := 0 to Opendialog1.Files.Count - 1 do begin Listview1.Items.Add; Listview1.Items[Listview1.Items.Count + i].Caption := Opendialog1.Files[i]; end; end; end; Laufe auf einen Zugriffsfehler, wenn ich es so angehe. |
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
Lass mal das +i weg und schreib stattdessen ein -1 hin ;)
|
Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&
:cry: :| :) :-D
Danke dir |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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