dbgrid sütünunda resim gösterme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
dbgrid sütünunda resim gösterme
arkadaşlar dbgrid içinde onay diye bir alanım var bu alanın veritabanındaki değerleri 0 ve 1 lacak burda yapmak istediğim dbgridin ilgili kolonunda değer 0 olduğu zaman birinci resim 1 olduğu zaman ikinci resim gibi forumda aradım ama bir türlü sonuca ulaşamadım yardımcı olan ve olmayan arkadaşlara şimdiden teşekkürler
Kod: Tümünü seç
Icon:=TBitmap.Create;
if (Column.index=0 ) then begin // DbGridin ilk Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
Kod: Tümünü seç
if (Column.index=0 ) then begin // DbGridin ilk Sütunu
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam hatayı yazmamışsınız ama icon yerine o zaman başka bir kelime kullanın büyük bir ihtimalle isim çakışması oluyordur.olamzsa hatayla beraber yazın sorunu.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
procedure Ttsonucform.RxDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
Icon:=Tbitmap.create;
if (Column.index=9 ) then begin // DbGridin ilk Sütunu
with rxDBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
end;
end.
kodlar bunlar şimdiden teşekkürler
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
Icon:=Tbitmap.create;
if (Column.index=9 ) then begin // DbGridin ilk Sütunu
with rxDBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
end;
end.
kodlar bunlar şimdiden teşekkürler
hocam anladığım kadarıyla
olarak tanımlayın..kolay gelsin yine olmazsa yine yapmaya çalışırız.
değişken olarak tanımlamamışsınız.eğer unitin var bloğunada tanımlamadıysanız procedurenin var bloğunaicon
Kod: Tümünü seç
icon:Tbitmap;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam yine hata verdi
Icon:TBitmap.create; bu kodda
hata mesajı
[Error] tahlilver.pas(80): ';' expected but '.' found
var
Icon:TBitmap.create;
begin
if (Column.index=5 ) then
begin // DbGridin ilk Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
Icon:TBitmap.create; bu kodda
hata mesajı
[Error] tahlilver.pas(80): ';' expected but '.' found
var
Icon:TBitmap.create;
begin
if (Column.index=5 ) then
begin // DbGridin ilk Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
Kod: Tümünü seç
Kod: Tümünü seç
ilgin için sağol
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam yanlış oldu kusura
Kod: Tümünü seç
icon:Tbitmap
olarak hata vermiyor ama iconu gride koymadı acaba ek bir tetikleme gerekirmiydi
Bir db grid indirin onu daata source ile bağlayın duğmukleyin vs.. db grid çalışır
hale gelsin daha sonra bir imagelist indirin. içerisine kullanacağınız resimleri 16x16
seçin (ben öyle seçtim). hatta çok resim seçtiyseniz indexlerini bir kagıda da yazabilirsiniz.
)
daha sonra DBGrid1DrawColumnCell kısmına aşagıdaki kodları yazın ve çalıştırın
Not: Db grid üzerinde indicator'ı kaldırdım. Eğer illa indicator kullanacaksanız indicator
ın genişliği 12 pix. haberiniz olsun.
)
birde db gridin tüm editable ayarlarını false yaptım ve optionstan rowselect kısmınıda
true yaptım yoksa dbgrid üzerine tıkladığınızda resimler yazılar karışıyor. Eğer
grid üzerinde tüm alanlar editableyapmanız gerekiyorsa bunu yapmayın.
Yani listeleme haricindeki işlerde kullanmayın
Bütün olayı yeniden verdim..kolay gelsin.
Hocam artı birşey sorcam tahlilver.pas dosyası sizin projeye ait bir dosyamı.eğer size ait dosyaysa o uniti kontrol edin o unitte bir hata olduğunu düşünüyorum.bitmeyen program bloğu olabilir gibi. kolay gelsin.
hale gelsin daha sonra bir imagelist indirin. içerisine kullanacağınız resimleri 16x16
seçin (ben öyle seçtim). hatta çok resim seçtiyseniz indexlerini bir kagıda da yazabilirsiniz.

daha sonra DBGrid1DrawColumnCell kısmına aşagıdaki kodları yazın ve çalıştırın
Not: Db grid üzerinde indicator'ı kaldırdım. Eğer illa indicator kullanacaksanız indicator
ın genişliği 12 pix. haberiniz olsun.

