AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Listview Viewstyle zur Laufzeit in List ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Listview Viewstyle zur Laufzeit in List ändern

Ein Thema von virus82 · begonnen am 22. Feb 2010 · letzter Beitrag vom 22. Feb 2010
Antwort Antwort
virus82

Registriert seit: 29. Jun 2007
Ort: Leipzig
34 Beiträge
 
Delphi 2009 Professional
 
#1

Listview Viewstyle zur Laufzeit in List ändern

  Alt 22. Feb 2010, 20:47
Hallo Leute,

heute hab ich etwas sonderbares bemerkt und weiß mir einfach nicht zu helfen.
Ich habe eine Listview mit 21 Items und Viewstyle vsIcon erstellt (siehe Bild 1).

Jetzt ändere ich den Viewstyle auf vsList und die Anzeige wechselt. Jetzt aber das Problem. Es kommt keine Bildlaufleiste und die Items sind falsch angeordnet (Bild 2). Erst wenn ich die Größe der Listview ändere wird sie so angezeigt wie es sin sollte (Bild 3).

Ich hab schon alles mögliche versucht:

Delphi-Quellcode:
ListView1.Update;
ListView1.Refresh;
ListView1.Repaint;
ListView1.Arrange(arDefault);
ListView1.Arrange(arSnapToGrid);
ListView1.Realign;
Leider ohne Erfolg. Irgendwie muß man die Listview doch so aktualisieren können das es richtig angezeigt wird.

Jemand ne Idee?
Miniaturansicht angehängter Grafiken
listview_list_soll_407.jpg   listview_list_692.jpg   listview_icon_191.jpg  
Marco
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Listview Viewstyle zur Laufzeit in List ändern

  Alt 22. Feb 2010, 21:21
Als Notbehelf könntest du die Größe ja im Code ändern:
Delphi-Quellcode:
ListView1.Width := ListView1.Width + 1; // Aktualisierung erzwingen (hoffentlich)
ListView1.Width := ListView1.Width - 1; // alte Größe wiederherstellen
Ungetestet und -elegant.
Uli Gerhardt
  Mit Zitat antworten Zitat
virus82

Registriert seit: 29. Jun 2007
Ort: Leipzig
34 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Listview Viewstyle zur Laufzeit in List ändern

  Alt 22. Feb 2010, 22:30
genau das hab ich auch schon probiert. Funktioniert auch.

Aber vlt kenn ja jemand ne bessere Lösung. Muß ja irgendwie gehen, weil der Windows Explorer kann es ja auch. Dachte schon an irgendeine SendMessage oder so.

Aber danke trotzdem, so hab ich es bisher gemacht, ist halt nicht so elegant.
Marco
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Listview Viewstyle zur Laufzeit in List ändern

  Alt 22. Feb 2010, 22:42
Probier mal das:
Delphi-Quellcode:
procedure SetView(const hLV: HWND; dwView: dword);
var
  dwStyle : dword;
begin
  // unter Win XP wird ein neuer Befehl benutzt,
  // mit dem sich u.a. auch der Tile-View (Kacheln)
  // einschalten lässt
  if (IsWindowsXP) or (IsWindowsVista) then
  begin
    case dwView of
      LVS_ICON:
        ListView_SetView(hLV,LV_VIEW_ICON);
      LVS_SMALLICON:
        ListView_SetView(hLV,LV_VIEW_SMALLICON);
      LVS_LIST:
        ListView_SetView(hLV,LV_VIEW_LIST);
      LVS_REPORT:
        ListView_SetView(hLV,LV_VIEW_DETAILS);
      666:
        ListView_SetView(hLV,LV_VIEW_TILE);
    end;
  // kein Win XP -> dann den bekannten Weg anhand
  // des Codes, der vom PSDK nach Delphi umgesetzt
  // wurde
  end else begin
    dwStyle := GetWindowLong(hLV,GWL_STYLE);

    if(dwStyle and LVS_TYPEMASK <> dwView) then
      SetWindowLong(hLV,GWL_STYLE,
      (dwStyle and not LVS_TYPEMASK) or dwView);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
virus82

Registriert seit: 29. Jun 2007
Ort: Leipzig
34 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Listview Viewstyle zur Laufzeit in List ändern

  Alt 22. Feb 2010, 22:49
Danke, funktioniert super.

Hätte ich auch selbst draufkommen können. Hab ja

ListView_SetView(hLV, LV_VIEW_TILE) benutzt um den Tile View Modus zu aktivieren. Manchmal sieht man den Wald vor lauter bäumen nicht.

Danke an alle Denker zur späten Stunde.
Marco
  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 23: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