AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Icon - Symbol von Dateityp ermitteln (Speicherort)
Thema durchsuchen
Ansicht
Themen-Optionen

Icon - Symbol von Dateityp ermitteln (Speicherort)

Offene Frage von "-Lucky-"
Ein Thema von -Lucky- · begonnen am 12. Mai 2008 · letzter Beitrag vom 14. Mai 2008
Antwort Antwort
Seite 2 von 2     12   
-Lucky-

Registriert seit: 4. Mai 2008
28 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:10
Ich krieg die Krise. Jetzt habe ich schon x Stunden in das kleine Problem gesteckt, es funzt nicht. Es werden einfach keine Icons angezeigt!

Delphi-Quellcode:
procedure Tver.BitBtn18Click(Sender: TObject);
var name,inhalt,bytes,komma: string;
groesse,i,symbol: integer;
Icon: TIcon;
FileInfo: SHFileInfo;
ListItem: TListItem;
begin
if dateinummer >= 500 then ShowMessage('Soviele Dateien können nicht verwaltet werden. Benutzen Sie ein weiteres Bild oder löschen Sie einige Dateien aus der Liste!') else
begin
  dateinummer := dateinummer + 1;
  if OpenDialog3.Execute = true then
  try
    bytes := '';
    name := OpenDialog3.FileName;
    inhalt := FileToString(name);
    dateien[1,dateinummer] := ExtractFileName(name);
    dateien[2,dateinummer] := inhalt;
    SHGetFileInfo(PChar(ExtractFileExt(name)), FILE_ATTRIBUTE_NORMAL, FileInfo,
    SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON or
    SHGFI_ICON or SHGFI_USEFILEATTRIBUTES);
    Icon := TIcon.Create;
    ListItem := Listview1.Items.Add;
    try
      Icon.Handle := FileInfo.hIcon;
      ListItem.ImageIndex := ImageList1.AddIcon(Icon);
    finally
      FreeAndNil(Icon);
    end;
    ListItem.Caption := ExtractFileName(name);
   // ListView1.Items.Add.Caption := ExtractFileName(name);
    groesse := length(dateien[2,dateinummer]);
    i := -1;
    i := length(IntToStr(groesse));
    // sprache abfragen!!! -> Die Amis haben nen andres Komma!!!
    // überprüfen ob datei größer als diese 12 * 3 MB ist, um den Arbeitsspeicher zu schützen.
    komma := ',';
    if (i < 3) and (i > -1) then bytes := IntToStr(groesse) + ' Belse
    if i < 6 then
    begin
      bytes := IntToStr(groesse div 1000);
      bytes := bytes + komma + IntToStr(groesse mod 1000)[1] + ' KB';
    end else if i >= 6 then
    begin
      bytes := IntToStr(groesse div 1000000);
      bytes := bytes + komma + IntToStr(groesse mod 1000000)[1] + ' MB';
    end;
    ListItem.SubItems.Add(bytes);
    ListItem.SubItems.Add('lol');
    ListItem.SubItems.Add(name);
    ListItem.Checked := true;
  except
    ShowMessage('Es ist ein Fehler aufgetreten. Die Datei konnte nicht geladen werden.');
  end;
end;
end;
Und auch krieg ich die Daten aus dem Array in kein Stream gepackt

Delphi-Quellcode:
procedure Tver.Button4Click(Sender: TObject);
var strom: TMemoryStream;
i: integer;
text: string;
begin
// dateinummer = anzahl der dateien beginnend mit 1
strom := TMemoryStream.Create;
strom.Write(dateinummer,SizeOf(dateinummer));
for i:= 1 to dateinummer do
begin
  text := 'Jetzt will ichs wissen!';
  strom.Write(dateien[1,i],sizeof(dateien[1,i]));
  strom.Write(dateien[2,i],sizeof(dateien[2,i]));
  strom.Write(text,sizeof(text));
