Delphi Kullanarak Fareyle Renk Vurgulama Oluşturma

Fareniz üzerine geldiğinde hiç bir menü veya tablo sütunu veya satır vurgusu farklı bir renkte gördünüz mü? Amacımız burada: fare işaretçisi menzil içinde olduğunda bir satırın vurgulanmasını sağlamak.

TDBGrid Delphi bileşeni, VCL'nin mücevherlerinden biridir. Kullanıcının sekmeli bir ızgaradaki verileri görüntülemesini ve düzenlemesini sağlamak için tasarlanan DBGrid, kendi verilerini temsil etme şeklini özelleştirmek için çeşitli yollar sunar. Örneğin, veritabanı ızgaralarınıza renk ekleme görünümü geliştirecek ve veritabanındaki belirli satırların veya sütunların önemini farklılaştıracaktır.

Ancak, bu konudaki aşırı basit eğitimler sizi aldatmasın. Sadece ayarlamak için yeterince kolay görünebilir dgRowSelect mülkiyet, ama unutmayın dgRowSelect dahil Seçenekler, dgEditing bayrağı yok sayılır, yani ızgarayı kullanarak verileri düzenleme devre dışı bırakılır.

Aşağıda bulacağınız şey, OnMouseOver bir çeşit DBGrid satırı için olay, böylece fare kaydedilir ve konumlandırılır, böylece kayıt bir DBGrid'de karşılık gelen satırı vurgulayacak şekilde etkin hale getirilir.

instagram viewer

OnMouseOver ve Delphi Bileşenleriyle Çalışma

İşletmenin ilk sırası kod yazma için OnMouseMove DBGrid'in farenin üzerinde bulunduğu satır ve sütununu (hücresini) bulabilmesi için bir TDBGrid bileşenindeki olay.

Fare ızgaranın üzerindeyse ( OnMouseMove olay işleyicisi), MoveBy geçerli kaydı fare imlecinin "altında" gösterilene ayarlamak için bir DataSet bileşeni yöntemi.

tip THackDBGrid = sınıf(TDBGrid);
...
prosedür TForm1.DBGrid1MouseMove
(Gönderen: TObject; Shift: TShiftState; X, Y: Tam sayı);
var
gc: TGridCoord;
başla
gc: = DBGrid1.MouseCoord (x, y);
Eğer (Gc. X> 0) VE (Gc. Y> 0) thenbegin
DBGrid1.DataSource. DataSet. MoveBy
(Gc. Y - THackDBGrid (DBGrid1). Sıra);
son;
son;

Benzer kod, farenin hangi hücrenin üzerine geldiğini göstermek ve başlık çubuğunun üzerindeyken imleci değiştirmek için kullanılabilir.

Etkin kaydı doğru şekilde ayarlamak için, bir DBGrid'i hacklemeniz ve ellerinizi korumalı tutmanız gerekir Kürek çekmek Emlak. Kürek çekmek mülkiyet TCustomDBGrid bileşeni, o anda etkin olan satıra referans tutar.

çok Delphi bileşenleri Delphi geliştiricisi için görünmez veya korumalı olarak işaretlenmiş yararlı özelliklere ve yöntemlere sahip olmak. Umarım, bir bileşenin bu tür korunan üyelerine erişmek için "korumalı kesmek" adı verilen basit bir teknik kullanılabilir.

Yukarıdaki kodla, fareyi ızgara üzerinde hareket ettirdiğinizde, seçilen kayıt fare imlecinin "altındaki" ızgarada görüntülenen kayıttır. Geçerli kaydı değiştirmek için tabloyu tıklatmanıza gerek yoktur.

Kullanıcının deneyimini geliştirmek için etkin satırı vurgulayın:

prosedür TForm1.DBGrid1DrawColumnCell
(Gönderen: TObject; const Rekt: TRect; DataCol: Tamsayı;
Sütun: TColumn; Durum: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
veya (gd Odaklıdır) veya (gdS eyalette seçildi) thenbegin
DBGrid1.Canvas. Fırça. Renk: = clSkyBlue;
DBGrid1.Canvas. Yazı tipi. Stil: = DBGrid1.Canvas. Yazı tipi. Stil + [fsBold];
DBGrid1.Canvas. Yazı tipi. Renk: = clRed;
son;
son;

OnDrawColumnCell olayı, hücrenin hücrelerindeki veriler için özelleştirilmiş bir çizim ihtiyacını karşılamak için kullanılır.

Seçilen satırı diğer tüm satırlardan ayırmak için küçük bir numara kullanabilirsiniz. Düşünün ki Kürek çekmek Emlak (tamsayı) eşittir ActiveRecord (+1) mülkü Veri bağlantısı Seçilen satırın boyamak üzere olduğu nesne.

Muhtemelen bu davranışı devre dışı bırakmak isteyeceksiniz ( MoveBy yöntem OnMouseMove olay işleyicisi) DataSet bir DBGrid'e bağlı Düzenle veya Ekle modu.