Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Pascal / Delphi / Delphi.NET

Cevapla
 
LinkBack Seçenekler
Eski 13/07/2005, 22:02   #1 (permalink)
RK
 
Üyelik Tarihi: 10/2002
Yer: Bursa
Mesaj: 253
Varsayılan İcon'ların hepsini gösterme.

Bir exe dosyasının içindeki bütün iconları gösteren bir uygulama yapmak istiyorum. Hani şu windowsun icon değiştirme penceresi varya onun gibi (Resim ekte). Örnek veya adres verebilirseniz sevinirim.
Eklenmiş Grafikler
File Type: jpg Windowsicon.jpg (58.5 KB, 9 views)
__________________
echo "ÇOMÜ (Çanakkale Onsekiz Mart Üniversitesi)";
echo "Bilgisayar Teknolojisi ve Programlama";
------------------------------------------------------------------------
Susmasını bilmeyen konuşmasını da bilmiyor demektir.
------------------------------------------------------------

kaynak hatta değil   Alıntı Yaparak Yanıtla
Eski 14/07/2005, 01:22   #2 (permalink)
Öcü
 
Sedat Atif Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2002
Yer: Fâni bir yer
Mesaj: 622
Varsayılan

Merhaba.

Aşağıda linkini verdiğim sayfada benzer bir uygulamanın nasıl yapılacağı anlatılıyor. Makalenin sonundaki linkten kaynak kodlarını da indirebilirsiniz.

