DBCtrlGrid Canvas'ına Resim çizme hk.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

DBCtrlGrid Canvas'ına Resim çizme hk.

Mesaj gönderen mrmarman »

- Sorum da DBCtrlGrid hakkında.

- WMF resimleri OnPanelPaint olayında DBCtrlGrid'in Canvas'ına çizdirip her kaydın yanında önizleme elde ediyordum.

- Kayıt sayısı 500'ü geçince bu olayın da suyu çıktı. Hafızadan acayip şekilde yemeye başladı.

- Halbu ki DBCtrlGrid'in Index değişkeni o anki ekranda görünen Row numarasını veriyor ve ben bununla kısıtladığım halde (If Index < RowCount then ... çizim yap) sanıyorum tüm kayıtlara ait Canvas'lara erişmeye çalıştığından hafıza yetmeme durumu doğuyor.

- Çözümü bilen var mı ?
Resim
Resim ....Resim
name
Kıdemli Üye
Mesajlar: 243
Kayıt: 09 Ağu 2003 02:11
Konum: İstanbul

Mesaj gönderen name »

Çizim kısmını nasıl yaptığını bilmiyorum ama aşağıda benim daha önce "BrushCopy" özelliğini kullanarak yaptığım örneğin bir kısmı var belki işine yarar.

Kod: Tümünü seç

      
with grid1 do
    begin
      if (ACol = 0) and (ARow <> 0) then
         begin
           bmp := TBitmap.Create;
           ImageList1.GetBitmap(1, bmp);
           Canvas.BrushCopy(rect, bmp, bmp.Canvas.ClipRect, clBlue);
           bmp.Free;
           ...
           ....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Bendeki de farklı bir türevi.

- Veritabanında Resimlerin sadece adı kayıtlı. kendileri fiziksel olarak farklı klasörlerde HDD'de.

Kod: Tümünü seç

procedure TForm1.DBCtrlGrid2PaintPanel(DBCtrlGrid: TDBCtrlGrid;
  Index: Integer);
Var
  Resim  : TMetaFile;
  RDosya : String;
begin
  RDosya := AdoTable1.FieldByName(KodAdi).AsString; // Veritabanından Dosya Adı ve yeri alınıyor....
  If FileExists(RDosya) then
  begin
    Resim := TMetaFile.Create;
    Resim.LoadFromFile(RDosya);
    // Boyutlarında DBCtrlGrid'e göre ayarlama yapmama gerek yok.
    // WMF Resimlerim hep 100x100 boyutunda olduğundan olduğu gibi kullanılıyor. 
    DBCtrlGrid2.Canvas.Draw(15, 5, Resim);
    Application.ProcessMessages;
    Resim.Free;
  end; // If FileExists
end;
Resim
Resim ....Resim
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Re: DBCtrlGrid Canvas'ına Resim çizme hk.

Mesaj gönderen DarkEternal »

wmf uzantılı resimleri delphi ile birleştirmek mümkün müdür?
kısa kısa yazılım...
http://TKorhan.blogspot.com/
Cevapla