Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Delphi 2006 Açılış ekranına bileşen paketimizin simgesini eklemek  (Okunma sayısı 2211 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Kocaturk

  • Administrator
  • *****
  • İleti: 2.474
  • Rep: +56/-5
  • Cinsiyet: Bay
    • Delphi Dünyası
Merhaba arkadaşlar sitede aslında API iler ile ilgili bir bölüm var fakat Delphi IDE sinde değişiklikler yapmak ve yeni özellikler eklemek için kullanılan Delphi ToolsAPI leri ile ilgili bir bölümümüz yoktu bende bu bölümü açıp ilk eklentiyi de yapmak istedim. gelelim konumuza;
Delphi 2006 kullananlar bilirler delphi ilk açılırken açılış ekranında IDE de kurulu bir çok bileşenin artistik açıklamaları bulunur RaveReport,Castalia,Inraweb vs sırası ile her paket yüklendikçe onunla ilgili bir simge ve açıklama açılış ekranına alt alta eklenir. işte biz de bunun nasıl yapıacağını basitçe anlatacağız umuyorum bir çok arkadaşın hoşuna gidecektir.
Mevzuya başlamadan öne ufak bir ön bilgi vermekte fayda var. Malumunuz delphi de özel bileşen paketleri oluşturup kendi yazdığımız bileşenleri bu paketlerde toplayarak Delphi ye entegre edip gerektiğinde kullanabiliyoruz. Herkes bilir ki delphi bileşen paketleri .DPK uzantılı özel dosyalarda saklanır bu dosyalar bileşen paketinin temelini oluşturur ve bileşenlerin kodlarının bulunduğu unitler bileşenlerin kullandığı resource lar vs bu dosyaya bağlanır bu dosya derlendiğinde pakette bulunan bileşenler Register procedure ünde tanımlanan sayfalara eklenir.
Tipik bir .DPK dosyasının kaynak görünümü aşağıdaki gibidir.
Kod:  (Unknown Language)
  1.  
  2. package OktComps;
  3.  
  4. {$R *.res}
  5. {$R 'OKTSchedGrid.dcr'}
  6. ...
  7. ...
  8. ...
  9. ...
  10. ...
  11.  
  12. {$ALIGN 8}
  13. {$ASSERTIONS ON}
  14. {$BOOLEVAL OFF}
  15. {$DEBUGINFO ON}
  16. {$EXTENDEDSYNTAX ON}
  17. {$IMPORTEDDATA ON}
  18. {$IOCHECKS ON}
  19. {$LOCALSYMBOLS ON}
  20. {$LONGSTRINGS ON}
  21. {$OPENSTRINGS ON}
  22. {$OPTIMIZATION ON}
  23. {$OVERFLOWCHECKS OFF}
  24. ...
  25. ...
  26. ...
  27. ...
  28. ...
  29. {$DESCRIPTION 'Oktay KOCATÜRK Components for BDS4.0'}
  30. {$IMPLICITBUILD OFF}
  31.  
  32. requires
  33.   vcl,
  34.   vcldb,
  35.   vclsmp,
  36.   bdertl,
  37.   designide,
  38.   rtl,
  39.   dbrtl,
  40.   vclie;
  41.  
  42. contains
  43.   OKTSchedGrid in 'OKTSchedGrid.pas',
  44. ...
  45. ...
  46. ...
  47.  
  48.  
  49. end.
  50.  
  51.  

sırası ile resource dosyaları, derleyici direktifleri, pketin gerek duyduğu diğer paketler, pakette bulunan bileşenlere ait unit ler vs
işte diyelim ki böyle bir bileşen paketimiz var ve biz de diğer professional bieşen paketlerinde olduğu gibi delphi açılış ekranımızda bileşen paketimizle ilgili bir bilgi eklemek istiyoruz bunu nasıl yapabiliriz? tabi ki ToolsAPI leri kullanarak.
şimdi bu işi adım adım gerçekleştirelim ve sonucu görelim.

1- Önce ilgili paketi delphi de açıyoruz
2 pakete yeni boş bir unit ekliyoruz unit tahminen aşağıdaki gibi olacaktır.

Kod:  (Unknown Language)
  1.  
  2. unit Unit1;
  3.  
  4. interface
  5.  
  6. implementation
  7.  
  8. end.
  9.  
  10.  
  11.  

şimdi unit imizin Implementation kısmından sonra aşağıdaki uses bloğunu ekliyerek unitin ToolsAPI,Windows ve Graphics unitlerine referansta bulunuyoruz.

Kod:  (Unknown Language)
  1.  
  2.  
  3. uses
  4.   ToolsAPI, Windows, Graphics;
  5.  
  6.  

bu işlemden sonra ben bileşen paketimiz hakkında bilgileri tutan iki adet ResourceString ekledim siz bunu eklemeden de yapabilirsiniz.

Kod:  (Unknown Language)
  1.  
  2. resourcestring
  3.   resPackageName = 'Kocaturk''s Components Collection for BDS2006';
  4.   resLicense = 'www.delphidunyasi.net';
  5.  
  6.  
  7.  

daha sonra unitimize  delphi açılış ekranın da paketimiz yüklendiği anda gerekli bilgileri gösterecek RegisterSplashScreen procedure ümüzü yazıyoruz.

Kod:  (Unknown Language)
  1.  
  2. procedure RegisterSplashScreen;
  3. var
  4.   bmp: TBitmap;
  5. begin
  6.   bmp := TBitmap.Create;
  7.   bmp.LoadFromResourceName(HInstance, 'MY_SPLASH');
  8.   SplashScreenServices.AddPluginBitmap(resPackageName, bmp.Handle, False, resLicense, '');
  9.   bmp.Free;
  10. end;
  11.  
  12.  

son olarak unit imin Initializiation bölümüne  procedure ü aşağıdaki gibi ekleyerek.

Kod:  (Unknown Language)
  1.  
  2. initialization
  3.   RegisterSplashScreen;
  4.  
  5.  
  6.  

Unit imin kodunun aşağıdaki gibi olmasını sağlıyorum


Kod:  (Unknown Language)
  1.  
  2.  
  3. unit Unit1;
  4.  
  5. interface
  6.  
  7. implementation
  8.  
  9. uses
  10.   ToolsAPI, Windows, Graphics;
  11.  
  12. resourcestring
  13.   resPackageName = 'Kocaturk''s Components Collection for BDS2006';
  14.   resLicense = 'www.delphidunyasi.net';
  15.  
  16. procedure RegisterSplashScreen;
  17. var
  18.   bmp: TBitmap;
  19. begin
  20.   bmp := TBitmap.Create;
  21.   bmp.LoadFromResourceName(HInstance, 'MY_SPLASH');
  22.   SplashScreenServices.AddPluginBitmap(resPackageName, bmp.Handle, False, resLicense, '');
  23.   bmp.Free;
  24. end;
  25.  
  26. initialization
  27.   RegisterSplashScreen;
  28.  
  29. end.
  30.  
  31.  
Unit1 i RegisterMyComps.pas olarak bileşen paketinin bulunduğu dizine kaydediyor ve unit ile işimizi bitiriyoruz.

Buraya kadar her şey normal uniti oluşturduk fakat açılış ekranında gösterilecek simge yi MY_SPLASH kaynakğından çağıran


Kod:  (Unknown Language)
  1.  
  2.   bmp.LoadFromResourceName(HInstance, 'MY_SPLASH');
  3.  
  4.  
kod satırının çalışabilmesi için gerekli olan resource dosyayı olşturup bileşen paketimize bağlamalıyız, bunun için yapmamız gereken açılış ekranında göstermek istediğimiz resmimizi bir resource dosyaya ekleyip resource dosyayı derleyip kullanılabilir hale getirmeliyiz önce resmimizi 32X32 boyutunda ve bitmap formatında oluşturuyoruz ben bunun için sitedeki avatarımı kullandım :) ve dosyamın adı da MySplash.bmp
önce bir Resource Kaynağı hazırlıyoruz, notepad ile yeni bir metin belgesi oluşturup açıyoruz ve aşağıdaki satırı dosyaya ekleyerek kaydediyoruz

