cxGrid - Öğrenme - Bilgi Edinme
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
cxGrid - Öğrenme - Bilgi Edinme
Arkadaşlar Merhaba,
Delphi XE2 ile birlikte cxgrid lerde işlemlerimi yürütmeye başladım ancak daha önceden kullanmış olduğum dxgrid veya rzgrid'e pek benzemiyor.Araştırdığım kadarı ile dibi olmayan bir kuyu imiş cxgrid.
mesela daha önce grid ile birlikte seçtiğim satır bağlı olduğu queryininde aktif satırı olduğundan gride tıkladığımda query1.fieldbyname('ISIM').AsString ile istediğim sütuna çok rahat ulaşıyordum.
cxgrid'de işler nasıl ilerliyor.
dxgrid den cxgride geçen arkadaşlara özellikle çok kullanılan kodlar için yardımcı olacak tavsiyelerinizi rica ediyorum.
Teşekkürler...
Delphi XE2 ile birlikte cxgrid lerde işlemlerimi yürütmeye başladım ancak daha önceden kullanmış olduğum dxgrid veya rzgrid'e pek benzemiyor.Araştırdığım kadarı ile dibi olmayan bir kuyu imiş cxgrid.
mesela daha önce grid ile birlikte seçtiğim satır bağlı olduğu queryininde aktif satırı olduğundan gride tıkladığımda query1.fieldbyname('ISIM').AsString ile istediğim sütuna çok rahat ulaşıyordum.
cxgrid'de işler nasıl ilerliyor.
dxgrid den cxgride geçen arkadaşlara özellikle çok kullanılan kodlar için yardımcı olacak tavsiyelerinizi rica ediyorum.
Teşekkürler...
Re: cxGrid - Öğrenme - Bilgi Edinme
GridinViewi.DataController şekline data nesnesine erişebilirsiniz. Tabii rowindex colindex gibi kavramlar da giriyor işin içine.
Örneğin aşağıdaki metod vListeSec isimli checkbox kontrollü sütunda (SEC isimli filedi simgeleyen column) tarama yapıp
check edilen kayıtların vListeID isimli kolondaki (ID alanını simgeleyen sütun) ID değerlerini diziye atarak döndürüyor.
Not:
gridde filtreleme olayı da mevcut biliyorsunuz eğer tm kayıtları değil de sadece filtreli kayıtları döndürmek istiyorsanız
yerine
ve
yerine
kullanmanız gerekir.
Örneğin aşağıdaki metod vListeSec isimli checkbox kontrollü sütunda (SEC isimli filedi simgeleyen column) tarama yapıp
check edilen kayıtların vListeID isimli kolondaki (ID alanını simgeleyen sütun) ID değerlerini diziye atarak döndürüyor.
Kod: Tümünü seç
var
dc : TcxCustomDataController;
i : Integer;
v : Variant;
b: Boolean;
begin
SetLength(Result,0);
dc := vListe.DataController; // vListe = gridin view'i ben ismini vListe koydum. her seferinde bu kadar uzun yazmamak için dc isimli bir değişkene datacontrollerini ekledim (with deyimi de kullanılabilirdi ama koda ger dönüşlerde sıkıntı oluyor)
dc.BeginUpdate; // disablecontrols gibi bişey. Performans ve veri bütünlüğü için gerekli
for i := 0 to dc.RecordCount - 1 do // while not eof gibi
Begin
v := dc.GetValue(i,vListeSec.Index); // birinci parametre kayıt numarası ikinci parametre almak istediğimiz sütunun index numarası dönüş değeri variant
b := (VarIsNull(v)= False) and (v= True); //burası şart değil ama kontrol anlaşılır olsun diye.
if b then
Begin
SetLength(Result,Succ(Length(Result)));
Result[High(Result)] := dc.GetValue(i,vListeId.Index); // bu sefer ID alanın değerini alıyor.
end;
End;
dc.EndUpdate;
gridde filtreleme olayı da mevcut biliyorsunuz eğer tm kayıtları değil de sadece filtreli kayıtları döndürmek istiyorsanız
Kod: Tümünü seç
for i := 0 to dc.RecordCount - 1 do
Kod: Tümünü seç
for i := 0 to dc.FilteredRecordCount - 1 do
Kod: Tümünü seç
v := dc.GetValue(i,vListeSec.Index);
Kod: Tümünü seç
v := dc.GetFilterDataValue(i,vListeSec.Index);
Re: cxGrid - Öğrenme - Bilgi Edinme
öncelikle bilgiler için çok teşekkür ederim de, her seferinde bu kadar uğdaşmak mı gerekli.? Eskisi gibi query i kullanıyor olmamız mümkün değil mi .?
Re: cxGrid - Öğrenme - Bilgi Edinme
Elbette ki filtreleme için query yada datasetin kendi filter özelliğini kullanabilirsiniz.
Burada query mi yoksa grid filter mi kullanacağız sorusunun cevabı sizin keyfinize veyahut kullanım yerine (local, network, web) kalmış bir durum.
yukarıdaki örnekte grid üzerinde vListeSec sütunu datasetten ayrı olarak eklenmiş bir kontrol alanı ve buna erişmek için böyle bir tarama yöntemi kullandım.
cxgridde seçili satıra ait değerleri almak istiyorsanız gene grid.DataController.GetValue deyimini (veyahut bunun ibi alternatif deyimleri) kullanmanız gerek. Zira cxgrid, alışılagelen gridler gibi seçili satır değiştiğinde datasetin aktif kayıt konumunu değiştirmez (performans arttırmak için ve aynı tabloya birden fazla view kullanılabildiği için) (bu işlemin yapılmasını sağlayan bir option var diye hatırlıyorum).
O nedenle dataset.FieldByName('xxx').Asxxx deyimi ile cxgridin viewinde seçili olan kaydı alamazsınız.
Böyle erişimler o kadar da komplex değil. Biraz inclendiğinde Yukarıdaki örnek ile while not eof deyimi arasında çok da fazla extra kod yazımı yok aslında.
Burada query mi yoksa grid filter mi kullanacağız sorusunun cevabı sizin keyfinize veyahut kullanım yerine (local, network, web) kalmış bir durum.
yukarıdaki örnekte grid üzerinde vListeSec sütunu datasetten ayrı olarak eklenmiş bir kontrol alanı ve buna erişmek için böyle bir tarama yöntemi kullandım.
cxgridde seçili satıra ait değerleri almak istiyorsanız gene grid.DataController.GetValue deyimini (veyahut bunun ibi alternatif deyimleri) kullanmanız gerek. Zira cxgrid, alışılagelen gridler gibi seçili satır değiştiğinde datasetin aktif kayıt konumunu değiştirmez (performans arttırmak için ve aynı tabloya birden fazla view kullanılabildiği için) (bu işlemin yapılmasını sağlayan bir option var diye hatırlıyorum).
O nedenle dataset.FieldByName('xxx').Asxxx deyimi ile cxgridin viewinde seçili olan kaydı alamazsınız.
Böyle erişimler o kadar da komplex değil. Biraz inclendiğinde Yukarıdaki örnek ile while not eof deyimi arasında çok da fazla extra kod yazımı yok aslında.
Re: cxGrid - Öğrenme - Bilgi Edinme
bununla ilgili aslında yapmak istediğim şey.ihtiyacım olan şey grid üzerindeki seçili satırdaki veriye query ile ulaşmaktı ancak böyle değilmiş.peki bununla ilgili option hatırlayabildiniz mi ben bulamadım çünkü. neyse dediğiniz gibi bunun ile yazmaya başlayınca alışırız ve kodlar alışageldik olur artık.
ayrıca işin içine rowindex ve columnindex giriyor ya ben columnindexi sağlıklı bulmadığım için column adı ile çağırmak istesem bunun için ne yapacağım veya gride tıklandığında editin içine herhangi bir sütunun değerini nasıl alacağım.?
Teşekkürler,
İyi Çalışmalar.
ayrıca işin içine rowindex ve columnindex giriyor ya ben columnindexi sağlıklı bulmadığım için column adı ile çağırmak istesem bunun için ne yapacağım veya gride tıklandığında editin içine herhangi bir sütunun değerini nasıl alacağım.?
Teşekkürler,
İyi Çalışmalar.
Re: cxGrid - Öğrenme - Bilgi Edinme
Zaten orada kullandığınız index öyle normal griddeki sütun numarası değil (yani çoğunlukta öyle ama pratikte değişiyor kullanıcı müdahalesiyle)
yukarıdaki örnekte KolonAdi.Index şeklinde (vListeSec.Index) kullanmışım zaten. Yani yöntem sağlıklı
yukarıdaki örnekte KolonAdi.Index şeklinde (vListeSec.Index) kullanmışım zaten. Yani yöntem sağlıklı
Re: cxGrid - Öğrenme - Bilgi Edinme
ini dosyasına tıkladığım bir alanı kayıt ettiriyorum variant tipi ile;
sonra tekrardan program açıldığında iniden dosyayı okutuyorum ama cxgrid inideki alanı seçili hale getirmem gerekiyor? ne yapmam gerekiyor ki?
Locate ? vs?
sonra tekrardan program açıldığında iniden dosyayı okutuyorum ama cxgrid inideki alanı seçili hale getirmem gerekiyor? ne yapmam gerekiyor ki?
Locate ? vs?
En iyi Sistem fişi çekilmiş Sistem'dir.
Cyber-Warrior.org/K@R@GLU
Cyber-Warrior.org/K@R@GLU