CXGrid String & DB Grid olarak ayni anda kullanabilme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

CXGrid String & DB Grid olarak ayni anda kullanabilme

Mesaj gönderen Glen »

Selam,

Quantum grid kullanip yeni kolonlar ekliyorum.Grid DBTable ozelligine sahip ve 1 leveldan olusmakta..

Bazi alanlar sadece görünüm olacak bazilari ise hakkaten kayit olucak. Yeni bir kolon ekliyorm, Databinding'ini boş birakiyorum ve propertiesni TextEdit olarak seciyorum. Alana bişeyler yazılabilir ancak başka bir kaydın üstüne gittiğimde yazıdığım bilgi kayboluyor.. Neden oluyor acaba bu?

Teşekkürler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Quantum Gridi 2 türlüde kullanabilirsiniz. Hem hiç DB bağlantısı olmadan, stringGride benzer bir tarzda, hem de DB bağlantılı yapıp bazı kolonları DB'den bağımsız yapabilirsiniz. Mesela bir tabloyu Grid'te gösterip, yanına DB'den bağımsız bir checkbox koyup istediği kayıtları seçtirebilirsiniz.

Bunun adı unbound olarak geçiyor. Quantum Grid'in helpini açıp unbound ve unbound column kısımlarına bakarsanız çok detaylı anlatıyor. Veriyi nasıl yazacağınız ve okuyacağınız örneklerle anlatılıyor.

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

mussimsek yazdı:Quantum Gridi 2 türlüde kullanabilirsiniz. Hem hiç DB bağlantısı olmadan, stringGride benzer bir tarzda, hem de DB bağlantılı yapıp bazı kolonları DB'den bağımsız yapabilirsiniz. Mesela bir tabloyu Grid'te gösterip, yanına DB'den bağımsız bir checkbox koyup istediği kayıtları seçtirebilirsiniz.

Bunun adı unbound olarak geçiyor. Quantum Grid'in helpini açıp unbound ve unbound column kısımlarına bakarsanız çok detaylı anlatıyor. Veriyi nasıl yazacağınız ve okuyacağınız örneklerle anlatılıyor.

Kolay gelsin.
Cok tesekkür ederim ben bi bakınayım bugün takıldığım yerler olursa tekrar sorarım. Teşekürler kolay gelsin
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

mussimsek yazdı:Quantum Gridi 2 türlüde kullanabilirsiniz. Hem hiç DB bağlantısı olmadan, stringGride benzer bir tarzda, hem de DB bağlantılı yapıp bazı kolonları DB'den bağımsız yapabilirsiniz. Mesela bir tabloyu Grid'te gösterip, yanına DB'den bağımsız bir checkbox koyup istediği kayıtları seçtirebilirsiniz.
yukardaki örnegin ufak bir örnegini incelemek isterdim cunki bandsiz yapmak istiyorum o kadar inceleme ragmen yapamadım yardımcı olurmusunuz.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

bandsız derken ne kastettin hocam??? Bandsız yapman mümkün değil.

Benim bahsettiğim unbound olayı, verileri datasource ile DB'den almak değilde, siz kendinizin doldurması/işlemesi olayı.


İstediğini lafla ifade edersen yardımcı olmaya çalışırım.

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Bir sorum olacak, mesela bir il seçimi olsun. İlin adı Istanbul ama kaydederken iladi olarak degil de ilin primary keyini kaydettiriyoruz. Quantum gridde value olarak (primary key 34 olsun kodunla ayni yani) 34 tutup, ancak görünüş olarak İstanbul nasil yazdirabilirim? Ve kişi gelince İstanbul yazısını Tekirdağ olarak değiştirmeye kalktığında o value nin 59 olmasını nasıl sağlayabilirim?..Ve tabiki Bakırköy yazdığında böyle bir il bulunamadı gibi bir uyarı yapıp dolduracaksa bulana kadar, doldurmayacaksa ancak boş bırakarak çıkmasını nasıl kontrol ettirebilirim grid üstünde. Farklı bir konu açmadım çünkü bahsettiğim olayla bağlantılı bir olay bu o bakımdan..

Teşekkürler
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

İlleri bir tabloda tut ve lookupcombo kullan. Grid'de kolonun properties kısmından lookupcombobox seçip ayarlaman yeterli.

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

mussimsek yazdı:İlleri bir tabloda tut ve lookupcombo kullan. Grid'de kolonun properties kısmından lookupcombobox seçip ayarlaman yeterli.

Kolay gelsin.
Ben ili sadece örnek verdim yani bu bir cari hesap kodu kolonu da olabilir yani mesela kullanıcı cari hesap koduna atıyorum 0004HC yazınca OnExit olayinda bir kontrol koymam azim 0004HC yi bulmaya calisacak bulursa 0004HC cari hesap kodlu kaydın primary keyi olan ID sini bir yerde tutacak ve kaydederken o ID yi kaydedecek yani kodunu degil.. Yani o yuzden mesela görünürdeki text hic bir anlam ifade etmiyor sadece görünüş asıl onemli olan arkaplanda tutulan ve vtye kaydedilmeden önce kullanılan ID'si..

Bunu nasıl yapabilirmi yani ButtonEdit kullanmalıyım çünkü eger cari hesap kodunu adam hatırlamazsa butona basıp tüm cari hesapları açacak ve oradan seçicek.

Bu arada cari hesap kodu sadece bir örnekti.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Konu hala cözülemedi cıldırmak üzereyim CxGrid beceremedim:(
Farklı bir örnek ile kısa bir açıklama daha yapmak istiyorum..

STOKID yi değişken gibi düşünüp arka planda tutacak kullancıya göstermiyecek ancak kayıt yaparken STOKID kaydedilecek ve Gridde STOKID kısmında görüntü olarak StokKodu gözükecek.. StokKodu değiştiğinde otomatikman StokID nin de değişmesi lazim..Farklı bir alan yaratıp denedim beceremedim :(

Mustafa abi yok mu bir çözümün :)
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Mustafa yazmışya işte :) lookup kullanabilirsin. Ben Exlookup ı tercih ediyorum. Grid e bağımsız bir view eklemen gerek sadece, bunun ayarlarını yaptıktan sonra grid de ilgili kolon a exlookup ı seç, onun propertilerinden view olark eklediğin bağımsız view ı seç, yukarısında hangi kolon ekrana basılacak onu belirt.birde hangi alanı bağlanacak(prkey olmalı) hepsi bukadar
püf noktası bağımsız olan yani lookup için kullanılacak view da mutlaka prkey eklenmeli ve en üstte olması tavsiye edilir :) visible false ve hide true edilebilinir.

bu işlem lookup gibi çalışır sadece lookupta view yani grid çıkar. bu grid inde bir çok özelliğini kullanabilirsiniz, filtre grup footer vs vs

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 !!!
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Bir sevinçle mesaj yazmıştım çok teşekkür ederim diye ama kursağımda kaldı :'( Lookup aslında tam istediğim gibi yani nasıl diyim arkada ID çalışıyor ancak görünüşte başka bir şey gözüküyor.. Peki lookup & ButtonEdit gibi çalışan aynı anda bişey yapmak mümkün mü? Yani IDlerin karşılığını lookuptan okusun ama istenilince de o buttonla farklı bir tablodan çift tıklama ile seçim yaptırabileyim?.. Eğer mümkün değilse sadece çift tıklama ile seçim yaptırabileceğim bir olay yani dışardan? Bu arada kusuruma bakmıyorsunuz inşallah.. Bu kadar kafamı yormasaydı ben de sizin başınızın etini yemezdim ama işte bayağıdır başım dertte bu olayla ..

Kolay gelsin
freeman35 yazdı:Mustafa yazmışya işte :) lookup kullanabilirsin. Ben Exlookup ı tercih ediyorum. Grid e bağımsız bir view eklemen gerek sadece, bunun ayarlarını yaptıktan sonra grid de ilgili kolon a exlookup ı seç, onun propertilerinden view olark eklediğin bağımsız view ı seç, yukarısında hangi kolon ekrana basılacak onu belirt.birde hangi alanı bağlanacak(prkey olmalı) hepsi bukadar
püf noktası bağımsız olan yani lookup için kullanılacak view da mutlaka prkey eklenmeli ve en üstte olması tavsiye edilir :) visible false ve hide true edilebilinir.

bu işlem lookup gibi çalışır sadece lookupta view yani grid çıkar. bu grid inde bir çok özelliğini kullanabilirsiniz, filtre grup footer vs vs

Kolay gele
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

@Glen, ne yapmak istediğini anlayamadım. Çok karışık düşünüyorsun ya da tam olarak ne yapmak istediğini anlayamadım.

Basit, kullanıcının kılavuzu dahi okumadan kullanabileceği programlar yazman lazım.

Lookup'ın mantığı dediğin gibi ön planda kullanıcının anlayacağı verileri gösterip arkada id/kodları veritabanına yazmaktır. Bu çift tıklamalar vs neden lazım anlayamadım. Örnek verilerle ve tablo adıyla anlatabilir misin?

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Selam mustafa abi,

Tamam yapmak istediğimi öğretmen-öğrenci örneğinle anlatıyım.. Örnek mantıksız gelebilir alanlar ama sadece bir örnek bu biraz uzun oldu kusura bakmayın.. neyse..

Öğretmen tablosu: ID, KODU, ADI alanlarından oluşsun.. // Kodu normalde kullanılmaz ama aklıma başka bir şey gelmedi neyse..
Öğrenci tablosu: ID, KODU, ADI, OGRETMENID // ÖğretmenID dedigim olay hangi öğretmene bağlı olduğu..

Şimdi Öğrenci kayıtları topluca yapılıyor yani Grid üzeirnden yapılacak.. Grid üzerineki alanlar aşağıdakiler gibi:

Öğrenci Kodu - TextEdit şeklinde (CxGriddeki) // El ile yazılacak
Öğrenci Adı - TextEdit şeklinde // El ile yazılacak
Öğretmen Kodu - ButtonEdit // Hem el ile yazılabilecek hem de dışarıdan seçtirilebilecek
Öğretmen Adı - ButtonEdit // Hem el ile yazılabilecek hem de dışarıdan seçtirilebilecek

Farkındaysanız kullanıcıyı OgretmenID ile muhattap etmiyorum arkaplanda çalışıyor o yani Öğrenci tablosuna kayıt yapılırken kullanılıyor.
Yapmak istediğim şu, Kişi eğer biliyorsa Öğretmen Kodunu veya Adını kendi yazacak.Ve eğer yazdığı değerlere karşılık bir kayıt bulunursa arkaplanda ID kısmı değişecek, Eğer bulamazsa
hata vericek böyle bir koda sahip bir öğretmen yok, veya işte böyle bir ada sahip bir öğretmen yok.

Lookup burda çalışıyor tam istediğim gibi ama sorun şu yaptığım şey çok daha komplex bişey yani örnekteki gibi Öğretmen-Öğrenci 'deki gibi yani Ad ve Kod ile bitmiyor olay.
Tablolara bağlı 30 dan fazla Field var ve bunun yanında Örnekteki dışarıdan seçilen alana, bir diğer deyişle Öğretmen'e ait çok fazla bilgi var diğer bilgiler de görülmek istenilebilir. Bu yüzden
öğretmeni lookupda değil de, buttoneditin butonuna basılınca açılacak formdan seçtirmek istiyorum. O formdan çift tıklanılınca Öğretmen Koduna ve Adına öğretmenin kodu ve adı gelecek, arkaplanda da ÖğretmenID değişecek..

Tam tamına yapmak istediğim bu ancak bu da bir problem doğuruyor. Lookup gibi otomatikman Ogretmen ID ye ait Kod ve Ad karşılıklarını gridde göstermesini istiyorum.. Bunu da manuel yaptırırsam eger 1000 tane kayıt varsa ve her 1000 kaydın OnGetText eventine adını ve kodunu veritabanından alan bir kod yazarsam çok buyuk performans sorununa neden olacak.

Uzun oldu ama umarım anlaşılır olmuştur, anlamadığınız bir nokta olursa tekrar anlatabilirim.
mussimsek yazdı:@Glen, ne yapmak istediğini anlayamadım. Çok karışık düşünüyorsun ya da tam olarak ne yapmak istediğini anlayamadım.

Basit, kullanıcının kılavuzu dahi okumadan kullanabileceği programlar yazman lazım.

Lookup'ın mantığı dediğin gibi ön planda kullanıcının anlayacağı verileri gösterip arkada id/kodları veritabanına yazmaktır. Bu çift tıklamalar vs neden lazım anlayamadım. Örnek verilerle ve tablo adıyla anlatabilir misin?

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Selam,

Sorum bayagi bir kompleks oldu sanirim o yuzden kimse okuyamadı :)
Biraz daha kolaylaştırdım bir kaç çözüm buldum geriye sadece şu kaldı..

CxGridde 2 tane kolon, biri database'e bagli öbürü ise database'den bağımsız. Bu kolondan database'e bagli olan ile databaseden bagimsiz olanin her zaman birbirine eşit olmasını istiyorum yani
A yaziyosa öbüründe de A yazmasini istiyorum. OnGetDisplayText eventine yazdigimda Access Violation hatasi veriyor.. Kod Şu..

Kod: Tümünü seç

procedure TForm1.OgrKoduGetDisplayText(Sender: TcxCustomGridTableItem;
  ARecord: TcxCustomGridRecord; var AText: String);
var
itemindex : integer;
begin
    itemindex := UnBoundKodu.Index;
    BandedTableView.DataController.SetDisplayText(ARecord.Index,itemindex,Atext);
end;
Nedeni ne olabilir ?
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Bence OnGetText'le falan uğraşma. İşini iyice karıştıracaksın.

Şöyle bir yöntem izleyebilirsin:

LookupCombox kullan (zaten tavsiye edilmiş). İstediğin kadar kolonu gösterebiliyorsun. Daha birçok özelliği var.
Eğer kullanıcının lookup tablonun tamamını görmesini istiyorsan OnInitPopup eventine şuna benzer bir kod yazarsın:

Kod: Tümünü seç

procedure TMainLookupDataModule.cxEdtRep1LookupComboBoxItemMAINPropertiesInitPopup(Sender: TObject);
begin
  if GetKeyState(VK_LMENU) >= 0 then Exit; //Eğer sol ALT tuşuna basmamışsa normal lookupcombobox görünecek

  with TcxLookupComboBox(Sender) do
  try
    //Burada ilgili formu gösterip istediğiniz işlemleri yaptırırsınız
    //
    //
  finally
    Abort; //Lookupcombobox'ın görünmemesini sağlamak için
  end;
end;
İyi çalışmalar.
Cevapla