AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView Item Text herausfinden

Ein Thema von TonyMontana · begonnen am 20. Jan 2008 · letzter Beitrag vom 20. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

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

Re: ListView Item Text herausfinden

  Alt 20. Jan 2008, 13:08
Auch als normales Fenster benutze ich die Dialog-Nachrichten, dann muss ich mir nicht die Handles merken, sondenr kann die vergebenen IDs verwenden. Bzw. ich muss mir das Handle nicht erst wieder über GetDlgItem holen:
SendMessage(GetDlgItem(handle, IDC_LISTVIEW1), ..., ..., ...) ist gleichbedeutend mit
SendDlgItemMessage(Handle, ID, ..., ..., ...);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: ListView Item Text herausfinden

  Alt 20. Jan 2008, 13:58
Ja Luckie. Das gab keinen bestimmten Grund. Es war ja auch eine Frage meinerseits und eine auf Grund dessen, dass ich nicht ständig nonVCL programmiere, ein etwas unglücklicher weiterführender Hinweis. Falsch war er ja nicht. (es gäbe ja auch noch so einen Listview_Getitem Makro....)
Und der OP kann sich selber raussuchen wir er mit den Hinweisen weiter umgeht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
TonyMontana
(Gast)

n/a Beiträge
 
#13

Re: ListView Item Text herausfinden

  Alt 20. Jan 2008, 16:23
Also ich habs finally doch schon bereits Gestern hinbekommen, evtl. findet der ein oder andere ja noch nen Fehler:

Delphi-Quellcode:
var
lvc: TLVColumn;
///////////////////////////////////
                   ImageListSm := ImageList_Create(16,16,ILC_COLOR32,0,1);
                   ImageList_AddIcon(ImageListSm,LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON2)));
                   SendDlgItemMessage(handle, IDC_LISTVIEW1, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListSm);
                   ImageListNo := ImageList_Create(32,32,ILC_COLOR32,0,1);
                   ImageList_AddIcon(ImageListNo,LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON2)));
                   SendDlgItemMessage(handle, IDC_LISTVIEW1, LVM_SETIMAGELIST, LVSIL_NORMAL, ImageListNo);
                   lvc.mask := LVCF_TEXT or LVCF_WIDTH;
                   lvc.pszText := 'Datei';
                   lvc.cx := 250;
                   SendMessage(GetDlgItem(handle, IDC_LISTVIEW1), LVM_INSERTCOLUMN, 0, Integer(@lvc));
                   lvc.pszText := 'Size';
                   lvc.cx := 180;
                   SendMessage(GetDlgItem(handle, IDC_LISTVIEW1), LVM_INSERTCOLUMN, 1, Integer(@lvc));
                   SetView(GetDlgItem(handle, IDC_LISTVIEW1), LVS_REPORT);
und

Delphi-Quellcode:
var
i: integer;
lvitem: TLVItem;
iItem: Integer;
///////////////////////
  i := filesize;
  lvitem.mask := LVIF_TEXT or LVIF_IMAGE;
  lvitem.iImage := 0;
  lvitem.pszText := 'bla';
  lvitem.cchTextMax := MAX_PATH;
  iItem := SendDlgItemMessage(dialoghandle, IDC_LISTVIEW1, LVM_INSERTITEM, 0, Integer(@lvitem));
  ListView_SetItemText(GetDlgItem(dialoghandle, IDC_LISTVIEW1), iItem, 1, pchar(inttostr(i div 1024)+'K'));
Noch ne Frage am Rande...

Ich habe folgendes:
Delphi-Quellcode:
var
pc: pchar;
///////////////////////////////////
                             getmem(pc, MAX_PATH);
                             lvitem.cchTextMax := MAX_PATH;
                             lvitem.pszText := pc;
                             ...
                             freemem(pc);
Ist das so korrekt? ODER soll ich getmem(pc, MAX_PATH + 1); reservieren (weil ja die variable pc ja null-terminiert ist und deshalb nen byte mehr braucht als in cchTextMax angegeben!)? und muss man für die Klassen TLVItem und TLVColumn jetzt Speicher reservieren oder nicht? Und ist es ratsam, zeromemory(@lvitem, SizeOf(lvitem)); zu benutzen? Das initialisiert ja sozusagen nur die klasseninstanz reserviert aber keinen Speicher, ODER? Jedenfalls läuft es fehlerfrei... Soll aber auch bei anderen Fehlerfrei laufen.

An dieser Stelle schon mal Danke an Luckie!!!!

Mir hat das WinAPI Tut hier durchaus etwas geholfen.

BTW: Die MSDN macht mich fertig, sau unübersichtlich und dann muss ich auch noch von c nach delphi umdenken ...

----------
EDIT:
Ok also ich habe mir jetzt auch mal angesehen, was ihr so gepostet hattet. Gehe ich richtig in der Annahme, dass GetMem hier 255 Bytes für die Zeichen reserviert und AUTOMATISCH noch ein extra Byte für das #0-Byte? Muss man sich also um das #0-Byte speichertechnisch keine Sorgen machen??? Jedenfalls versth ich gerade nicht, warum da 255 Bytes alloziert (heißt das so?) werden und dann die cchTextMax Variable auf 256 gesetzt wird... Oder bezieht sich cchTextMax auf die Länge in Bytes PLUS das #0-Byte???
Delphi-Quellcode:
    GetMem(Buffer, 255);
    ...
      lvi.cchTextMax := 256;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:23 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