DbGrid, title click sağ butonla çalışmıyor

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

DbGrid, title click sağ butonla çalışmıyor

Mesaj gönderen hdayi »

Merhaba,

DbGrid'in OnTitleClick, olayı sadece sol tık yapıldığında çalışıyor, sağ tık yapınca çalışmıyor.

Çalıştırmanın bir yolu var mıdır?

Teşekkürler...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

DBGrid in OnMouseDown olayına aşağıdaki kodu yaz.

Kod: Tümünü seç

procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    DBGrid1TitleClick(nil);
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Tabi soruyu eksik sormuşum. Cevap gelince anladım.

Kod: Tümünü seç

TForm1.DBGrid1TitleClick(Column: TColumn)
buradaki column değişkeni de lazım bana.

Kod: Tümünü seç

Column.FieldName
özelliğini kullanarak bir query çalıştırıyorum.
Hangi başlığa tıklanmışsa o başlığın alanına göre sıralama yapıyor. Ben sağ tık yapınca ters (desc) sıralama yapsın istiyorum.

Kod: Tümünü seç

DBGrid1TitleClick(nil);
ile çağırınca olmuyor bu. Sağ klik yapıldığında TColumn cinsinden bişey de elde etmem gerekiyor.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

if ((Button = mbLeft) or (Button = mbRight)) and (Cell.X >= FIndicatorOffset) and (Cell.Y >= 0) then
if Cell.Y < FTitleOffset then
TitleClick(Columns[RawToDataColumn(Cell.X)])
Dbgrid.pas'ın içindeki mouse up olayını biraz değiştirerek olabileceğini tahmin ediyorum. pas dosyasında değişikliği yaptıktan sonra onu nasıl derlemem lazım?
En son hdayi tarafından 08 Nis 2005 09:25 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

Kod: Tümünü seç

if (Button = mbLeft) and (Cell.X >= FIndicatorOffset) and (Cell.Y >= 0) then
satırını

Kod: Tümünü seç

if (Cell.X >= FIndicatorOffset) and (Cell.Y >= 0) then

şeklinde değiştir ve dbgrids.pas dosyasındaki değişiklikleri kaydet.

C:\Program Files\Borland\Delphi6\Source\Vcl\dbgrids.pas dosyasını
C:\Program Files\Borland\Delphi6\Lib dizinine kopyala ve ardından build all deçeneğini seç.

eğer bu şekilde yemezse C:\Program Files\Borland\Delphi6\Lib dizinindeki dbgrids.dcu dosyasını sil ve ardından tekrar Build All seçeneğini seç.

bu şekilde yaparsan cellclick olayıda sağ tuşla tetiklenebilir. artık duruma göre ilgili kodları şekillendirirsin :)
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Hallettim,
senin dediğin gibi yaparsak orta tuşla falanda aynı event çalışıyor, sadece sol ve sağla olması işime geldi biraz

Kod: Tümünü seç

or (Button=mbRight)
diye değiştirdim.

Teşekkürler...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla