wobor ikon - dialog

0

Mam takie pytanie: jak mozna skorzystac z systemowego dialogu do wyboru ikon?

0

Cześć :-)
Pobierz na formę komponent TOpenPictureDialog

  • po otworzeniu tego okienka dialogu będziesz mógł wybierać pliki
    ikon (*.ico) a nawet będziesz je miał z podglądem ;-)

Kwestia otwarta tego co będziesz chciał z nimi robić ?

  • edytować, wklejać na formę lub co innego ....
    Nie skonkretyzowałeś tego w swoim pytaniu hmm...
0

Pobierz na formę komponent TOpenPictureDialog

TOpenPictureDialog w moim przypadku jest raczej niedobry dla ikon :-/. W Win jest taki dialog, który pozwala wybrać ikony siedzące również w plikach binarnych, np. exe, dll, cpl, itd. Chodzi mi włoaśnie o to okno.

0

Re ;) znowu tu zajrzałem i...

TOpenPictureDialog w moim przypadku jest raczej niedobry dla ikon :-/. W Win jest taki dialog, który pozwala wybrać ikony siedzące również w plikach binarnych, np. exe, dll, cpl, itd. Chodzi mi włoaśnie o to okno.

Możesz wczytywać pliki posiadające ikony standardowym oknem dialogu np:

Uses ShellApi, //cd...

Procedure TForm1.Button1Click(Sender: TObject);
var
 poz :Integer;
Begin
 if OpenDialog1.Execute then
 begin
   poz:=0;  //pozycja ikony w zasobach wczytanego pliku
   Image1.Picture.Icon.Handle:=ExtractIcon(Hinstance,PChar 
                                              (OpenDialog1.FileName),poz);
   //skopiowanie obrazka ikonki z komponentu TImage do TImageList
   ImageList.AddIcon(Image1.Picture.Icon);
 end;
End;

PS.
Umieszczając to w jakiejś w pętli możesz za jednym zamachem pobrać
tyle ikon ile posiada plik - pozostaje kwestia wyświetlenia tych ikonek
na jakimś komponencie (np. ComboBox).
Trzeba by wówczas przerysować ikony z ListView do ComboBoX.
Następnie klikając na ikonkę w ComboBox - można by ją zapisywać
jako plik *.ico - eh... ale to insza inszość ;)
A w ogóle to dzisiaj brak mi inwencji twórczej ;))
Tak tu zajrzałem by mądrego postrugać haha

0

Kręce się jak kot z pęcherzem.. :-)
ale akurat pisałem post na temat wklepywania bitmapek do TImage więc myśle że i Tobie się przyda do wyświetlania tych ikonek (jak w temacie powyżej...)

var
 kl :Integer;

Procedure TForm1.Button1Click(Sender: TObject);
var
 tmpImage :TImage; //tymczasowa zmienna komponentu TImage
 poz :Integer;
Begin
 tmpImage:=TImage.Create(nil);  //kreuje tymczasową zmienną komponentu
 tmpImage.AutoSize:=true;   //ustawia opcję dopasowania rozmiaru do obrazka
 if OpenDialog1.Execute then
 begin
   for poz:=0 to 255 do
   begin
      tmpImage.Picture.Icon.Handle:=ExtractIcon(Hinstance,PChar(OpenDialog1.FileName),poz);
     if tmpImage.Width > 0 then
     begin
       //tu rysujesz bitmapkę na komponencie TImage
       Image1.Canvas.Draw(kl,0,tmpImage.Picture.Graphic);
       kl:=kl+ tmpImage.Width; //przesunięcie pozycji o szerokość bitmapki
     end;
   end;
   tmpImage.Free;   //zwalnia tymczasową zmienną
 end;
End;

PS. To jest tylko myśl przewodnia procedury ;) sam ją doszlifuj np:
zmień wywołanie pętli może być repeat ... until itp..


Hmmm... qrde jestem tu na tym forum nowicjuszem i przy rejestracji pominołem dane odnośnie maila, gg itd ...
Jak mogę te dane do swej tożsamości dodać .. ?
czy na nowo musze się ponownie zarejestrować ?
Oto jest pytanie :-/

0

Dzieki wszystkim, bardzo mi pomogliscie [hurra] [cya]

1 użytkowników online, w tym zalogowanych: 0, gości: 1