AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ListView-SubItem wird nicht eingetragen
Thema durchsuchen
Ansicht
Themen-Optionen

ListView-SubItem wird nicht eingetragen

Ein Thema von Mr_G · begonnen am 15. Nov 2008 · letzter Beitrag vom 19. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#1

ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 22:24
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:
//...
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] = 'Athen //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);
//...
Nun hoffe ich mir kann da jemand auf die Sprünge helfen.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 22:56
Subitem steht ja auch auf null:
lvi.iSubItem := 0; Siehe dazu auch meine Tutorials: http://win32api.michael-puff.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 23:01
Zitat von Luckie:
Subitem steht ja auch auf null:
lvi.iSubItem := 0; Siehe dazu auch meine Tutorials: http://win32api.michael-puff.de
Zitat von Mr_G:
Delphi-Quellcode:
//...
lvi.iSubItem := 1; //<--
lvi.pszText := 'Test2';
SendMessage(hwndLV, LVM_SETITEM, 0, LParam(@lvi));
//...
Außerdem hätte das ganze dann auch nicht ohne die if-Anweisung funktioniert, oder übersehe ich da was?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 23:08
Zitat von Mr_G:
Zitat von Luckie:
Subitem steht ja auch auf null:
lvi.iSubItem := 0; Siehe dazu auch meine Tutorials: http://win32api.michael-puff.de
Schau dir dort die Win32API_Tutorials_pdf.pdf an und dort dann Seite 102.

Edit: [quote]-Tag geschlossen.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#5

Re: ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 23:12
Hmm... iSubItem ist doch 1 (siehe erster Beitrag 14. Codezeile)? Oder hab ich riesige Tomaten auf den Augen?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView-SubItem wird nicht eingetragen

  Alt 15. Nov 2008, 23:22
Ups, ich habe den zweiten Eintrag übersehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#7

Re: ListView-SubItem wird nicht eingetragen

  Alt 16. Nov 2008, 10:35
Wichtig wäre vielleicht noch zu sagen, dass pBufLen loischerweise ein PChar ist. An die Größe komme ich so:
Delphi-Quellcode:
if RegQueryInfoKey(rkey, nil, nil, nil, @KeyCount, @pBufLen, nil, nil, nil,
  nil, nil, nil) = ERROR_SUCCESS then
begin
  GetMem(pBuf, pBufLen +1);
  //...
Ich hab mich dabei übrigens am NonVCL-Tutorial von Luckie bzw. Mathias Simmack orientiert.
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.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#8

Re: ListView-SubItem wird nicht eingetragen

  Alt 18. Nov 2008, 22:29
Also einen Fehler hab ich zwischendurch gefunden : 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:
//...
hFillThread := BeginThread(nil, 0, @FillThread, @hwndLV, 0, FillThreadId);
//...
function FillThread(Param: PDWORD): Integer;
var
  //...
  hLV: DWORD;
begin
  hLV := Param^;
  //Code zum füllen...
end;
//...
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).
Was muss ich denn jetzt noch beachten wenn ich das in einen Thread auslagern will?
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: ListView-SubItem wird nicht eingetragen

  Alt 18. Nov 2008, 22:41
Mit dem Listview und einem Manifest gab es irgendwie Probleme, aber ich meine Mathias hätte dazu auch was in den Tutorials geschrieben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#10

Re: ListView-SubItem wird nicht eingetragen

  Alt 18. Nov 2008, 22:55
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.
Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:25 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