Delphi Can

Orjinalini görmek için tıklayınız: dbgrid satırdaki bir alanı salt okunur Hale getirme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
merhabalar

dbgrid içerisindeki 100 adet satır girilmiş olarak duşünelim

ad          soyad    sınıf      deger
ali           abc        1        Readonly=True
hasan       bcd       2        Readonly=false
mehmet    aaa       1        Readonly=True
mahmut    bbb       2        Readonly=false

sınıf 2 olan satırlarımın örnekte 2 ve 4.satırımdakı deger alanını degiştire bilirken 
sınıf 1 olan satırlarımın örnekte 1 ve 3. deger alanının degerlerini degiştirememe readonly alanını true seklinde ayarlama yapabilir miyim.
dbgrid'in cellclick olayına

if  Query1.Fieldbyname('sinif').value=2 then
dbgri1.readonly:=True
Else
dbgri1.readonly:=False;


şeklinde olabilir diye düşünüyorum.
Yukarıdaki kod aynı zamanda Dbgridin key press'ine de yazılmalı mı?
TField 'ın ReadOnly property'si tam da istediğiniz şeyi sağlıyor.
(08-10-2021, Saat: 19:29)mcuyan Adlı Kullanıcıdan Alıntı: [ -> ]dbgrid'in cellclick olayına

if  Query1.Fieldbyname('sinif').value=2 then
dbgri1.readonly:=True
Else
dbgri1.readonly:=False;


şeklinde olabilir diye düşünüyorum.

öncelikle teşekkürler bilgi için ancan tam istedigim gridin bütün alanını degil sadece oradakı sınıf degerleri 2 olan griddeki deger alanlarını kapatmak istıyorum

if Query1.Fieldbyname('sinif').value=2 then
DBGrid1.ColumnByName('deger').ReadOnly:=true;
Else
DBGrid1.ColumnByName('deger').ReadOnly:=false;

bu şekilde sorun çözdüm yardımlarınız için teşekkürler.
(11-10-2021, Saat: 10:30)ibrahim.aydin@perga.com.tr Adlı Kullanıcıdan Alıntı: [ -> ]
(08-10-2021, Saat: 19:29)mcuyan Adlı Kullanıcıdan Alıntı: [ -> ]dbgrid'in cellclick olayına

if  Query1.Fieldbyname('sinif').value=2 then
dbgri1.readonly:=True
Else
dbgri1.readonly:=False;


şeklinde olabilir diye düşünüyorum.

öncelikle teşekkürler bilgi için ancan tam istedigim gridin bütün alanını degil sadece oradakı sınıf degerleri 2 olan griddeki deger alanlarını kapatmak istıyorum

if  Query1.Fieldbyname('sinif').value=2 then
DBGrid1.ColumnByName('deger').ReadOnly:=true;
Else
DBGrid1.ColumnByName('deger').ReadOnly:=false;

bu şekilde sorun çözdüm yardımlarınız için teşekkürler.


Aynı kodu daha pratik şöyle yazabilirsin 
DBGrid1.ColumnByName('deger').ReadOnly:=Query1.Fieldbyname('sinif').value=2;
Ben tüm gridi readonly yapacaksınız sanmıştım. pardon..
(11-10-2021, Saat: 16:18)bydelphi Adlı Kullanıcıdan Alıntı: [ -> ]
(11-10-2021, Saat: 10:30)ibrahim.aydin@perga.com.tr Adlı Kullanıcıdan Alıntı: [ -> ]öncelikle teşekkürler bilgi için ancan tam istedigim gridin bütün alanını degil sadece oradakı sınıf degerleri 2 olan griddeki deger alanlarını kapatmak istıyorum

if  Query1.Fieldbyname('sinif').value=2 then
DBGrid1.ColumnByName('deger').ReadOnly:=true;
Else
DBGrid1.ColumnByName('deger').ReadOnly:=false;

bu şekilde sorun çözdüm yardımlarınız için teşekkürler.


Aynı kodu daha pratik şöyle yazabilirsin 
DBGrid1.ColumnByName('deger').ReadOnly:=Query1.Fieldbyname('sinif').value=2;


bilgi için teşekkürler