Her Windows programı, bitmap'lerden simgelere, imleçlere ve dize tablolarına kadar her kaynağı kullanır. kaynaklar bir programı destekleyen ve çalıştırılabilir kod olmayan öğelerdir. Bu makalede, kaynaklardan bitmapler, simgeler ve imleçlerin kullanımına ilişkin bazı örnekleri inceleyeceğiz.
Kaynakların Yeri
Kaynakları .exe dosyasına yerleştirmenin iki ana özelliği vardır avantajları:
- Yürütülebilir dosyadaki bir kaynağın yerini bulmak, bir disk dosyasından yüklemek için olduğundan daha az zaman aldığından kaynaklara daha hızlı erişilebilir.
- Program dosyası ve kaynakları, birçok destek dosyasına ihtiyaç duymadan tek bir birimde (.exe dosyası) bulunabilir.
Görüntü Editörü
Her şeyden önce, bir kaynak dosyası oluşturmamız gerekiyor. Kaynak dosyaları için varsayılan uzantı:.RES. Kaynak dosyaları Delphi'nin Image Editor ile oluşturulabilir.
".RES" uzantısına sahip olduğu ve uzantısız dosya adı herhangi bir birim veya proje dosya adıyla aynı olmadığı sürece, kaynak dosyayı istediğiniz herhangi bir adla adlandırabilirsiniz. Bu önemlidir, çünkü varsayılan olarak her biri
Delphi projesi bir uygulamada derlenen, proje dosyasıyla aynı ada ancak ".RES" uzantılı bir kaynak dosyasına sahiptir. Dosyayı proje dosyanızla aynı dizine kaydetmek en iyisidir.Kaynakları Uygulamalara Dahil Etme
Kendi kaynak dosyamıza erişmek için Delphi'ye kaynak dosyamızı uygulamamıza bağlamasını söylemeliyiz. Bu, kaynak koduna bir derleyici yönergesi eklenerek gerçekleştirilir. Bu yönerge, aşağıdaki gibi form yönergesini hemen takip etmelidir:
{$ R * .DFM}
{$ R DPABOUT.RES}
{$ R * .DFM} bölümünü yanlışlıkla silmeyin, çünkü bu Delphi'ye formun görsel bölümünde bağlantı kurmasını söyleyen kod satırıdır. Hız düğmeleri, Görüntü bileşenleri veya Düğme bileşenleri için bitmapler seçtiğinizde Delphi, formun kaynağının bir parçası olarak seçtiğiniz bitmap dosyasını içerir. Delphi, kullanıcı arabirimi öğelerinizi .DFM dosyasına ayırır.
Kaynağı gerçekten kullanmak için, Windows API'sı çağırır. RES dosyalarında saklanan bitmapler, imleçler ve simgeler API işlevleri kullanılarak alınabilir LoadBitmap, LoadCursor, ve LoadIcon sırasıyla.
Kaynaklardaki Resimler
İlk örnek, kaynak olarak saklanan bir bitmap'in nasıl yükleneceğini ve bir TImage bileşen.
prosedür TfrMain.btnCanvasPic (Gönderen: TObject);
var bBitmap: TBitmap;
başla
bBitmap: = TBitmap. Oluşturmak;
Deneyin
bBitmap. Tanıtıcı: = LoadBitmap (hInstance, 'ATHENA');
Resim1.Genişlik: = bBitmap. Genişlik;
Image1.Height: = bBitmap. Yükseklik;
Image1.Canvas. Beraberlik (0,0, bBitmap);
en sonunda
bBitmap. Bedava;
son;
son;
Not: Yüklenecek bitmap kaynak dosyasında değilse, program yine de çalışır, bitmap'i göstermez. Bu durum test edilip bBitmap. Üstesinden gelmek çağrısından sonra sıfır LoadBitmap () ve uygun adımları atmak. denemek / nihayet önceki koddaki kısmı bu sorunu çözmez, bBitmap'ın yok edildiğinden ve ilişkili belleğin serbest bırakıldığından emin olmak için burada.
Bir kaynaktan bir bitmap görüntülemek için kullanabileceğimiz başka bir yol da şöyledir:
prosedür TfrMain.btnLoadPicClick (Gönderen: TObject);
başla
Image1.Picture. Bitmap.
LoadFromResourceName (hInstance, 'TOPRAK');
son;
Kaynaklarda İmleçler
Ekran. İmleçler [] bir dizi Delphi tarafından sağlanan imleçler. Kaynak dosyalarını kullanarak, Cursors özelliğine özel imleçler ekleyebiliriz. Varsayılanlardan herhangi birini değiştirmek istemedikçe, en iyi strateji 1'den başlayan imleç numaralarını kullanmaktır.
prosedür TfrMain.btnUseCursorClick (Gönderen: TObject);
const NewCursor = 1;
başla
Ekran. İmleçler [NewCursor]: =
LoadCursor (hInstance, 'CURHAND');
Image1.Cursor: = NewCursor;
son;
Kaynaklardaki Simgeler
Delphi'ye bakarsak Proje Seçenekler-Uygulama Delphi'nin bir proje için varsayılan simgeyi sağladığını bulabiliriz. Bu simge, Windows Gezgini'nde ve uygulamanın simge durumuna küçültülmüş olduğu zaman uygulamayı temsil eder. 'Simgeyi Yükle' düğmesini tıklayarak bunu kolayca değiştirebiliriz.
Örneğin, program küçültüldüğünde programın simgesine animasyon uygulamak istiyorsak, aşağıdaki kod işi yapar.
Animasyon için bir TTimer bileşen. Kod, kaynak dosyadan bir simge dizisine iki simge yükler TICON nesneleri; bu dizinin ana formun genel kısmında bildirilmesi gerekir. Ayrıca ihtiyacımız olacak NrIco, bu bir Tamsayı türüdür değişken, halka açık Bölüm. NrIco gösterilecek bir sonraki simgeyi takip etmek için kullanılır.
halka açık
nrIco: Tam sayı;
MinIcon: TIcon dizisi [0..1];
...
prosedür TfrMain. FormCreate (Gönderen: TObject);
başla
MinIcon [0]: = TICON. Oluşturmak;
MinIcon [1]: = TICON. Oluşturmak;
MinIcon [0] .Handle: = LoadIcon (hInstance, 'ICOOK');
MinIcon [1] .Handle: = LoadIcon (hInstance, 'ICOFOLD');
NrIco: = 0;
Timer1.Interval: = 200;
son;
...
prosedür TfrMain. Timer1Timer (Gönderen: TObject);
beginif İzikonik (Uygulama. Üstesinden gelmek) sonrabaşla
NrIco: = (1 + NrIco) şık 2;
Uygulama. Simge: = MinIcon [NrIco];
son;
son;
...
prosedür TfrMain. FormDestroy (Gönderen: TObject);
başla
MinIcon [0] .Free;
MinIcon [1] .Free;
son;
İçinde Timer1.OnTimer olay işleyicisi, IsMinimized işlevi, ana simgemize animasyon eklememiz gerekip gerekmediğini görmek için kullanılır. Bunu yapmanın daha iyi bir yolu, büyüt / küçült düğmelerini yakalamak ve harekete geçmek olacaktır.
Son sözler
Kaynak dosyalarına her şeyi (her şeyi değil) yerleştirebiliriz. Bu makalede, Delphi uygulamanızda bitmap, imleç veya bir simgeyi kullanmak / görüntülemek için kaynakları nasıl kullanacağınız gösterilmektedir.
Not: Bir Delphi projesini diske kaydettiğimizde, Delphi otomatik olarak projeyle aynı ada sahip bir .RES dosyası oluşturur (başka bir şey yoksa, projenin ana simgesi içeride). Bu kaynak dosyasını değiştirebilmemize rağmen bu önerilmez.