My_SPLASH BITMAP "My_Splash.bmp"

Not:
burada delphi de kaynak dosyaların kullanımı hakkında bilgi vermeyeceğim sadece MY_SPLASH ın My_Splash.bmp yi temsil eden BITMAP tipi bir kaynak olduğunu bilmeniz yeterli.

bu satırı ekledikten sonra ben text dosyayı MySplash.rc olarak kaydettim. Resource kaynağımız hazır olduğuna göre artık bunu Borland'ın komut satırı 32 bit kaynak derleyicisi(Brcc32.exe bu dosya delphi Bin dizinindedir) ile derleyerek gereken kaynak dosyamızı oluşturabiliriz.

komut satırından

brcc32 Mysplash.rc

yazıp ENTER tuşuna basınca derlenmiş kaynak dosyamız MySpalsh.res olarak oluşturulacaktır ben standarda uygun olsun diye dosyanın uzantısını .RES den .DCR (Delphi Compiled Resource) ye çevirdim ve MySplash.dcr adlı derlenmiş bir kaynak dosyam oldu. (.DCR ye çevirmeye gerek yok aslında pakete eklerken .RES olarak ta ekleyebilirsiniz)
Artık işleme kaldığım yerden devam edebilirim, olşturduğum MySplash.dcr adlı kaynak dosyasını bileşen paketime tanıtıyorum bileşen paketinde diğer kaynak dosya tanımlamalarının altına {$R MySplash.dcr'} olarak ekliyorum.

Kod:  (Unknown Language)
  1.  
  2. {$R *.res}
  3. {$R 'OKTSchedGrid.dcr'}
  4. {$R MySplash.dcr'}
  5. ...
  6. ...
  7.  
  8.  

bu işlemden sonra oluşturduğumuz RegisterMyComps.pas eğer paketin contain bölümünde yoksa ekliyorum


Kod:  (Unknown Language)
  1.  
  2. contains  
  3. OKTSchedGrid in 'OKTSchedGrid.pas',
  4. ...
  5. ...
  6.  RegisterOktComps in 'RegisterOktComps.pas';
  7.  

işlem tamam. artık bileşen paketini eğer kurulmamışsa derleyip kuruyoruz kurulu ise yeniden derliyoruz, sonra delphiyi kapatıyoruz ve  yeniden başlatıyoruz sonuç aşağıdaki gibi oluyor.



Herkese kolay gelsin.



« Son Düzenleme: 17 Haziran 2007 19:14:09 by kocaturk »

Çevrimdışı erasersoft

  • Delphi 1 Level 2
  • **
  • İleti: 12
  • Rep: +0/-0
    • http://www.forumalemi.gen.tr.tc
delphi 2006 nın cd sını nasıl bulabılırım arkadaslar bana yardımcı olabilecek varmı

unilione@hotmailc.com bana ulasabılırmı lutfen merak edıyorum.
Şakağımdaki kansa, o benim gülüşümdür,Namert sürünmektense, erkekçe ölüşümdür...