Autor Beitrag
Florian.K
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 130

Win Xp Prof. & SP 2
Delphi 10 Lite
BeitragVerfasst: Di 02.01.07 05:09 
Hi Community !
Ich würde gerne ein Programm schreiben womit ich das Icon einer Datei ändern kann.
Ich brauche ja ein Feld wo ich das zu ersetzende Icon suchen kann.
Anschließend das neue aussuchen und er ersetzt mir es.
Nur wie.. Das ist die Frage.
geht das über
Icon=ChangeIcon
oder wie muss ich mir das vorstelln.
mfg
Florian
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 02.01.07 05:43 
Zitat:

ausblenden Delphi-Quelltext
1:
Icon=ChangeIcon					



Das klappt so natürlich nicht. Bzw. sollte es irgendwann mal so eine Zeile in deinem Code geben, bis dahin musst du aber noch einiges vorarbeiten ;)

Also Windows speichert solche Dinge grundsätztlich irgendwo in der Registry. Das dumme ist nur: Wo?! Außerdem: Du kannst nicht einfach sagen diese .bmp Datei soll jetzt dies oder jenes Icon haben. Das geht nur global. Sprich, alle .bmp Dateien werden fortan dieses Icon haben. Eine Ausnahme stellen natürlich Ordner und Verknüpfungen dar.

Wie soll dein Programm ablaufen?

- Du musst den Registrykey rausfinden indem gespeichert wird welches Icon für den entsprechenden Dateityp oder den entsprechenden Ordner verwendet wird.

- Dann nimmst du einen OpenPictureDialog. Dort soll der Benutzer dann das Icon auswählen das er haben möchte.

- Der Pfad des Icons muss dann in den Registrykey geschrieben werden.

Meine Tipps:

1.) Finden des Registrykeys: www.swissdelphicente...showcode.php?id=2034 Kopier dir mit diesem Code ein kleines Programm zusammen, das alle Registrykeys auflistet die sich in den letzten 5 Minuten geändert haben. Wenn du dann das Icon manuell änderst (über die Windowsdialoge) wird der richtige Regkey angezeigt werden.

2.) Der OpenPictureDialog befindet sich im Reiter 'Dialogs' und funktioniert genauso wie jeder andere Dialog auch. Das ist eine Zeile, deswegen post ich die dir jetzt mal:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var iconpfad : string;
begin
 if OpenPictureDialog1.execute then
  iconpfad := OpenPictureDialog1.FileName;
end;


3.) Das schreiben in die Registry ist ebenfalls sehr einfach, denn es gibt hunderte Codeschnipsel dazu im Netz. Sehr gut ist z.B. dieser.


Beachte was ich im Eingang gesagt habe: Eine einzelne x-beliebige Datei kann (ohne weiteres) kein eigenes Icon bekommen. Es sei denn es ist eine Verknüpfung oder ein Ordner.

Ps.: Gibts da ne API-Funktion zu?