"An Icon Extractor and Viewer" ( http://www.delphi-central.com/iconex.aspx )

Bu arada örnekteki
" NoOfIcons:=extracticon(handle,pchar(FileListBox1.F ileName),-1); "
satırı hata verdi bende, "-1" değerini "0" yapınca vermedi.
__________________
Çırak programcı usta programcıya dedi ki "Usta hadi Ceviz.Net foruma girelim bilgiyi paylaşalım". Usta dedi ki "Forum nedir? Ceviz nedir?" Çırak da şöyle dedi:"Sen ne biçim bi ustasın be usta yemişim senin ustalığını!" Ustaya Ceviz'i gösterdi ve usta aydınlandı. - M. Taç
Sedat Atif hatta değil   Alıntı Yaparak Yanıtla
Eski 14/07/2005, 01:51   #3 (permalink)
RK
 
Üyelik Tarihi: 10/2002
Yer: Bursa
Mesaj: 253
Varsayılan

Evet aynı hatayı bende de verdi ben başka bir yerden daha buldum onda UINT(-1) olarak vermiş. Böyle yaparsan çalışıyor.

Tek sorun bütün iconları neye aktarabilirim??? TImage olmaz tek bir icon alıyor o zaman. ListView gibi birşey olması lazım. Iconları kabul eden.
__________________
echo "ÇOMÜ (Çanakkale Onsekiz Mart Üniversitesi)";
echo "Bilgisayar Teknolojisi ve Programlama";
------------------------------------------------------------------------
Susmasını bilmeyen konuşmasını da bilmiyor demektir.
------------------------------------------------------------

kaynak hatta değil   Alıntı Yaparak Yanıtla
Eski 14/07/2005, 10:03   #4 (permalink)
naesse
misafir
 
Mesaj: n/a
Varsayılan

www.geocities.com/it_iz_unreal/ticonagent.zip

bir bak istersen
  Alıntı Yaparak Yanıtla
Eski 14/07/2005, 11:26   #5 (permalink)
Öcü
 
Sedat Atif Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2002
Yer: Fâni bir yer
Mesaj: 622
Ok

Alıntı:
kaynak, mesajından alıntı:
Evet aynı hatayı bende de verdi ben başka bir yerden daha buldum onda UINT(-1) olarak vermiş. Böyle yaparsan çalışıyor.
Hem de 0 yapınca başka sorunlar çıkıyormuş, doğrusu bu, teşekkürler.

Alıntı:
kaynak, mesajından alıntı:
Tek sorun bütün iconları neye aktarabilirim??? TImage olmaz tek bir icon alıyor o zaman. ListView gibi birşey olması lazım. Iconları kabul eden.
Bu ikonları ne yapacağınıza bağlı, amaç sadece göstermekse TImage de olabilir. ListBox'a atmak isterseniz onun ownerdraw özelliğinden faydalanabilirsiniz.

Mesela ben o sitedeki örneğe bir ListBox bir de ImageList ekledim. ListBox'un "Style" özelliğini "lbOwnerDrawFixed" ve "ItemHeight" özelliğini de "32" yaptım. Bir de ImageList ekledim (IL1 adında). Onun da Height ve Width özelliklerini "32" yaptım.

Sonra kodlarda şu değişiklikleri yaptım:

Kod:
procedure TForm1.FileListBox1Change(Sender: TObject); (* Added by Object Inspector *)
var NoOfIcons: integer;  i:integer;  bmp:TPicture;
begin (* Added by Object Inspector *)
    (* Only do it if a file is selected *)
    if FileListBox1.FileName <> '' then
    begin
        (* Change the caption of the Application to show which file *)
        (* is being looked at *)
        caption := FileListBox1.FileName;

       (* Get the number of icons the file contains by passing -1 to *)
       (* the Windows API call extracticon *)
       NoOfIcons:=ExtractIcon(handle,pchar(FileListBox1.FileName),UINT(-1));

       bmp:=TPicture.Create; // geçici TPicture
       listbox1.Clear;       // önce listbox'u temizle ki olmayan ikonları göstermesin
       IL1.Clear;            // ImageList'i de aynı sepeble temizle

       for i:=0 to (NoOfIcons-1) do
       begin
       ListBox1.Items.Add(''); // listbox'da boş item'lar oluştur
       bmp.Icon.Handle:=ExtractIcon(handle,pchar(FileListBox1.FileName),i); //geçici TPicture atama yap
       IL1.AddIcon(bmp.Icon);  // ImageList'e ikonu ekle
       end;

       bmp.Free;  // yok et

       (* Change label1 to show how many icons the file contains *)
       Label1.caption := 'No of Icons: '+inttostr(NoOfIcons);

        (* If there are no Icons do not allow the spinedit to be used *)
        if NoOfIcons = 0 then
          spinedit1.enabled:=false
        else
        begin
            (* Make the icon to display be the first *)
            spinedit1.value:=0;

            (* Do not let the spinedit go past the number of icons *)
            spinedit1.MaxValue:=NoOfIcons-1;

            (* Make sure its enabled *)
            spinedit1.enabled:=true;

            (* Call the spin edit change routine to load the first icon *)
            SpinEdit1Change(nil);
        end;
    end;
end; (* Added by Object Inspector *)
Kod:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  IL1.Draw(listbox1.Canvas,rect.Left,rect.Top,index);
end;
Böylece ikonları listbox'da gösterir hale geldi.

Tabi daha iyi bir kodlama yapılabilir, ben Delphi'yi çok iyi biliyor değilim.
__________________
Çırak programcı usta programcıya dedi ki "Usta hadi Ceviz.Net foruma girelim bilgiyi paylaşalım". Usta dedi ki "Forum nedir? Ceviz nedir?" Çırak da şöyle dedi:"Sen ne biçim bi ustasın be usta yemişim senin ustalığını!" Ustaya Ceviz'i gösterdi ve usta aydınlandı. - M. Taç

Enson 14/07/2005 11:39 tarihinde Sedat Atif tarafından düzenlenmiştir.. Sebep: kodlarda ufak bir düzeltme yapıldı
Sedat Atif hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2005, 01:03   #6 (permalink)
RK
 
Üyelik Tarihi: 10/2002
Yer: Bursa
Mesaj: 253
Varsayılan

@Sedat Atif: Teşekkür ederim yardımların için. Bende bildiklerimi, bulduklarımı vs.. ekleyerek isteğimi karşılayan yaptım birşeyler.

@naesse: Verdiğin program yapmak istediğim tarza yakın ama ben hazırını değil kendim yapabileceğim tarzda kod örnekleri istemiştim genede sağol.
__________________
echo "ÇOMÜ (Çanakkale Onsekiz Mart Üniversitesi)";
echo "Bilgisayar Teknolojisi ve Programlama";
------------------------------------------------------------------------
Susmasını bilmeyen konuşmasını da bilmiyor demektir.
------------------------------------------------------------

kaynak hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2005, 01:38   #7 (permalink)
Öcü
 
Sedat Atif Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2002
Yer: Fâni bir yer
Mesaj: 622
Varsayılan

Alıntı:
kaynak, mesajından alıntı:
@Sedat Atif: Teşekkür ederim yardımların için. Bende bildiklerimi, bulduklarımı vs.. ekleyerek isteğimi karşılayan yaptım birşeyler.
Rica ederim. Nasıl yaptığınızı kısaca paylaşır mısınız? Gizli değilse tabi.
__________________
Çırak programcı usta programcıya dedi ki "Usta hadi Ceviz.Net foruma girelim bilgiyi paylaşalım". Usta dedi ki "Forum nedir? Ceviz nedir?" Çırak da şöyle dedi:"Sen ne biçim bi ustasın be usta yemişim senin ustalığını!" Ustaya Ceviz'i gösterdi ve usta aydınlandı. - M. Taç
Sedat Atif hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2005, 01:51   #8 (permalink)
RK
 
Üyelik Tarihi: 10/2002
Yer: Bursa
Mesaj: 253
Varsayılan

Kod:
procedure TForm2.Button1Click(Sender: TObject);
var
   h : hIcon;
   ikon : TIcon;
   toplam, i, baslik : integer;
   kisayol, ikonyolu : string;
   ListeEleman : TListItem;
   link: TLinkInfo;
begin
  ikon:=TIcon.Create; // HIcon To TIcon
  ListView1.Clear;
  ListView1.Items.BeginUpdate;

  //ListView1.Columns.Add; // Kolon ekle
  //ListeEleman.Caption:='Deneme';
  if OpenDialog1.Execute then
  Begin
	kisayol:=OpenDialog1.FileName;
  End;

  if GetLinkInfo(kisayol, link) then
	ikonyolu:=link.IconPath;

  toplam:=ExtractIcon(Handle, PChar(ikonyolu), UINT(-1));
  for i:=0 to toplam-1 do
  begin
	h:=ExtractIcon(Handle, PChar(ikonyolu), i);
	ikon.Handle:=h;
	ListeEleman:=ListView1.Items.Add;
	baslik:= i + 1;
	ListeEleman.Caption:=IntToStr(baslik);
	ListeEleman.ImageIndex:=ImageList1.AddIcon(ikon);
  end;
  ListView1.Items.EndUpdate;
  ikon.Destroy;

  ShowMessage(ikonyolu +#10'daki Toplam icon sayısı: ' + IntToStr(toplam));
end;
Not: link: TLinkInfo; başka bir unit'ten geliyor. Sadece belirtilen kısayol dosyasının hangi exe veya diğer dosyadan ikonları aldığını bulmak için kullanıldı.
Eklenmiş Grafikler
File Type: jpg ikon.jpg (52.4 KB, 17 views)

Enson 15/07/2005 02:01 tarihinde kaynak tarafından düzenlenmiştir.. Sebep: Resim dosyası eklendi.
kaynak hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2005, 02:46   #9 (permalink)
Öcü
 
Sedat Atif Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2002
Yer: Fâni bir yer
Mesaj: 622
Varsayılan

Güzel olmuş Paylaştığınız için de teşekkürler.
__________________
Çırak programcı usta programcıya dedi ki "Usta hadi Ceviz.Net foruma girelim bilgiyi paylaşalım". Usta dedi ki "Forum nedir? Ceviz nedir?" Çırak da şöyle dedi:"Sen ne biçim bi ustasın be usta yemişim senin ustalığını!" Ustaya Ceviz'i gösterdi ve usta aydınlandı. - M. Taç
Sedat Atif hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2005, 13:11   #10 (permalink)
RK
 
Üyelik Tarihi: 10/2002
Yer: Bursa
Mesaj: 253
Varsayılan

Forumun amacıda bu değil mi zaten.
__________________
echo "ÇOMÜ (Çanakkale Onsekiz Mart Üniversitesi)";
echo "Bilgisayar Teknolojisi ve Programlama";
------------------------------------------------------------------------
Susmasını bilmeyen konuşmasını da bilmiyor demektir.
------------------------------------------------------------

kaynak hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
bir metinin içerisindeki belirlenmiş karaketr kümesinin hepsini silmek Guardian PHP 11 08/07/2008 10:42
Form değişkenkenlerinin hepsini alma YBEHOST ASP 6 24/01/2007 21:18
DAtabase de arasn ama hepsini göstermesin piskotilki PHP 5 02/09/2006 02:52
Hepsini seçmek rejisor Javascript / DHTML / Ajax 4 05/06/2005 17:26
Hepsini bir dosyada toplamak ve istenilene erişmek, Quake'in base.pk3'de yaptığı gibi Sedat Atif Pascal / Delphi / Delphi.NET 3 18/07/2003 18:13


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 12:35.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net