DBGrid içerisinde Check sembolü gösterme ?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
DBGrid içerisinde Check sembolü gösterme ?
Paradox dosyasında logical bir alan var. Bu alanın değeri DBGrid içerisinde True ve False olarak gözüküyor haliyle. Ben True yerine check sembolü koymasını istiyorum. Bunu tek bir aktif kayıt için DBCheckBox kullanarak yapabildim. Fakat tüm kayıtlarda nasıl göstereceğimi bulamadım. Herkese iyi çalışmalar.
Kullanmak istediğin özellik malesef DBGrid nesnesinde bulunmuyor. Bu ve bunun gibi birçok kullanışlı özellik için QuantumGrid'i öneririm. Aldığı parayı sonuna kadar hakeden componentlerden biri bence.
-
- Üye
- Mesajlar: 380
- Kayıt: 31 Eki 2005 03:26
Arkadaş haklı o yüzden dbgrid le hiç uğraşmayın.
Konu ile ilgili olarak bknz: viewtopic.php?t=14352&view=previous
Konu ile ilgili olarak bknz: viewtopic.php?t=14352&view=previous
Önce forma bir DBCheckBox koyun. DBgridin DBGrid1ColEnter ve DBGrid1DrawColumnCell presedürlerine aşağıdaki kodları kendi alanınıza uyarlıyarak yazın.
Kod: Tümünü seç
procedure TfrmOdemeAl.DBGrid1ColEnter(Sender: TObject);
begin
if DBGrid1.Columns[DBGrid1.SelectedIndex].FieldName='aciklama' THEN
DBCheckBox1.Visible:=true
else
DBCheckBox1.Visible:=false;
end;
Kod: Tümünü seç
procedure TfrmOdemeAl.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (gdfocused in state) and (column.FieldName='aciklama') then
begin
dbcheckbox1.SetBounds(rect.Left+dbgrid1.Left+1,
rect.Top+dbgrid1.Top+1,rect.Right-rect.Left+1,
rect.Bottom-rect.Top+1);
end;
end;
Selam,
Eğer DBGrid üzerinde değişiklik yaptırmıyorsan aşağıdaki kodu DrawDataCell eventine yazabilirsin. Forma iki adet TImage koyman gerekiyor. İlkinin adı imgChecked, ikincisinin adı imgUnchecked. Elbette resimleri istersen ImageList'e de atabilirsin, ya da private tanımlayacağın iki tane TBitmap de kullanabilirsin. Tamamen sana kalmış. Resimlerin Transparent özelliğini kullanacak olursan daha güzel sonuç elde edersin.
Ben üşendiğimden sadece Max fonksiyonu için Math unitini de ekledim. Eğer senin unitinde eklenmemişse ya eklemen , ya da Max yerine aynı işi yapacak bir fonksiyon yazman gerekiyor.
Cevap yazmamın sebebi sorunun çözülmemiş olması değil, örnek kod olması içindir. Denemedim ama sanırım celalatak'ın yazdığı kod da işe yarayacaktır.
Kolay gelsin,
Bahadır Alkaç
Eğer DBGrid üzerinde değişiklik yaptırmıyorsan aşağıdaki kodu DrawDataCell eventine yazabilirsin. Forma iki adet TImage koyman gerekiyor. İlkinin adı imgChecked, ikincisinin adı imgUnchecked. Elbette resimleri istersen ImageList'e de atabilirsin, ya da private tanımlayacağın iki tane TBitmap de kullanabilirsin. Tamamen sana kalmış. Resimlerin Transparent özelliğini kullanacak olursan daha güzel sonuç elde edersin.
Ben üşendiğimden sadece Max fonksiyonu için Math unitini de ekledim. Eğer senin unitinde eklenmemişse ya eklemen , ya da Max yerine aynı işi yapacak bir fonksiyon yazman gerekiyor.
Kod: Tümünü seç
procedure TForm1.dbgrd1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
pt:TPoint;
begin
if Field.DataType = ftBoolean then
begin
if gdSelected in State then
dbgrd1.Canvas.Brush.Color:=clHighlight
else
dbgrd1.Canvas.Brush.Color:=clWindow;
dbgrd1.Canvas.FillRect(Rect);
if gdFocused in State then
dbgrd1.Canvas.DrawFocusRect(Rect);
pt.X:= Max(((Rect.Right - Rect.Left) div 2 - imgChecked.Width div 2) + Rect.Left, Rect.Left);
pt.Y:= Max(((Rect.Bottom - Rect.Top) div 2 - imgChecked.Height div 2) + Rect.Top, Rect.Top);
if Field.Value then
dbgrd1.Canvas.Draw(pt.X, pt.Y, imgChecked.Picture.Bitmap)
else
dbgrd1.Canvas.Draw(pt.X, pt.Y, imgUnchecked.Picture.Bitmap);
end;
end;
Kolay gelsin,
Bahadır Alkaç
Arkadaşlar ben size tam olarak anlamadım herhalde. Celalatak kardeş; Sizin yazdığınız kodun aynısını ben daha önce yazmıştım. . Opt2000 sizinkinde de aynı mantık geçerli. İlkinde dbcheckbox in yeri değişiyor ikincisinde de image nesnesinin. Çalışıyor. Fakat Liste halinde alt altta aynı anda check sembolü göstermiyor.
ya mustafa abi boşuna söylemiyor arama yapın diye
bu konu kaç kere konuşuldu
viewtopic.php?t=9455
viewtopic.php?t=13006
bu grid
http://www.aseyazilim.com/download.asp?git=2 adresinde mevcut
bu konu kaç kere konuşuldu
viewtopic.php?t=9455
viewtopic.php?t=13006
bu grid
http://www.aseyazilim.com/download.asp?git=2 adresinde mevcut
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR