AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Selectieren Listview / ListBox ????

Ein Thema von maluprog · begonnen am 6. Okt 2010 · letzter Beitrag vom 25. Apr 2011
Antwort Antwort
maluprog

Registriert seit: 20. Okt 2009
Ort: Wildau
19 Beiträge
 
Delphi 6 Professional
 
#1

Selectieren Listview / ListBox ????

  Alt 6. Okt 2010, 15:56
Hallo,

Habe eine ListView und eine ListBox, welche über einen Button selectiert und um eine Zeile gleichzeitig nach unten verschoben werden sollen.
Bei 2 ListBoxen klappt es, jedoch nicht gem. o.g. gesagtem. Warum nicht ?
Nachstehenden Code:
Delphi-Quellcode:
procedure TFmein.BSelectClick(Sender: TObject);
begin
        if not (ListBoxA1.ItemIndex = ListBoxA1.Count - 1) then
        begin
         ListBoxA1.ItemIndex := ListBoxA1.ItemIndex +1;
        end
        else
        begin
         ListBoxA1.ItemIndex := 0;
        end;

         if not (ListViewA1.ItemIndex = ListViewA1.Items.Count - 1) then
        begin
         ListViewA1.ItemIndex := ListViewA1.ItemIndex +1;
        end
        else
        begin
         ListViewA1.ItemIndex := 0;
        end;

end;
Bei Listview gibt's kein ListView.Count, darum obenstehender Code.

Benötige Hilfe.
  Mit Zitat antworten Zitat
maluprog

Registriert seit: 20. Okt 2009
Ort: Wildau
19 Beiträge
 
Delphi 6 Professional
 
#2

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 00:31
Hallo,

habe nochmal alles pepostet, sowie alle Themen durchgeforstet, nichts gefunden !

Hat keiner eine Idee ?

Unverständlicherweise wird bei der Listbox sofort die erste Zeile selectiert, jedoch beim Listview passiert nichts. Es muß doch gehen ?

Grüsse

manne
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 01:14
Woraus schliesst Du, dass es nicht funktioniert?

ListView.HideSelection := False könnte evtl. für eine Überaschung sorgen.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 07:22
Hallo,

Hast du schon gegoogelt? Dies habe ich nach ein paar Sekunden gefunden:

Delphi-Quellcode:
procedure ListViewItemMoveUpDown(lv: TListView; Item: TListItem; MoveUp,
  SetFocus: Boolean);
var
  DestItem: TListItem;
begin
  if (Item = nil) or
    ((Item.Index - 1 < 0) and MoveUp) or
    ((Item.Index + 1 >= lv.Items.Count) and (not MoveUp)) then
    Exit;
  lv.Items.BeginUpdate;
  try
    if MoveUp then
      DestItem := lv.Items.Insert(Item.Index - 1)
    else
      DestItem := lv.Items.Insert(Item.Index + 2);
    DestItem.Assign(Item);
    lv.Selected := DestItem;
    Item.Free;
  finally
    lv.Items.EndUpdate;
  end;
  if SetFocus then
    lv.SetFocus;
  DestItem.MakeVisible(False);
end;
Beispiele:

// Das ausgewählte Item nach Oben schieben und den Fokus setzen
ListViewItemMoveUpDown(ListView1, ListView1.Selected, True, True);

// Das 2. Item nach Oben schieben
ListViewItemMoveUpDown(ListView1, ListView1.Items[1], True, False);
Thomas
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 07:42
Also ich bin mir nicht ganz sicher, aber glaube er will sich nur darin Bewegen (wie mit Pfeiltasten). Zumindest sieht sein Code für die ListBox so aus, der ja anscheinend wie gewünscht funktioniert.

Aber kann mich auch täuschen und er will trotzdem die Anordnung ändern?

Eine ListBox zeigt das selektierte Item bei Default-Einstellungen an, auch wenn sie nicht den Focus hat. Ein ListView eben nicht, weshalb man denken könnte, eine Selektierung funktioniert nicht.

Geändert von Satty67 ( 7. Okt 2010 um 07:45 Uhr)
  Mit Zitat antworten Zitat
maluprog

Registriert seit: 20. Okt 2009
Ort: Wildau
19 Beiträge
 
Delphi 6 Professional
 
#6

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 13:45
Hallo,

habe beide Vorschläge soeben ausprobiert, bei
Delphi-Quellcode:
........
        ListView.HideSelection := False;
        .......
futzt garnicht's.

Die Alternative zeigt, dass nur Zeile 1 mit Zeile 2 vertauscht wird. Bei jeden neuen "ButtonClick"
werden immer nur die beiden Zeilen getauscht.

Dieses ist nicht die gewollte Lösung, nochmals, wenn ButtonClick ausgelöst wird soll bei der Listbox und bei der Listview je eine Zeile nach unten verschoben werden, d.h. von 1 nach 2 in beiden! Bei erneutem Click von jetzt 2 nach 3 usw. Bei der Listbox funktioniert es ausgezeichnet.
Wenn zBp. die letzte Zeile "x" angesprochen wird, dann wird wieder auf Zeile 1 umgeschalten, deshalb der eingebaute Code;
Delphi-Quellcode:
.....
        else
        begin
         ListBoxA1.ItemIndex := 0;
        end;
       ......
bzw.
Delphi-Quellcode:
....
       end
        else
        begin
         ListViewA1.ItemIndex := 0;
        end;
Ich hoffe Ihr versteht was ich meine.
Ich hoffe auf einen anderen Tip, habe im DP-Portal lange gesucht, nichts gefunden, werde bald nach 2 Tagen "verrückt"

Bis dahin und hoffe weiter und Danke bis hierhin

mann
  Mit Zitat antworten Zitat
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
163 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 15:14
1. Also unter "Verschieben" verstehst Du wohl nicht das Verschieben von den Einträgen in ListBox oder ListView sondern das "Verschieben" des Cursors um eines nach unten, oder? Nach dem Button-Klick ist dann nicht mehr das erste Element sondern nun das zweite markiert.

2. ListViewA1.HideSelection := False; ist richtig. Sollte in ListViewA1 dennoch kein Eintrag markiert sein, kann man mit ListViewA1.Items[0].Selected:= True; nachhelfen.
Die Funktionen in ListView sind allerdings etwas umfangreicher als in ListBox. So hat ein ListItem (also ein einzelner Eintrag eines ListView) auch noch weiter Eigenschaften bezüglich der Markierung:
Delphi-Quellcode:
ListViewA1.Items[0].Focused:= True; // zeichnet einen Rahmen um den Eintrag
ListViewA1.Items[0].MakeVisible(True); // scrollt den markierten Eintrag in den sichtbaren Bereich
Beides wird bei ListBox automatisch gemacht!

Gruß
e-gon
  Mit Zitat antworten Zitat
maluprog

Registriert seit: 20. Okt 2009
Ort: Wildau
19 Beiträge
 
Delphi 6 Professional
 
#8

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 18:16
Hallo,

genau das ist es, für die Tips besten Dank, muß "neben mir gestanden haben"! Die Werte kann man ja in den Eigenschaften definieren. Habe aber um sicher zu gehen diese Werte in den Code geschrieben.
Der erste Hinweis "ListView.HideSelection := False;"hätte mich schon stutzig machen müssen, aber ....
So futzt es:
Delphi-Quellcode:
        ......
        ListViewA1.HideSelection := False;
        ListViewA1.RowSelect := True;
        ListViewA1.MultiSelect := False;
        if not (ListViewA1.ItemIndex = ListViewA1.Items.Count -1) then
        begin
         ListViewA1.ItemIndex := ListViewA1.ItemIndex + 1;
        end
        else
        begin
         ListViewA1.ItemIndex := 0;
        end;
        .......
Bis hierhin Danke, jedoch noch eine Frage dazu, warum ist der selectierte Eintrag nun grau und nicht blau gekennzeichnet. Kann ich den selectierten Eintrag so wie er jetzt dargestellt wird zwecks "Copy" in eine andere ListViewA2 ect. weiter verarbeiten?

Bitte noch auf meine Frage eine Antwort.

Gruß

manne
  Mit Zitat antworten Zitat
maluprog

Registriert seit: 20. Okt 2009
Ort: Wildau
19 Beiträge
 
Delphi 6 Professional
 
#9

AW: Selectieren Listview / ListBox ????

  Alt 7. Okt 2010, 20:29
Bin's nochmal,

letzte Einzelheit bzw. Frage hat sich erledigt, der selectierte Eintrag in "grau" futzt!
Mit dem weiterkopieren oder anderweitigem Verarbeiten des einzelnen Eintrages klappt's!

Danke an alle, Thema hat sich erledigt.

manne
  Mit Zitat antworten Zitat
25. Apr 2011, 21:11
Dieses Thema wurde am "25. Apr 2011, 21:11 Uhr" von "Matze" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "GUI-Design mit VCL / Qt / Common Controls" verschoben.
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 11:56 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