Windows system icons
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Windows system icons
Hallo,
jetzt arbeite ich mich schon einige Wochen in Lazarus ein, stoße jedoch immer wieder an meine Grenzen.
Bei der Erstellung eines FTP Clients habe ich eine Imagelist verwendet, um Verzeichnisse, sowie Dateien mit einem Icon anzeigen zu können. Zu diesem Zweck habe ich vorhandene und eigene Icons verwendet.
Jetzt gefällt mir dass aber nicht so richtig, denn ich finde, es ist sinnvoller Icons zu verwenden, die der User kennt (die vom windows system genutzten Icons), aber, ich weiss nicht wie ich da ran komme.
Kann mir hier jemand helfen, und mir sagen, wo ich nachschauen kann?
Mit freundlichem Gruß
Ralph
jetzt arbeite ich mich schon einige Wochen in Lazarus ein, stoße jedoch immer wieder an meine Grenzen.
Bei der Erstellung eines FTP Clients habe ich eine Imagelist verwendet, um Verzeichnisse, sowie Dateien mit einem Icon anzeigen zu können. Zu diesem Zweck habe ich vorhandene und eigene Icons verwendet.
Jetzt gefällt mir dass aber nicht so richtig, denn ich finde, es ist sinnvoller Icons zu verwenden, die der User kennt (die vom windows system genutzten Icons), aber, ich weiss nicht wie ich da ran komme.
Kann mir hier jemand helfen, und mir sagen, wo ich nachschauen kann?
Mit freundlichem Gruß
Ralph
- Dateianhänge
-
- So stell ich mir dass vor
- ftpClient2.jpg (54.86 KiB) 3417 mal betrachtet
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
Re: Windows system icons
Hallo Ralph59
Deine Icons sind doch schön. Ansonsten nimm einen Icongrabber und mache selber welche, indem Du die von Windows mit dem Grabber direkt abkopierst oder Du googelst nach:
Guckst Du hier:
http://www.chip.de/downloads/Vista-Icon ... 40082.html
oder hier ein free Icongrabber mit vielen Icons:
http://www.suedwest-pc.de/the_simple_ic ... -3746.html
Hoffe es hilft Dir. Aber meine Meinung ist, dass Deine Icons schön sind und so unter uns, einen eigenen Touch können doch Deine Programme schon haben oder?
Peter
Deine Icons sind doch schön. Ansonsten nimm einen Icongrabber und mache selber welche, indem Du die von Windows mit dem Grabber direkt abkopierst oder Du googelst nach:
Guckst Du hier:
http://www.chip.de/downloads/Vista-Icon ... 40082.html
oder hier ein free Icongrabber mit vielen Icons:
http://www.suedwest-pc.de/the_simple_ic ... -3746.html
Hoffe es hilft Dir. Aber meine Meinung ist, dass Deine Icons schön sind und so unter uns, einen eigenen Touch können doch Deine Programme schon haben oder?
Peter
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Windows system icons
Hallo Peter,
ich gebe Dir ja recht, dass ein gewisser eigener Touch Software bloss schöner macht, aber wenn ich z.B. eine html Datei anzeige, dann sollte der User natürlich auch den von Ihm genutzten Programmicon (Mozilla, Firefox, MS Internet Explorer oder...) angezeigt bekommen.
Oder wenn jemand .prg . php oder was auch immer mit Notepad++, ultraedit oder was auch immer bearbeitet, dann sollten die icons auch dem entsprechen.
Dass hätte, finde ich auch einen gewissen Scharm.
Ich mache doch schon schöne Buttons, oder versuche es.
Mit freundlichem Gruß
Ralph
ich gebe Dir ja recht, dass ein gewisser eigener Touch Software bloss schöner macht, aber wenn ich z.B. eine html Datei anzeige, dann sollte der User natürlich auch den von Ihm genutzten Programmicon (Mozilla, Firefox, MS Internet Explorer oder...) angezeigt bekommen.
Oder wenn jemand .prg . php oder was auch immer mit Notepad++, ultraedit oder was auch immer bearbeitet, dann sollten die icons auch dem entsprechen.
Dass hätte, finde ich auch einen gewissen Scharm.
Ich mache doch schon schöne Buttons, oder versuche es.
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Re: Windows system icons
Seit einigen Jahren habe ich eine eigene Palette an Icons selbst entworfen. Das war verdammt viel Arbeit und es kommen noch laufend welche hinzu. Ein Icon ist nicht nur ein Icon. Für mich sollte es auch einen Wiedererkennungswert haben, und repräsentiert so etwas wie das äussere Erscheinungsbild und die Unternehmenskultur einer Firma.
Corporate Identity.
(CI, auch Unternehmensidentität) ist der abgestimmte Einsatz von Verhalten, Kommunikation und Erscheinungsbild nach innen und außen. Basis dafür ist das Unternehmensleitbild, welches durch die Corporate Identity mit Leben gefüllt wird. Ziel der Corporate Identity ist eine nachhaltige Unternehmensentwicklung. Die CI ist also die Persönlichkeit einer Organisation, die als einheitlicher Akteur handelt und wahrgenommen wird.
(Aus Wikipedia)
Warum also den Markführer nachäffen? Meine Programme wirst Du aus Tausenden sofort heraus erkennen, alleine am äusseren Erscheinungsbild und an den Icons. Für mich war das der richtige Weg und deshalb bleibe ich dabei. Gestern habe ich 4 Stunden für die neue Icon Collection für meinen neuen FBTeacher, einem Schulungsprogramm für die embedded firebird Datenbank investiert. Und es macht auch richtig Spass, seiner souveränen, schöpferischen Kreativität die Sporen zu geben.
Natürlich ist es ein Leichtes , ein entsprechendes Icon aus einer Windows Bibliothek zu extrahieren, dafür gibt es Dutzende von Freeware Programmen, aber wirft das nicht auch Urheberrechtsprobleme auf ?
Design und Funktionalität müssen eine Einheit sein, wenn der Benutzer diese Harmonie und diese Stimmigkeit spürt, nimmt er das neue Programm gerne an.
Manche verwenden auch noch 16*16 Icons mit 16 Farben, das ist meineserachtens eine Beleidigung fürs Auge, denn Icons sollten auch ergonomisch sein, denn es gibt auch Menschen, die Sehprobleme haben, wie ich, der ich von Kindes Beinen an kurzsichtig bin und eine Brille tragen muss .
Wenn Du aber partou gute kostenlose Icons brauchst, dann guckst Du hier:
http://nerdbusiness.com/blog/5978-high- ... rss-page-3
oder hier:
http://freeiconsweb.com/toolbar_icons.html
oder hier:
http://www.iconspedia.com/pack/crystal- ... ions-1303/
Viel Spass beim Stöbern.
Corporate Identity.
(CI, auch Unternehmensidentität) ist der abgestimmte Einsatz von Verhalten, Kommunikation und Erscheinungsbild nach innen und außen. Basis dafür ist das Unternehmensleitbild, welches durch die Corporate Identity mit Leben gefüllt wird. Ziel der Corporate Identity ist eine nachhaltige Unternehmensentwicklung. Die CI ist also die Persönlichkeit einer Organisation, die als einheitlicher Akteur handelt und wahrgenommen wird.
(Aus Wikipedia)
Warum also den Markführer nachäffen? Meine Programme wirst Du aus Tausenden sofort heraus erkennen, alleine am äusseren Erscheinungsbild und an den Icons. Für mich war das der richtige Weg und deshalb bleibe ich dabei. Gestern habe ich 4 Stunden für die neue Icon Collection für meinen neuen FBTeacher, einem Schulungsprogramm für die embedded firebird Datenbank investiert. Und es macht auch richtig Spass, seiner souveränen, schöpferischen Kreativität die Sporen zu geben.
Natürlich ist es ein Leichtes , ein entsprechendes Icon aus einer Windows Bibliothek zu extrahieren, dafür gibt es Dutzende von Freeware Programmen, aber wirft das nicht auch Urheberrechtsprobleme auf ?
Design und Funktionalität müssen eine Einheit sein, wenn der Benutzer diese Harmonie und diese Stimmigkeit spürt, nimmt er das neue Programm gerne an.
Manche verwenden auch noch 16*16 Icons mit 16 Farben, das ist meineserachtens eine Beleidigung fürs Auge, denn Icons sollten auch ergonomisch sein, denn es gibt auch Menschen, die Sehprobleme haben, wie ich, der ich von Kindes Beinen an kurzsichtig bin und eine Brille tragen muss .
Wenn Du aber partou gute kostenlose Icons brauchst, dann guckst Du hier:
http://nerdbusiness.com/blog/5978-high- ... rss-page-3
oder hier:
http://freeiconsweb.com/toolbar_icons.html
oder hier:
http://www.iconspedia.com/pack/crystal- ... ions-1303/
Viel Spass beim Stöbern.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2
- Garfield
- Beiträge: 172
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Windows system icons
Eigene Icon sind sicher etwas schönes. Aber wenn ich
richtig verstehe, sind die für einen Dateityp usw registrierten Icon gemeint.
Unter Windows hilft da SHGetFileInfo weiter.
http://msdn.microsoft.com/en-us/library/bb762179(VS.85).aspx
Ein Delphi-Beispiel: http://www.delphipraxis.net/topic153487_icon+anhand+des+dateitypen+ermitteln.html
Ralph59 hat geschrieben:... um Verzeichnisse, sowie Dateien mit einem Icon anzeigen zu können. ...
richtig verstehe, sind die für einen Dateityp usw registrierten Icon gemeint.
Unter Windows hilft da SHGetFileInfo weiter.
http://msdn.microsoft.com/en-us/library/bb762179(VS.85).aspx
Ein Delphi-Beispiel: http://www.delphipraxis.net/topic153487_icon+anhand+des+dateitypen+ermitteln.html
Gruß Garfield
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Windows system icons
Hallo,
danke für die nette Anregung, habe es auch gleich mal probiert:
mit folgendem Erfolg
1. Habe ich ein Form erstellt, und da das Icon ausgetauscht, funktionier recht gut
Also wird zum mindest das Icon zurück gegeben.
Dann habe ich versuchet meine Imagelist it dem Icon zu füllen, dabei bekomme ich jedoch eine -1 zurückgegeben
-1 bedeutet:AddIcon - add an icon to the list, returning the index of the icon or -1 if not successful (not yet supported)
hiermit habe ich es versucht:
Besteht eine andere Möglichkeit ein TIcon in eine ImageList einzufügen?
Hier das Bild vom Icon, dass ich in die Form eingetragen habe:
danke für die nette Anregung, habe es auch gleich mal probiert:
mit folgendem Erfolg
1. Habe ich ein Form erstellt, und da das Icon ausgetauscht, funktionier recht gut
Code: Alles auswählen
form1.Icon:=GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true);
Also wird zum mindest das Icon zurück gegeben.
Dann habe ich versuchet meine Imagelist it dem Icon zu füllen, dabei bekomme ich jedoch eine -1 zurückgegeben
-1 bedeutet:AddIcon - add an icon to the list, returning the index of the icon or -1 if not successful (not yet supported)
hiermit habe ich es versucht:
Code: Alles auswählen
showmessage(inttostr(imagelist1.AddIcon(GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true))));
Besteht eine andere Möglichkeit ein TIcon in eine ImageList einzufügen?
Hier das Bild vom Icon, dass ich in die Form eingetragen habe:
- Dateianhänge
-
- icon.jpg (3.89 KiB) 3362 mal betrachtet
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Re: Windows system icons
Wenn Du die visuelle Komponente ImageList auswählst und mit der rechten Maustatse anklickst, dann kommt ein Kontextmenu, daraus wählst Du den Bildlisteneditor, mit dem Du die ImageList befüllen kannst.
Wenn Du zum Beispiel eine Toolbar mit einer ImageList verbindest, dann hat der erste Button auch immer den Index -1, dabei muss der Index immer mit 0 anfangen(das kannst Du im Objektinspektor ändern) und dann fortlaufend erhöht werden, erst dann wird auch das Icon in dem ToolButton der Toolbar angezeigt. Fügst Du einen zweiten Button ein, dann hat der wieder den Index -1, obwohl der dann 1 haben müsste.
Wenn Du zum Beispiel eine Toolbar mit einer ImageList verbindest, dann hat der erste Button auch immer den Index -1, dabei muss der Index immer mit 0 anfangen(das kannst Du im Objektinspektor ändern) und dann fortlaufend erhöht werden, erst dann wird auch das Icon in dem ToolButton der Toolbar angezeigt. Fügst Du einen zweiten Button ein, dann hat der wieder den Index -1, obwohl der dann 1 haben müsste.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Windows system icons
Hallo Namensvetter,
dass mit dem Bildlisteneditor habe ich auch schon rausgefunden, aber das ist nicht mein Problem.
Ich lese ein Icon aus einer Datei aus, in meinem Beispiel eine .exe es könnte aud eine .pas Datei sein, die müsste dann in meinem FTP Client auch anders dargestellt werden. Dieses habe ich mit
hier der Quelltext dazu
zurück bekomme ich auch das Icon, kann dieses jedoch nicht an meine ImageList zu Laufzeit anhängen.
Das Icon in der Form wird angezeigt, s. oben
habe dann dieses probiert,
Beim Versuch das erst einmal in eine Datei zu scheiben, "ich könnte ja evtl. ein Verzeichnis durchsuchen, ob eine entsprechende Datei vorhanden ist, wenn ja, dann lade den entsprechenden index...)
Auber auch das funktioniert nicht.
Habe es hiermit versucht:
Die Datei wird zwar erstellt, habe diese versucht zu öffnen, mit Fehlermeldungen.
Beim öffnen mit einem editor steht volgendes drin s. Anhang in HEX:
dass mit dem Bildlisteneditor habe ich auch schon rausgefunden, aber das ist nicht mein Problem.
Ich lese ein Icon aus einer Datei aus, in meinem Beispiel eine .exe es könnte aud eine .pas Datei sein, die müsste dann in meinem FTP Client auch anders dargestellt werden. Dieses habe ich mit
Code: Alles auswählen
GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true)
hier der Quelltext dazu
Code: Alles auswählen
uses
... ShellAPI
...
function GetFileIcon(const FileName: string; const FileMustExist: Boolean): TIcon;
var
FI: TSHFileInfo;
Attributes: DWORD;
Flags: Word;
begin
if FileMustExist then
begin
Attributes := 0;
Flags := SHGFI_ICON or SHGFI_LARGEICON;
end
else
begin
Attributes := faAnyFile ;//FILE_ATTRIBUTE_NORMAL;
Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_LARGEICON;
end;
if SHGetFileInfo(PChar(FileName), Attributes, FI, SizeOf(FI), Flags) <> 0 then
begin
result := TIcon.Create;
Result.Handle := FI.hIcon;
end;
end;
zurück bekomme ich auch das Icon, kann dieses jedoch nicht an meine ImageList zu Laufzeit anhängen.
Das Icon in der Form wird angezeigt, s. oben
habe dann dieses probiert,
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
BMP :TBitmap;
i:integer;
begin
//funktioniert
form1.Icon:=GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true);
// geht nicht, bringt -1 zurück
imagelist1.AddIcon(GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true))
//Dieses funktioniert auch
Bmp := TBitmap.Create;
Bmp.LoadFromFile('C:\Programme\lazarus\source\div_Beitraege\icon.bmp');
Bmp.Transparent := True;
Bmp.TransparentMode := tmAuto;
imageList1.Add(Bmp , Bmp); //(Bmp , Bmp.TransParentColor);
i:=imagelist1.Add(Bmp , Bmp);
listview1.Items.Item[0].Caption:='Test mit Icon';
listview1.Items.Item[0].ImageIndex:=i;
end;
Beim Versuch das erst einmal in eine Datei zu scheiben, "ich könnte ja evtl. ein Verzeichnis durchsuchen, ob eine entsprechende Datei vorhanden ist, wenn ja, dann lade den entsprechenden index...)
Auber auch das funktioniert nicht.
Habe es hiermit versucht:
Code: Alles auswählen
GetFileIcon('C:\Programme\lazarus\source\ftp4\project1.exe', true).SaveToFile('C:\Programme\lazarus\source\div_Beitraege\ralph.ico');
Die Datei wird zwar erstellt, habe diese versucht zu öffnen, mit Fehlermeldungen.
Beim öffnen mit einem editor steht volgendes drin s. Anhang in HEX:
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
- Garfield
- Beiträge: 172
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Windows system icons
In der TImageList muss die Größe der Images angegeben werden und dann können nur Images mit dieser Größe eingefügt werden.
Gruß Garfield
-
- Beiträge: 374
- Registriert: Mi 13. Sep 2006, 15:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Hagen a.T.W.
- Kontaktdaten:
Re: Windows system icons
Ja, das setzte ich jetzt als selbstverständlich voraus.
Pentium 4 - 2GB - Debian Lenny - Gnome 2.22.3 - Nvidia 8600 GT - FPC 2.2.2 - Lazarus 0.9.26 - GTK2
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Windows system icons
Ja, das habe ich auch schon gelesen, deshalb habe ich auch folgendes probiert
hatte jedoch auch nicht zum gewünschten Erfolg geführt. Bei meiner Suche bin ich jedoch auch auf folgendes gestoßen:
http://forum.lazarus.freepascal.org/ind ... pic=2140.0
Der hatte das gleiche Problem, handelt es sich hier vieleicht um ein bug sorry feature
Mit freundlichem Gruß
Ralph
Code: Alles auswählen
result1.Height:=16;
result1.Width:=16;
result1.Transparent:=false;
hatte jedoch auch nicht zum gewünschten Erfolg geführt. Bei meiner Suche bin ich jedoch auch auf folgendes gestoßen:
http://forum.lazarus.freepascal.org/ind ... pic=2140.0
Der hatte das gleiche Problem, handelt es sich hier vieleicht um ein bug sorry feature
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
- Garfield
- Beiträge: 172
- Registriert: Do 5. Jun 2008, 22:07
- OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
- CPU-Target: 64Bit
- Wohnort: Aken
Re: Windows system icons
Bei mir hat GetFileIcon weder mit Lazarus noch mit TurboDelphi funktioniert.
Unter TurboDelphi läuft das zwar auch nicht so, wie es soll, aber unter Lazarus funktionieren die letzten beiden Befehle nicht: Error: No member is provided to access property. Anscheinend ist das eine Nur-Lesen-Eigenschaft.
Sicher, dass er das selbe Problem hatte. Er hatte das Problem, dass er mit dem Befehl
das Icon gleich wieder zerstört hat. Mit Delphi 7 bekomme ich da ein Icon mit einer zu geringen Farbtiefe. Lazarus speichert irgendetwas und gibt eine Fehlermeldung aus. Wenn man sich die Größe des Icons ausgeben lässt, ist es 0x0 Pixel groß?
Code: Alles auswählen
TForm1 = class(TForm)
...
private
{ private declarations }
FLargeImageList: TImageList;
FSmallImageList: TImageList;
function GetIcon: Boolean;
public
{ public declarations }
end;
function Shell_GetImageLists(LargeList: PCardinal; SmallList: PCardinal): Boolean; stdcall; external 'shell32.DLL' name 'Shell_GetImageLists';
implementation
function TForm1.GetIcon: Boolean;
type
HIMAGELIST = THandle;
var
HLargeImageList: HIMAGELIST;
HSmallImageList: HIMAGELIST;
begin
FLargeImageList := TImageList.Create(nil);
FLargeImageList.Height := 32;
FLargeImageList.Width := 32;
FSmallImageList := TImageList.Create(nil);
FSmallImageList.Height := 16;
FSmallImageList.Width := 16;
HLargeImageList := 0;
HSmallImageList := 0;
Shell_GetImageLists(@HLargeImageList, @HSmallImageList);
Result := (HLargeImageList > 0) and (HSmallImageList > 0);
if HLargeImageList > 0
then FSmallImageList.Handle := HLargeImageList;
if HSmallImageList > 0
then FSmallImageList.Handle := HSmallImageList;
end;
...
Unter TurboDelphi läuft das zwar auch nicht so, wie es soll, aber unter Lazarus funktionieren die letzten beiden Befehle nicht: Error: No member is provided to access property. Anscheinend ist das eine Nur-Lesen-Eigenschaft.
Ralph59 hat geschrieben:http://forum.lazarus.freepascal.org/index.php?topic=2140.0
Der hatte das gleiche Problem, handelt es sich hier vieleicht um ein bug sorry feature
Sicher, dass er das selbe Problem hatte. Er hatte das Problem, dass er mit dem Befehl
Code: Alles auswählen
DestroyIcon(FileInfo.hIcon);
das Icon gleich wieder zerstört hat. Mit Delphi 7 bekomme ich da ein Icon mit einer zu geringen Farbtiefe. Lazarus speichert irgendetwas und gibt eine Fehlermeldung aus. Wenn man sich die Größe des Icons ausgeben lässt, ist es 0x0 Pixel groß?
Gruß Garfield
-
- Beiträge: 145
- Registriert: So 22. Mär 2009, 07:48
- OS, Lazarus, FPC: WIN 11 (momentan )
- CPU-Target: 64 und 32Bit
- Wohnort: Hessen
- Kontaktdaten:
Re: Windows system icons
Hallo,
habe noch ein wenig weiter getestet und folgendes festgestellt:
1. Als erstes habe ich jetzt versucht nur ein Icon aus einer Datei zu laden und dieses dann als icon von einem Form darzustellen, das funktioniert.
2. Danach habe ich versucht dieses in eine Imagelist einzufügen, dieses geht nicht
3. Dann habe ich versucht, das icon als Datei zu speichern, dieses funktioniert auch.
Also, ich glaube jetzt schon bald, dass die Funktion AddIcon einfach nicht unterstützt wird,-leider-
Ich glaube, jetzt weiss ich erst mal nicht mehr weiter
Mit freundlichem Gruß
Ralph
habe noch ein wenig weiter getestet und folgendes festgestellt:
1. Als erstes habe ich jetzt versucht nur ein Icon aus einer Datei zu laden und dieses dann als icon von einem Form darzustellen, das funktioniert.
2. Danach habe ich versucht dieses in eine Imagelist einzufügen, dieses geht nicht
3. Dann habe ich versucht, das icon als Datei zu speichern, dieses funktioniert auch.
Also, ich glaube jetzt schon bald, dass die Funktion AddIcon einfach nicht unterstützt wird,-leider-
Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
var
icon1:TIcon;
begin
// Funktioniert leider nicht, wurde ja schon weiter oben getestet
form1.FSmallImageList.AddIcon(GetFileIcon('C:\Programme\lazarus\source\dir2\project1.exe', true));
// erstelle Icon
icon1 := TIcon.Create;
icon1.SetSize(16,16);
icon1.LoadFromFile('C:\Programme\lazarus\source\dir2\ftp.ico');
form1.Icon:=icon1; //funktioniert, Icon wird angezeigt
icon1.SaveToFile('C:\Programme\lazarus\source\dir2\ftp33.ico'); // geht auch, datei wird gespeichert
showmessage(inttostr(form1.FSmallImageList.Count)); // steht momentan 1 Icon drin
showmessage('Images in icon1'+inttostr(icon1.Count)); // ist auch 1,
showmessage('Rueckgabe; '+ inttostr(form1.FSmallImageList.AddIcon(icon1))); //gibt leider wieder -1
form1.FSmallImageList.AddIcon(icon1); // es geht einfach nicht,
icon1.Free;
showmessage(inttostr(form1.FSmallImageList.Count)); // ist demnach immer noch 1
...
end;
Ich glaube, jetzt weiss ich erst mal nicht mehr weiter
Mit freundlichem Gruß
Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.
Re: Windows system icons
Bin gerade selber auf der Suche,
das Problem scheint in Lazarus weiterhin
ungelöst zu sein .. auch jetzt (DEZ 2010)
konnte ich bisher keine funktionierende
Lösung er"googeln"
Dafür zwei Links, an denen ich mich heute versuchen möchte:
Name (lokalisiert) und Icon von Shell-Objekten erhalten:
http://www.delphipraxis.net/551825-post.html#641170
Title: TListView (egal, es ´geht ja um's Icon laden ..):
http://forum.lazarus.freepascal.org/ind ... opic=753.0
(Achso, und: http://support.microsoft.com/kb/319350 )
Falls jemand mittlerweile einen Weg weiß,
wie man in LAZARUS die Windows System Icons
in den TTREEVIEW herüber bekommt
ohne HANDLE zu benutzen ... her damit !
das Problem scheint in Lazarus weiterhin
ungelöst zu sein .. auch jetzt (DEZ 2010)
konnte ich bisher keine funktionierende
Lösung er"googeln"
Dafür zwei Links, an denen ich mich heute versuchen möchte:
Name (lokalisiert) und Icon von Shell-Objekten erhalten:
http://www.delphipraxis.net/551825-post.html#641170
Title: TListView (egal, es ´geht ja um's Icon laden ..):
http://forum.lazarus.freepascal.org/ind ... opic=753.0
(Achso, und: http://support.microsoft.com/kb/319350 )
Falls jemand mittlerweile einen Weg weiß,
wie man in LAZARUS die Windows System Icons
in den TTREEVIEW herüber bekommt
ohne HANDLE zu benutzen ... her damit !
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Windows system icons
Man, ich bin schon ganz stolz auf meine 2 mb quellcode xD
Hab mal was herrausgekramt:
ImageList1.Add(V_Image.Picture.Bitmap,nil);
hab es wohl damals vorgendermaen gemacht. Also musstest du das Bild in ein Image laden, und von da in die Imagelist. Bild danach wieder mit .Free freigeben.
Hat aufjedenfall vor nem halben Jaar funktioniert...
Hab mal was herrausgekramt:
ImageList1.Add(V_Image.Picture.Bitmap,nil);
hab es wohl damals vorgendermaen gemacht. Also musstest du das Bild in ein Image laden, und von da in die Imagelist. Bild danach wieder mit .Free freigeben.
Hat aufjedenfall vor nem halben Jaar funktioniert...
Code: Alles auswählen
Signatur := nil;