AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Listbox Vor- und Nachteil gegenüber Listview (auch Drag&Dro)
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox Vor- und Nachteil gegenüber Listview (auch Drag&Dro)

Ein Thema von padavan · begonnen am 20. Okt 2005 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 05:48
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
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 05:57
wenn du einmal dabei bist umzusteigen, solltest du IMHO gleich auf VirtualTreeViews umsteigen. Deren Inhalt kannst du, soweit ich weiß, auch direkt speichern.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
20. Okt 2005, 05:57
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
alzaimar
(Moderator)

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

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 07:07
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 07:53
Zitat:
Die kleinen Nachteile der LV ggü der LB sind doch zu verschmerzen.
klar sind sie das,
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
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 09:03
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:
    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;
Und zwar funktioniert das auch, OHNE das ein Eintrag selektiert wurde, also nur die gestrichelte Linie auf dem Eintrag liegt.

Bei der Listview funktioniert das nicht, hab´s so versucht:

Delphi-Quellcode:
  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;
funktioniert auch, aber nur einmal, dann ist der der Focus weg und nicht geht mehr.

aber ohne
and (listview1.selcount > 0) gäbe es natürlich Crash, weil dann leere Zeilen eingefügt würden

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?
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 10:09
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;
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 13:23
ich unterhalt mich zwar die ganze Zeit mir selbst, aber egal....

aber nun stehe ich vor dem nächsten Problem.
in die Listview etwas einfügen habe ich so gemacht:

Delphi-Quellcode:
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;
aber wenn ich was ergänzen, also unten anhängen will, dann komme ich mit folgendem Code nicht weiter

Delphi-Quellcode:
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;
kann mir jemand sagen, wie man das richtigerweise macht, oder wo mein Denkfehler liegt.
Laufe auf einen Zugriffsfehler, wenn ich es so angehe.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 13:29
Lass mal das +i weg und schreib stattdessen ein -1 hin
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Listbox Vor- und Nachteil gegenüber Listview (auch Drag&

  Alt 20. Okt 2005, 13:53

Danke dir
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:23 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