end;
text := '';
text := memoryToString(strom);
ShowMessage(IntToStr(length(text)));
strom.Free;
end;
Der Text ist unheimlich kurz und besteht nur aus nen 12 Sonderzeichen obwohl mehr drin ist.
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#12

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:21
ist ImageList1 ListView1.SmallIcons zugewiesen?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
-Lucky-

Registriert seit: 4. Mai 2008
28 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:40
Zitat von tomsel:
ist ImageList1 ListView1.SmallIcons zugewiesen?
Das habe ich jetzt nicht ganz verstanden.

ListItem.ImageIndex := ImageList1.AddIcon(Icon); ListView1.SmallIcons existiert nicht
  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
 
#14

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:56
Guck mal im Objektinspektor, da kannst du das wunderbar zuweisen.
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#15

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:59
Ich hab da mal n fetzen Code für dich, den ich vor ca. 5 Jahren mal gefunden hab. Er zwar nicht sehr gut, aber er funktioniert (bei mir ):

Diese Funktion im FormCreate-Event aufrufen:
Delphi-Quellcode:
procedure Createimages;
var
 SysIL : uint;
 SFI : TSHFileInfo;
begin
  LargeImages := TImageList.Create(MainForm);
  SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
  if SysIL <> 0 then begin
    LargeImages.Handle := SysIL;
    LargeImages.ShareImages := TRUE;
  end;
  SmallImages := TImageList.Create(MainForm);
  SysIL := SHGetFileInfo('', 0, SFI, SizeOf(SFI), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
  if SysIL <> 0 then begin
    SmallImages.Handle := SysIL;
    SmallImages.ShareImages := TRUE;
  end;
  MainForm.ListView.LargeImages:=LargeImages;
  MainForm.ListView.SmallImages:=SmallImages;
end;
Und dann einfach einlesen:
Delphi-Quellcode:
procedure VerzeichnisEinlesen(VerzName:string);
var NewItem : TListItem;
    Info : TSHFileInfo;
    SR : TSearchRec;
begin
  MainForm.ListView.Items.BeginUpdate;
  if VerzName[length(VerzName)]<>'\then
    VerzName:=VerzName+'\';
  with MainForm do begin
    ListView.Items.Clear;
    if FindFirst(VerzName+'*.*',faAnyFile,SR)=0 then begin
      repeat
        if (length(SR.Name)>0) and (SR.Name[1]<>'.') then begin
          NewItem:=ListView.Items.Add;
          NewItem.Caption:=SR.Name;
          SHGetFileInfo(PChar(VerzName+SR.Name),0,Info,SizeOf(TSHFileInfo),SHGFI_SYSIconIndex or SHGFI_TYPENAME);
          NewItem.ImageIndex:=Info.IIcon;
          NewItem.SubItems.Add(Info.szTypeName);
        end;
      until FindNext(SR)<>0;
      FindClose(SR);
    end;
  end;
  MainForm.ListView.Items.EndUpdate;
end;
Wenn du das hast, musst du einfach noch SHGetFileInfo anpassen (nur die Extension und ich glaub, du musst noch einen Parameter am schluss mir OR hinzufügen)
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
LordPsychoter

Registriert seit: 6. Mai 2008
Ort: 48720
55 Beiträge
 
Delphi 7 Professional
 
#16

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 12:59
Zitat von -Lucky-:
Ich krieg die Krise. Jetzt habe ich schon x Stunden in das kleine Problem gesteckt, es funzt nicht. Es werden einfach keine Icons angezeigt!
Ist deine TImageList gefüllt und wurde die TImageList auch zugewiesen (Objektinspektor -> Images)?

lg
LordPsychoter
  Mit Zitat antworten Zitat
-Lucky-

Registriert seit: 4. Mai 2008
28 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Icon - Symbol von Dateityp ermitteln (Speicherort)

  Alt 14. Mai 2008, 13:34
Zitat:
Ist deine TImageList gefüllt und wurde die TImageList auch zugewiesen (Objektinspektor -> Images)?
Na das Bild wird doch erst in der Laufzeit eingefügt.
  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 07:49 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