| Autor |
Beitrag |
UC-Chewie
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: 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:
Delphi-Quelltext 1: 2: 3: 4: 5:
| hLVImg := ImageList_Create(32, 16, ILC_COLOR, 0, 3); 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:
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:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| hIncIPView := CreateWindowEx(WS_EX_CLIENTEDGE, 'SysListView32', nil, WS_VISIBLE or WS_CHILD or LVS_REPORT or LVS_SINGLESEL, 15, 40, 465, 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
|
Verfasst: 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
|
Verfasst: Di 29.07.03 02:51
Da sthet es aber meines Wissens auch nicht drin. Allerdings bin ich auch gerade gescheitert. 
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 29.07.03 06:47
Die Anzeige des Items lässt sich zwar verhindern:
Delphi-Quelltext 1: 2:
| LVItem.mask := LVIF_TEXT or LVIF_IMAGE; LVItem.iImage := I_IMAGENONE; |
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 
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: Di 29.07.03 17:06
Oh, ich wusste gar nicht mehr, dass ich hier auch einen Thread aufgemacht hat
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
|
|
|