AGB  ·  Datenschutz  ·  Impressum  







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

TListView mit AutoArrange - Reihnfolge?!?

Ein Thema von ralfiii · begonnen am 15. Feb 2012 · letzter Beitrag vom 16. Feb 2012
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

TListView mit AutoArrange - Reihnfolge?!?

  Alt 15. Feb 2012, 18:00
Hallo!

Ich hab ein TListView das in der IDE schon einen Eintrag enthält.
Wenn nun zur Laufzeit weitere Einträge hinzugefügt werden (mit .Items.add) dann werden die Einträge in verkehrter Reihenfolge dargestellt.
Also angenommen der IDE-Eintrag ist "huhu" und ich füge 1,2 und 3 dann zeigt das ListView
3 2 1 huhu

Ein Insert an's Ende mit
lvPrinters.Items.Insert(lvPrinters.Items.Count+1);
bringt auch nix, selbes Ergebnis.

Copy-paste ich das ListView in ein anderes Projekt, dann funktioniert es einwandfrei.
Füge ich allerdings in dem anderen Projekt einen Eintrag mit dem IDE-Eintragseditor hinzu, dann dreht sich die Reihnfolge aller Elemente im Listview um.
Ich kapier' das nicht!!!
Hilfe!

---

Ah: Gerade gemerkt: Das Problem in der IDE tritt nur auf bei OwnerDraw=True, aber warum macht das einen Unterschied?!?

Geändert von ralfiii (16. Feb 2012 um 10:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#2

AW: TListView mit AutoArrange - Reihnfolge?!?

  Alt 16. Feb 2012, 10:48
hmmm... hab einen (dirty) Workaround gefunden.

Zum reproduzieren das auf ein Furmular einfügen:

Code:
object ListView1: TListView
  Left = 0
  Top = 0
  Width = 303
  Height = 88
  Align = alTop
  Columns = <>
  IconOptions.AutoArrange = True
  Items.ItemData = {
    03200000000100000000000000FFFFFFFFFFFFFFFF00000000FFFFFFFF000000
    000366006F006F00}
  OwnerDraw = True
  TabOrder = 0
  OnDblClick = ListView1DblClick
  ExplicitWidth = 643
end
und hier der OnDblClick-Event:

Delphi-Quellcode:
procedure TForm1.ListView1DblClick(Sender: TObject);
var lv : TListView;
  listitem : TListItem;
begin
     lv:=Sender as TListView;

     listItem:=lv.Items.Add;
     listItem.Caption:='A';

     listItem:=lv.Items.Add;
     listItem.Caption:='B';

// lv.IconOptions.AutoArrange:=False;
// lv.IconOptions.AutoArrange:=True;
end;
Bleiben die letzen beiden Zeilen auskommentiert sieht man genau das Fehlverhalten der ListView. (Nach einem Doppelklick in's ListView steht da "B A foo".
Kommentiert man die Zeilen ein, dann läuft alles wie es soll. ("foo A B")

Wie gesagt, das löst das Problem, aber es ist halt ein Workaround bei dem ich nicht ganz verstehe warum er nötig ist.
  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 15:41 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