Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
|
ListView: LVM_GETITEMTEXT -> Runtime Error
3. Feb 2005, 21:14
Hi Leutz,
hab das Problem, dass ich beim Auslesen einer Zelle einer ListView im Report-Style einen Runtime Error erhalte:
Delphi-Quellcode:
Item.cchTextMax := SendMessage(hWndGradesListView,LVM_GETITEMTEXT,GradesListViewEdit_Item,Integer(@Item))+1;
SendMessage(hWndGradesListView,LVM_GETITEMTEXT,GradesListViewEdit_Item,Integer(@item));
Das Ganze im Zusammenhang mit einer Message Procedure (vom ListView gesubclassed)
Delphi-Quellcode:
var
GradesListViewEdit_Item : Integer;
...
function GradesListView_WndProc(hWnd: hWnd; uMsg: UINT; wP: WPARAM;
lP: LPARAM):LRESULT; stdcall;
var
pt : TPoint;
nItem,nSubItem : Integer;
rc : Trect;
FindRect : Boolean;
Item : TLVItem;
begin
case uMsg of
WM_LBUTTONDOWN:
begin
if not GradesListViewEditEnabled then
begin
//Bestimmt das SubItemRect ...
GetCursorPos(pt);
ScreenToClient(hWndGradesListView,pt);
nItem := SendMessage(hWndGradesListView,LVM_GETSELECTIONMARK,0,0);
if nItem > -1 then
begin
FindRect := FALSE;
nSubItem := 0;
while (not FindRect) and (nSubItem < 10) do
begin
rc.top := nSubItem+1;
rc.left := LVIR_BOUNDS;
SendMessage(hWndGradesListView,LVM_GETSUBITEMRECT,nItem,Integer(@rc));
if (rc.left < pt.x) and (rc.right > pt.x) and (rc.top < pt.y) and (rc.bottom > pt.y) then
FindRect := TRUE;
if not FindRect then
Inc(nSubItem);
end;
if nSubItem = 10 then
nSubItem := -1
else
begin
GradesListViewEditRect := rc;
GradesListViewEdit_Item := nItem;
GradesListViewEdit_SubItem := nSubItem;
Item.iItem := nItem;
Item.iSubItem := nSubItem+1;
//Diese 2 Zeilen führen zum Runtime Error
Item.cchTextMax := SendMessage(hWndGradesListView,LVM_GETITEMTEXT,GradesListViewEdit_Item,Integer(@Item))+1;
SendMessage(hWndGradesListView,LVM_GETITEMTEXT,GradesListViewEdit_Item,Integer(@item));
//Nur wenn ich alle beide Zeilen auskommentiere, kommt kein Fehler mehr, aber dafür auch kein Text ;)
GradesListViewEdit_Text := String(Item.pszText);
end;
end;
end;
end;
end;
Result := CallWindowProc(GradesListViewOldMessageProc,hWnd,uMsg,wP,lP);
end;
Hab keine Ahnung warum ... hab auch schon das entsprechende Macro ListView_GetItemText probiert ... ebenfalls Runtime Error!
Danke im Vorraus für eventuelle Vorschläge!
Thomas Low THX und viel Spaß beim Coden
Cheatzs
|
|
Zitat
|