![]() |
ListView-SubItem wird nicht eingetragen
Hallo zusammen,
ich habe mich heute mal ein bisschen an NonVCL probiert um mal ein kleines Tool zu schreiben aber leider hapert es am ListView: Ich durchlaufe mittels RegEnumKeyEx die Registry und suche mir meine Schlüssel raus. Nun sollen bestimmte Schlüsselnamen zu einem Eintrag im ListView führen aber wenn ich in der bedingten Anweisung meinen Buffer mit dem Schlüsselnamen einbaue, werden keine SubItems mehr hinzugefügt:
Delphi-Quellcode:
Nun hoffe ich mir kann da jemand auf die Sprünge helfen.
//...
ZeroMemory(pBuf, pBufLen +1); dwLen := pBufLen +1; ret := RegEnumKeyEx(rkey, i, pBuf, dwLen, nil, nil, nil, nil); if ret = ERROR_SUCCESS then begin if pBuf[0] = 'A' then //if true then -> Test2 erscheint im ListView begin lvi.mask := LVIF_TEXT; lvi.iItem := i; lvi.iSubItem := 0; lvi.pszText := 'Test'; SendMessage(hwndLV, LVM_INSERTITEM, 0, LParam(@lvi)); lvi.iSubItem := 1; lvi.pszText := 'Test2'; SendMessage(hwndLV, LVM_SETITEM, 0, LParam(@lvi)); end; end else break; Inc(i); //... |
Re: ListView-SubItem wird nicht eingetragen
Subitem steht ja auch auf null:
Delphi-Quellcode:
Siehe dazu auch meine Tutorials:
lvi.iSubItem := 0;
![]() |
Re: ListView-SubItem wird nicht eingetragen
Zitat:
Zitat:
|
Re: ListView-SubItem wird nicht eingetragen
Zitat:
Edit: [quote]-Tag geschlossen. |
Re: ListView-SubItem wird nicht eingetragen
Hmm... iSubItem ist doch 1 (siehe erster Beitrag 14. Codezeile)? Oder hab ich riesige Tomaten auf den Augen?
|
Re: ListView-SubItem wird nicht eingetragen
Ups, ich habe den zweiten Eintrag übersehen.
|
Re: ListView-SubItem wird nicht eingetragen
Wichtig wäre vielleicht noch zu sagen, dass pBufLen loischerweise ein PChar ist. An die Größe komme ich so:
Delphi-Quellcode:
Ich hab mich dabei übrigens am NonVCL-Tutorial von Luckie bzw. Mathias Simmack orientiert.
if RegQueryInfoKey(rkey, nil, nil, nil, @KeyCount, @pBufLen, nil, nil, nil,
nil, nil, nil) = ERROR_SUCCESS then begin GetMem(pBuf, pBufLen +1); //... Wie kommt es blos zu diesem seltsamen Verhalten? P.S.: Die Werte, die ausgelesen werden, stimmen und der Code wird vollständig durchlaufen, doch das Subitem kommt nicht im ListView an. |
Re: ListView-SubItem wird nicht eingetragen
Also einen Fehler hab ich zwischendurch gefunden :oops:: Ich hab aufgrund der äußeren Schleife mit falschen Werten für iItem gearbeitet. Kein Wunder, dass da mist bei rumkommt.
Ein Problem habe ich haber immernoch. Ich habe das Befüllen in einen Thread ausgelagert:
Delphi-Quellcode:
Wenn ich das ganze unter Vista laufen lasse funktioniert es solange ich kein Manifest benutze, mit Manifest in der Resource bleibt das ListView leer. Unter XP bleibt es mit und ohne leer. Der Code zum füllen funktioniert nun eigentlich tadellos (wenn ich FillThread einfach so aufrufe statt den Thread zu starten wird das LV unter Vista und XP immer brav gefüllt).
//...
hFillThread := BeginThread(nil, 0, @FillThread, @hwndLV, 0, FillThreadId); //... function FillThread(Param: PDWORD): Integer; var //... hLV: DWORD; begin hLV := Param^; //Code zum füllen... end; //... Was muss ich denn jetzt noch beachten wenn ich das in einen Thread auslagern will? |
Re: ListView-SubItem wird nicht eingetragen
Mit dem Listview und einem Manifest gab es irgendwie Probleme, aber ich meine Mathias hätte dazu auch was in den Tutorials geschrieben.
|
Re: ListView-SubItem wird nicht eingetragen
Leider finde ich im Tutorial nichts dazu... ich fürchte das Problem ist auch eher im Thread begründet, denn unter XP funktioniert ja keine der Varianten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz