Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi IMage in Listview No 10.938.362.092 (https://www.delphipraxis.net/96650-image-listview-no-10-938-362-092-a.html)

napsterxx 28. Jul 2007 10:59


IMage in Listview No 10.938.362.092
 
Hi
Das gibts ja schon halbe Millionenmal in diesem Forum aber trotzdem verstehe ichs einfach nicht ...
Wie kann ich in die erste Spalte einer Listview ein Bild aus einer Paintbox einfügen?

Kurz zu meiner Idee:
Ich öffne einen OpenDialog, wähle eine Datei aus und diese soll dann in die Listview geladen werden. Ganz vorne soll das Icon der Datei sein.

bitsetter 28. Jul 2007 12:13

Re: IMage in Listview No 10.938.362.092
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von napsterxx
Kurz zu meiner Idee:
Ich öffne einen OpenDialog, wähle eine Datei aus und diese soll dann in die Listview geladen werden. Ganz vorne soll das Icon der Datei sein.

Hi,

Das geöffnete Bild würde ich zu einem Bitmap konvertieren und verkleinern. Du müsstest eventuell noch die Proportionalität der Bilder beachten, das habe ich jetzt nicht extra gemacht. Dann fügst du das Bild einer ImageList hinzu und zeigst es dann im Listview an.

napsterxx 28. Jul 2007 17:07

Re: IMage in Listview No 10.938.362.092
 
thx funtzt einwandfrei bloß noch eine frage:

wenn ich nun eine Datei wähle wird diese mit richtigem Icon eingelsen wiederhole ich die prozedur dann dann haben alle einträge das selbe ICON

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  LI: TListItem;
  Count : Integer;
  I : Integer;
  Bmp: TBitmap;
  fa: TFileAttributes;
  TempIcon: HICON;
  Icon:TIcon;
begin
ImageList1.Clear;
  if Open.Execute then
    LX.Items := Open.Files;
    Bmp:= TBitmap.Create;
    Count := LX.Items.Count;
    for I := 0 to Count-1 do
    begin
      LI := Listview1.Items.Insert(0);

      TempIcon := IconFromFile(LX.Items.Strings[I],0);
      Icon:=TIcon.Create;
      Icon.Handle := TempIcon;
      IMageList1.AddIcon(Icon);
      Icon.Free;

      Listview1.SmallImages:= ImageList1;
      LI.Caption:= ExtractFilename(LX.Items.Strings[I]);
      LI.ImageIndex:= i;

      LI.SubItems.Add(inttostr(GetFileSizeEx(LX.Items.Strings[I])));
      LI.SubItems.Add(GetFileTypename(LX.Items.Strings[I]));
      LI.SubItems.Add(DateTimeToStr(GetFileLastAccessTime(LX.Items.Strings[I])));
      fa:=GetFileAttributes(LX.Items.Strings[I]);


      if readonly in fa then
      LI.SubItems.Add('SG')
      else
      LI.SubItems.Add('NSG')
    end;
end;

bitsetter 28. Jul 2007 18:10

Re: IMage in Listview No 10.938.362.092
 
Liste der Anhänge anzeigen (Anzahl: 1)
Deinen Code habe ich ein bisschen umgebaut. Diese Zeile hat jedenfalls Probleme bei mir gemacht, wenn ich das 2. Mal den Opendialog aufgerufen hatte, gab es eine Schutzverletzung.
Delphi-Quellcode:
LX.Items := Open.Files;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 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