cxgrid columns control

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

cxgrid columns control

Mesaj gönderen kadirkurtoglu »

s.a.
arkadaşlar cxgrid ile fb 1.5.3 vt den field listeletiyom. 2 index nolu colon yani 3 sıradaki kolon değerleri boş veya null ise mesaj penceresi ile kullanıcıya bu alan boş geçilemez şeklinde mesaj verdiriyom.. buraya kadar herşey normal iken mesaj penceresinin hemen arkasından control 3 index nolu alana yani 4 nolu alana geçmiş. buda doğal olarak 2 kere mesaj penceresi çıkmasına neden oluyor. kontrolün ilgili kolondan kaybedilmesi yeni control sahibinin mesaj penceresi olması olabilir. ancak benim istediğim. kontrol ün 3 index nolu alana geçmesini engellemek...

kod bloğu

Kod: Tümünü seç

if colon boş ise
begin
showmessage('ilgili text');
cxgrid1...Table....Columns[2].Focused := true;
end;
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
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

selam diğer kontrole geçerken verdirdiğin mesajı cxgridin hangi events'ında verdiriyorsun onu bilmiyorum ama şöyle bişey işini görür..
örneğin 2. kolon boş ise 2.kolondan 3.kolona geçerken OnExit gibi bir event varmı kolonlarda bilmiyorum ama

Kod: Tümünü seç

if column2.text='' then begin
showmessage('Bu Alanı Boş Bırakamazsınz !');
abort;
end;
[/quote]
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öncelikle bu kotrolleri database de yapmak daha mantıklı. Query nin beforepost unda bu kotrol leri yaparsın ve duruma görede abort edebilirsin.
kotrol sırasına görede şöyle olabilir sanırım

Kod: Tümünü seç

if QUE_Falanca.FieldByName('FIELD_ADI').isnull or
   (Trim(QUE_Falanca.FieldByName('FIELD_ADI').AsString) = '') then
  begin
    ShowMessage('Kayıt işlemi iptal edildi...');
    Abort;
  end 
  else 
  begin
  if QUE_Falanca.FieldByName('FIELD_ADI_2').isnull or
     (QUE_Falanca.FieldByName('FIELD_ADI').AsInteger < 0) then 
  begin
    ShowMessage('Kayıt işlemi iptal edildi...');
    Abort;
  end 
  else 
  begin
   //.......
  end;
end;
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

verdiğiniz cevaplar için teşekkür ederim...

@serkan demişki
selam diğer kontrole geçerken verdirdiğin mesajı cxgridin hangi events'ında verdiriyorsun onu bilmiyorum ama şöyle bişey işini görür..
ilgili işlemi cxGrid1DBTableView1FocusedItemChanged eventinde yaptırıyorum.
şöyle bişey işini görür..
örneğin 2. kolon boş ise 2.kolondan 3.kolona geçerken OnExit gibi bir event varmı kolonlarda bilmiyorum ama
cx onexit var ancak bu event cxgridden çıkış manasındadır. burda gridden çıkış yok. + demek istediğin oncolexit olayıdır ki o event cxgridde yok maalesef. vermiş olduğun örnekte farklı bi kod olarak abort var ancak abort da işimi görmedi..

@freeman35 demişki
Öncelikle bu kotrolleri database de yapmak daha mantıklı. Query nin beforepost unda bu kotrol leri yaparsın ve duruma görede abort edebilirsin.
kotrol sırasına görede şöyle olabilir sanırım
direkt olarak field bazda yapıyorum zaten. ben detaya girmeyeyim dedim. yaniolayın mantık noktasından bahsettim... burda abort işlemi durdur manasında bi işe yaramadı...
benim sorunum index 2 den controlün index 3'e geçmesini engellemek. bunu enter iiptal ediyom tabı iptal ediyom ancak nafile ne yaparsam yapayım, control index 3'e geçiyor...
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
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam merhaba ..
biraz şansını zorlamak gibi olacak ama cxgridde column ların focusing özelliği var.column3'ü focusing=false yaparsın mouse ile bile giremez kullanıcı .mesela 2.columnun boş olup olmadığını kontrol ettiğin eventda hata mesajını verdir zaten column 3 focusing false olduğu için imleç column 2 de kalacak hata mesajından sonra.yine aynı yere colun2 boş değilse column3'ün focusing özelliğini true yaparsın..sağlam bir kontrol sistemi geliştirmen lazım ama madem illada 3.columna geçemeyecek diyosan bunada katlancan..
Cevapla