Autor Beitrag
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Mo 30.06.03 19:42 
In der DP konnte mir wohl keiner helfen, also bin ich auch mal hier gelandet.
Ich hab ein Listview (kein VCL!) mit dem VS_REPORT-Stil und will dort in einer Spalte (nicht in der ersten!) ein Image einfügen. Das Image hole ich aus einer Imagelist, die ich folgendermaßen erstelle und auffülle:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
hLVImg := ImageList_Create(3216, ILC_COLOR, 03); 
        ImageList_AddIcon(hLVImg, LoadIcon(hInstance, MAKEINTRESOURCE(102))); 
        ImageList_AddIcon(hLVImg, LoadIcon(hInstance, MAKEINTRESOURCE(103))); 
        ImageList_AddIcon(hLVImg, LoadIcon(hInstance, MAKEINTRESOURCE(104))); 
        SendMessage(hIncIPView, LVM_SETIMAGELIST, LVSIL_SMALL, hLVImg);


Das gewünschte Image wird auch in der gewünschten Spalte angezeigt, allerdings nicht nur das. In der ersten Spalte wird immer vor dem Text das erste Image der Imagellist angezeigt, auch wenn dort kein Image stehen soll. So sieht die erste Spalte aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
VItem.mask := LVIF_TEXT;
      LVItem.iItem := rowIndex;
      GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, @PacketRec.inTime, 'HH:mm:ss', @curTime, Length(curTime));
      LVItem.pszText := @curTime;
      SendMessage(hIncIPView, LVM_INSERTITEM, 0, Integer(@LVItem));


Hat einer eine Idee, woran das liegt und wie man es verhindert?

Ach ja, falls es hilft, das Listview wird so errzeugt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
//Listview erzeugen und initialisieren
        hIncIPView := CreateWindowEx(WS_EX_CLIENTEDGE, 'SysListView32'nil,
          WS_VISIBLE or WS_CHILD or LVS_REPORT or LVS_SINGLESEL, 1540465,
          150, hWnd, IDC_INCIPVIEW, hInstance, nil);
        SendMessage(hIncIPView, LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
          LVS_EX_FULLROWSELECT or LVS_EX_SUBITEMIMAGES or LVS_EX_GRIDLINES
          or LVS_EX_INFOTIP or LVS_EX_FLATSB);


Danke schonmal.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 28.07.03 23:04 
www.bendlins.de/nico ... da findest du eine Delphi-Version der Iczelion-Tuts. Da ist auch was zu Listviews dabei.

Oder direkt unter http://assarbad.net/stuff/!import/iczwin32.exe
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 29.07.03 02:51 
Da sthet es aber meines Wissens auch nicht drin. Allerdings bin ich auch gerade gescheitert. :roll:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 29.07.03 06:47 
Die Anzeige des Items lässt sich zwar verhindern:
ausblenden Delphi-Quelltext
1:
2:
LVItem.mask := LVIF_TEXT or LVIF_IMAGE;
LVItem.iImage := I_IMAGENONE; { I_IMAGENONE = -1}

aber dann hat man beim ersten Item trotzdem einen unschön wirkenden freien Bereich, in dem normalerweise das Bild zu sehen ist. IMHO liegt das aber generell an der Zuweisung einer ImageList.
UC-Chewie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Di 29.07.03 17:06 
Oh, ich wusste gar nicht mehr, dass ich hier auch einen Thread aufgemacht hat :wink:

Aber ich habs inzwischen gelöst, und zwar eigentlich ganz simpel:

Die erste Spalte bekommt die Breite 0, und ich schieb den ganzen Rest eine Spalte nach rechts. Damit man sich die Spalte nicht mehr einblenden lassen kann, habe ich das Resizing für die erste Spalte deaktiviert, und zwar, indem ich die LVM_BEGINTRACKA bzw. LVM_BEGINTRACKW abgefangen hab.[/b]

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind