cxgridde bazı satırları read-only yapma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
rahim123
Üye
Mesajlar: 29
Kayıt: 03 Ara 2003 05:49

cxgridde bazı satırları read-only yapma

Mesaj gönderen rahim123 »

arkadaşlar cxgrid üzerinde bazı satırların sadece görülmesini yani read only olarak kalmasını istiyorum bunu nasıl yaparım denemiş arkadaşar var mı . örn. bir isim listesi çıkacak ama durumu 1 olanlar üzerinde seçim değişiklik yapımasını engelleyeceğim. teş.ettim
.net icat oldu mertlik bozuldu
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

Lazım olmadığından denemedim ama şöyle bir vt siz cxgrid koyduğumda ve colonlarını oluşturduğumda ilgili kolonun propertisini textedit olarak ayarlayınca propertie özelliklerinde readonly özelliği kullanılabilir hale geliyordu. sizde grid gösterildiğinde if şartı ile ilgili alanda 1 olan varsa gridin ilgili kolonunu readonly yapabilirsiniz.

Kod: Tümünü seç


if falan alan =1 ise
    gridin ilgili kolonunu.properties.readonly:=true;
end;
gibi. kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
rahim123
Üye
Mesajlar: 29
Kayıt: 03 Ara 2003 05:49

Gridde satır bazlı read only

Mesaj gönderen rahim123 »

gridim bir vt ye baglı öncelikle bunu belirteyim. örneklememi yenileyim arkadaşlar. mesela seri numaraları listesi gelecek ekrana ama kullanılmış olanlar satır bazında pasif olacak yani görülecek ama seçilemeyecek
.net icat oldu mertlik bozuldu
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

gridin bağlı olduğu dataset ya da querynin afterscroll olayına kod yaz bence. after scrollda ilgili alanın değerini kontrol ettir. bu kontrol sonucuna göre readonly'yi true ya da false yaparsın.
@bobasturk yakın bir cevap vermiş ama o kolon bazında ele almış olayı.
sizin sorununuz ise satır bazında readonly olması.
aşağıdaki kod işinize yarar umarım.

Kod: Tümünü seç

procedure TData.arazi_srgAfterScroll(DataSet: TDataSet);
begin
try
  begin
  if araziisaretli.text='1' then
    rxdbgrid1.readonly:=true;
    else rxdbgrid1.readonly:=false;

  end;
except end;
end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

@nitro ustam doğru söylersin. bende az önce yanlış yaptığımı anlamış ve foruma girip birdaha bakayım demiştim ve yanlışımı gördüm teşekkürler.

yalnız benimde kafama takıldı bu durumda tüm grid readonly olmazmı. belirli satırların read only olması gerekiyor sanırım.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

hocam dediğiniz gibi tüm grid readonly olur. ama bu readonly olayı veritabanındaki değere göre anlık değişeceği için kullanıcı bu farkı anlayamaz ve gözlemleyemez.
mesela değeri 1 olan bir satırdayız, grid o durumda readonly:=true olacak ve değişiklik yapamayacağız. daha sonra değeri 0 olan bir satırı tıkladık diyelim, afterscroll'a yazdığımız kod gridi readonly:=false yapacak ve satırda değişiklik yapabileceğiz :)
umarım anlatabilmişimdir.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

ustam teşekkür ve saygılarımla. konuyu böyle algılamamıştım. yani scroll olayı olsada grid readonly olarak açılacak ve öyle kalacak düşüncesi hasıl olmuştu.

tekrar teşekkürler kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

rica ederim hocam. ufak bir ayak oyunu işte :)
sonuçta bizler programcılar olarak; tıkır tıkır çalışan sistemlerin arkasındaki karmaşanın mimarlarıyız. Haliyle böyle göz yanıltmacalarına hakkımız vardır. :)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Read Only yapmak istediğin kolonların Options kısmından Editing özelliğini False yap...

Kolay gelsin.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Re: cxgridde bazı satırları read-only yapma

Mesaj gönderen nitro »

mustafa hocam affınıza sığınarak konunun algılanması konusunda ufak bir hatırlatma yapıyorum.
rahim123 yazdı:...... satırların sadece görülmesini yani read only olarak kalmasını istiyorum ....
saygılarımla

biLaL türk
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

Kod: Tümünü seç

cxGrid1DBTableView1.OptionsSelection.MultiSelect := true;
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
rahim123
Üye
Mesajlar: 29
Kayıt: 03 Ara 2003 05:49

hocalar ayak oyunları iyide

Mesaj gönderen rahim123 »

peki read-only false olan satırların renginide değiştirmek istesem ne halt etçem ?? :lol:
.net icat oldu mertlik bozuldu
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

kendi programımda kullandığım bir kodu gönderiyorum. kendi programına göre düzenlersen işini görür. Bu kodu söz konusu grid'in drawcolumncell eventine yazıyorsun.

Kod: Tümünü seç

procedure Ttaksit_kart.RxDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if taksit_kart.rxdbgrid1.DataSource.DataSet.FieldByName('onay').text<>'' then
    begin
    taksit_kart.rxdbgrid1.canvas.Brush.Color:= clskyblue;
    taksit_kart.rxdbgrid1.Canvas.FillRect(rect);
    taksit_kart.rxdbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

    end;
end;
bu kod dbgridde onay fieldi boş olmayan satırları maviye boyuyor.
kolay gelsin
rahim123
Üye
Mesajlar: 29
Kayıt: 03 Ara 2003 05:49

slm

Mesaj gönderen rahim123 »

bunu cxgridde yapmak istiyorum rxte sanırım bu şekilde oluyo ama cxgridde farklı bi yöntem olmalı
.net icat oldu mertlik bozuldu
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

drawcolumncell eventi en basit dbgridde bile olduğuna göre cx gibi gelişmiş bir gridde de vardır diye düşünüyorum. Bende cxgrid yok. o nedenle kontrol edemiyorum. Cx'gridi olan arkadaşlar kontrol ederlerse sevinirim.
Cevapla