Hi,
leider auch nicht.
wird kompiliert, es gibt aber sobald ich eine Datei in die Listbox Laden will eine Zugriffsverletzung.
Wenn ich auf Ok drücke, wird ein Icon angezeigt, aber leider nur das von der kopmilierten Anwendung...
Wie krieg ich die Fehlermeldung weg, und wieso wird das symbol vom programm selber geladen?
ich bin nicht mehr weit entfernt vom ziel, ein icon wird wenigstens angezeigt
EDIT:
so hab einen Fehler gefunden:
Delphi-Quellcode:
finally
FreeAndNil(Icon);
OpenDialog.Free;
Form4.Show;
end;
end;
die Zugriffsverletzung ist nur vorhanden, wenn Form4.Show im Code ist.
Hab das dementsprechend, jetz in Form4 geschrieben:
Delphi-Quellcode:
function IconFromFile(const Filename: String; IconNr: Word): HICON;
var
buffer: array[0..2*MAX_PATH]of Char;
begin
StrPCopy(buffer, Filename);
Result := ExtractAssociatedIcon(HInstance, buffer, IconNr);
end;
procedure TForm4.Button1Click(Sender: TObject);
var IconIndex : Integer;
h : hIcon;
S : String;
Icon : TIcon;
Bitmap : TBitmap;
OpenDialog : TOpenDialog;
begin
Icon := TIcon.Create;
IconIndex := 0;
S := OpenDialog.FileName;
h := IconFromFile(OpenDialog.FileName,1);
Icon.Handle := h;
Form2.ImageList1.AddIcon (Icon);
try
Form2.ImageList1.GetIcon(0, Icon);
Form2.Image1.Canvas.Draw(0, 0, Icon);
begin
Form2.ListBox1.Items.Add (Form4.Edit1.Text); //Fügt die ausgewählte Datei in die Listbox ein
Form2.Label2.Caption := OpenDialog.FileName;
Form2.ListBox1.MultiSelect :=False; //Mehrfach Auswahl ist nich möglich
Form2.ListBox1.Sorted :=True;
end; //Sortiert die Einträge
finally
FreeAndNil(Icon);
OpenDialog.Free;
end;
end;
jetzt bekomme ich aber kein Icon Angezeigt, der sagt mir jetzt "Bild kann nur geändert werden, wenn es ein Bitmap enthält"
Aber wenn ich das normal auf Form2 anwende, funktionierts halbwegs.
PS:
Der TOpenDialog ist auf Form2.
EDIT:
Ich bekomme anstatt dem Icon einen 16x16 Ordner angezeigt