birde db gridin tüm editable ayarlarını false yaptım ve optionstan rowselect kısmınıda
true yaptım yoksa dbgrid üzerine tıkladığınızda resimler yazılar karışıyor. Eğer
grid üzerinde tüm alanlar editableyapmanız gerekiyorsa bunu yapmayın.
Yani listeleme haricindeki işlerde kullanmayın
Kod: Tümünü seç
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Icon: TBitmap;
begin
Icon:=TBitmap.Create;
if (Column.index=0 ) then begin // DbGridin ilk Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 0'ncı resim alınıyor..
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString); // Alan yazılıyor..
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
if (Column.index=1 ) then begin // DbGridin ikinci Sütunu
with DBGrid1.Canvas do begin
ImageList1.GetBitmap(0,Icon); // imagelistten 1.inci resim alınıyor...
TextRect(Rect,Rect.Left+21,Rect.Top,Column.Field.AsString);
// Alan yazılıyor.. buradaki "rect.left+21" değeri ise 16x16 pix. resimden sonra 5 pix
// daha sağa kayması için.
Draw(rect.Left+1,Rect.Top,Icon); // Resim Konuyor..
// buradaki rect.Left+1 değeri resmin grid duvarına yapışmaması için 1 px sağa kay.
end;
end;
// resim konacak diğer alanlar vars yukarıdaki işlemleri tekrarlıyoruz.
// Column.index ve imagelist indexini istediğiniz şekilde ayarlayın.
end;
Hocam artı birşey sorcam tahlilver.pas dosyası sizin projeye ait bir dosyamı.eğer size ait dosyaysa o uniti kontrol edin o unitte bir hata olduğunu düşünüyorum.bitmeyen program bloğu olabilir gibi. kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam yardımların sayesinde aşağıdaki kodla işi çözdüm ilgin için sağol
allah kodlama zihnini açık etsin teşekkürler
allah kodlama zihnini açık etsin teşekkürler
Kod: Tümünü seç
var Icon: TBitmap;
begin
Icon:=TBitmap.Create;
if (Column.FieldName='BARKODONAY' ) then begin
with rxDBGrid1.Canvas do begin
Brush.Color:=clwindow;
FillRect(Rect);
if (DM.hastadetail.FieldByName('BARKODONAY').Value=0)
then
ImageList1.GetBitmap(0,Icon)
else
ImageList1.GetBitmap(1,Icon);
Draw(round((Rect.Left+Rect.Right-Icon.Width)/2),Rect.Top,Icon);
end;
end;
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam şimdi şöyle bir sorunum daha var barkodonay field ne default olarak 0 değerini atıyorum database im mysql 4.1 db 1 icon kayıt eklendikce otomatik olarak alınıyor ama query de barkodonay field ne update komutuyla 1 değeri atamak istediğim zaman hata veriyor
- edatabase error with message'hastadetail you have an error in your sql syntax sytax to use near 'update lbrcikis set barkodonay=null at line 1 processed stop
ve datalar uçuyor[/code]dm.hastadetail.Close;
dm.hastadetail.Sql.Add('update lbrcikis set barkodonay=:1');
dm.hastadetail.ExecSql;
hocam orda kullandığınız tek komut bumu sadece yoksa başka bir kod yazımıda varmı.
anladığım kadarıyla syntax hatası veriyor dediğiniz olayı yakında kullanacabileceksiniz gibi .
anladığım kadarıyla syntax hatası veriyor dediğiniz olayı yakında kullanacabileceksiniz gibi .
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- mobilepack
- Üye
- Mesajlar: 27
- Kayıt: 22 Nis 2005 10:32
- Konum: antalya
hocam cok profesyonel yapıda bir programcı değilim farkediyorsunuzdur ama bütün master-detail ilişkileri kurdum form yapıları hesaplamalar herşey tamam but tür görsel şeyler kaldı projemin bitmesi için bu çalışma bir laboratuvar otomasyonu burda iki tablo var master detail durumda ben master tabloda kayıtı seçiyorum detail tablo gride doluyor barkodonay field na default olarak 0 değerini atıyorum yeni kayıt yaparken iconda gözüküyor tablodan kastım query kullanıyorum table değil şimdi bir adet button var buttonun click ine bir kod yazmak istiyorum bu butona tıklayınca gridin barkodonay bölümündeki 0 olan kayıtları veritabanında 1 olarak update etmek istiyorum bu kadar yardımların için sağol