CxGrid Multiselect List

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

CxGrid Multiselect List

Mesaj gönderen pro_imaj »

Merhaba;

Detaylı arama yapmama karşın bu konuda özet bir bilgi bulamadım. :oops:

Cxgridde Multiselect olarak Seçtiğim EmirNo Alanındaki Bilgileri satır satır nasıl alabilrimi acaba.

(normal tek seçimlerde ilgili query ile ulaşabiliyoruz ama multiselecte nasıl alabiliriz. kısa bir kod yardımcı olacaktır.)

Saygılarımla.
Teşekkür Ederim.
En son pro_imaj tarafından 07 Tem 2006 02:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

viewtopic.php?t=7685&highlight=selectedrows
viewtopic.php?t=4020&highlight=selectedrows
viewtopic.php?t=3877&highlight=selectedrows

Bu 3 mesajı incele sanırım çözersin, olmazsa takıldığın noktayı söylersin.

Kolay gelsin.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba Mustafa Hocam;

Bu 3 msj ziyade fahrettin abininde bir msj var yine onada siz cevaplamışsınız inan hiç anlayamadım. Hatta bir soruda serkan sormuş siz cevaplamışsınız amaoda galiba olmazsa kalsın diye düşündüğünden son cevabı yazmamış.

Kodlardan anladığım kadarıyla itemindexini alıyoruz ama ben text bilgiye ulaşmak istiyoırum.

Seçili olan kayıtların Tümünün Text bilgisine ualşmak istiyorum.
Bişeyleri kaçırıyorum eminim ama. :(

Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

    for I := 0 to VIW_Detail.DataController.GetSelectedCount - 1 do begin
      VIW_Detail.DataController.FocusedRowIndex :=
        VIW_Detail.DataController.GetSelectedRowIndex(I);
      AddToStore;// Bu benim yazdığım bir Procedure.
{VIW a bağladığın Datasource u locate eder. Eğer secron u iptal etmediysen. AddToStore; procedure içinde 
 QUE_Mem.FieldByName('TARIHI').AsDateTime;
şeklinde erişiyor}
    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ı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Cevaplar için tşk ederim ama ben galiba tam anlatamıyorum şimdi;

Kod: Tümünü seç

Var
I:integer;
begin
for I := 0 to cxGrid1DBTableView1.DataController.GetSelectedCount - 1 do begin
Memo1.Lines.Add (inttostr(cxGrid1DBTableView1.DataController.GetSelectedRowIndex(I)) );
end;


end;

Bu kod ile Hangi item indexlere ait onu buluyorum ama diyorumki itemindex'ini aldığım kaydın bilgisi Text bilgisisni nasıl okuyabilirim.

Örn

Kod: Tümünü seç

itemindex                                            MalAdi 
10                                            Burasını nasıl alıcam
 
Saygılarımla
Teşekkür ederim. :oops:
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Ne yalan söyliyeyim en azındanbana anlatamadın :lol: Neden sana index lazım ve bunu ekrana basmak yada bunu kullanmak istiyorsun? UnBounded kullanıyorsan eyvallah ama dbaware kullanıyorsan PRKEY kullan mutlaka. cxGrid kullanıyorsun, kullanıcı caption lara basıp sıralattırırsa senin indexler dağılabilir, yada network te çalışıyorsan bu table a 1 kayıt eklenirse, yada bu qoery referesh edilirse vs vs. ama senin db deki PRKEY değişmez, yukarıda gönderdiğim kodta döngü içinde seçili kayıtlar üzerinde DB üzerinde hareket ediyor, sen o kaydın PRKEY sini yada tüm fieldların bilgilerini alabiliyorsun. Dataset üzerinden.
Ama sen hala bana grid üzerindeki indexler lazım diyosan hemen aklıma gelen, UnBounded bir field ekle bunu visible ını hide edebilirsin, kullanıcı görmez buna bir düngü içinde kendin numara verebilirsin, bunuda setvalue, getvalue ile yapabilirsin. cxgrid helpinde bunlar hakkında bilgi vardı.
İlk satırda yazdığım gibi ne istediğini tam anlamadım fikir vermeye çalışıyorum
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ı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;
Hocam aslında karışık bişey sormuyorum ben en başa döneyim o zamam :)

Soru şöyle

Kod: Tümünü seç

Memo1.Lines.Add (inttostr(cxGrid1DBTableView1.DataController.GetSelectedRowIndex(I)) ); 
Bu şekilde CXGridde seçili olan kayıtların item indexini aldırtabiliyoruz ya bende diyorumki; Ben item indexini istemiyorum seçili kayıtın EmirNo Sütünundaki Text bilgisini istiyorum ama birtürlü ulaşamadım bu veriye.

Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Şu kodun senin işini görmesi lazım :

Kod: Tümünü seç

var
    i: integer;
    aRow: TcxCustomGridRow;
begin
    for i := 0 to tvTest.Controller.SelectedRowCount - 1 do 
    begin
        aRow := tvTest.Controller.SelectedRows[ i ];
        aRow.Values[ tvTestEmirNoKolonu.Index ] //gibi istediğin değerleri alabilirsin. 
//Burdaki tvTest yerine sen kendi tableview ismini yazman lazım. Mesela cxGrid1DBTableView1
     end;
end;
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Kod: Tümünü seç

aRow.Values[ cxGrid1DBTableView1.Index ]

[Error] Unit1.pas(111): Undeclared identifier: 'Index'
bu hatayı alıyorum. Zaten bu özellikte mevcut değil.
Hocam bu çalışlsaydı bile ben ilgili sonuçları nasıl alacaktım bir memo ya mesela.

Bu konu acaip kafamı karıştırdı. Hiçbişey anlayamıyorum. :roll: :duvar:

Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
Z.D.
Üye
Mesajlar: 104
Kayıt: 01 Nis 2006 01:48
Konum: İstanbul

Mesaj gönderen Z.D. »

şöyle bişey yapabilirsiniz sanırım;

Kod: Tümünü seç

Procedure TFrmAsi.cxGridDBTableView1DblClick(Sender: TObject);
Var
  a, b: Integer;
  s: String;
Begin
  a := cxGridDBTableView1.Controller.FocusedRowIndex;
  For b := 0 To cxGridDBTableView1.ColumnCount - 1 Do Begin
    If cxGridDBTableView1.Columns[b].DataBinding.FieldName = 'EMIRNO' Then Begin
      s := cxGridDBTableView1.ViewData.Rows[a].Values[b];
      showmessage(s);
    End;
  End;
End;
cxGridDBTableView1 objesinin OnDblClick eventinde
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Z.D. yazdı: cxGridDBTableView1 objesinin OnDblClick eventinde
Merhaba; Bir fikir verdi üzerinde uğraşacağım ama sanırım sadece aktif olan kaydın değerini veriyor siz ondbclick olayına yazın diye bahsetmişsiniz zaten tekli seçimlerde ben queryden alıyorum. Önemli olan çoklu seçimi alabilmek.

Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
Z.D.
Üye
Mesajlar: 104
Kayıt: 01 Nis 2006 01:48
Konum: İstanbul

Mesaj gönderen Z.D. »

özür dilerim ben multiselect koşuluna dikkat etmedim. eğer ben olsaydım, böyle bir koşul için şöyle bişey yazardım

Kod: Tümünü seç

Procedure TFrmAsi.tbl_ForwardClick(Sender: TObject);
Var
  xRow, xCol, i: Integer;
  xEmirData: String;
Begin
  For i := 0 To cxGridDBTableView1.Controller.SelectedRowCount - 1 Do Begin
    With cxGridDBTableView1.DataController Do Begin
      xRow := cxGridDBTableView1.Controller.SelectedRows[i].Index;
      For xCol := 0 To cxGridDBTableView1.ColumnCount - 1 Do Begin
        If cxGridDBTableView1.Columns[xCol].DataBinding.FieldName = 'EMIRNO' Then Begin
          xEmirData := cxGridDBTableView1.ViewData.Rows[xRow].Values[xCol];
          showmessage(xEmirData);
        End;
      End;
    End;
  End;
End;
herhangi bir eventten alabilirsin. yinede farklı çözümler olabilir, kolay gelsin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Şu kod aktif kolondaki seçilmiş kayıtları dosyaya kaydediyor:

Kod: Tümünü seç

procedure TMyMainDataEntranceForm.Button1Click(Sender: TObject);
var
  I, Idx: Integer;
  aRowInfo: TcxRowInfo;
  aList1: TStringList;
  St1: string;
begin
  if cxGrid1DBBandedTableView1.Controller.FocusedItemIndex < 0 then //Aktif kolondaki seçili kayıtların değerlerini alıp C:\Test.TXT dosyasına kaydedeceğiz
  begin
    ShowMessage('Bir kolon seçmelisiniz!');
    Exit;
  end;
  Idx := cxGrid1DBBandedTableView1.Controller.FocusedItem.Index;
  aList1 := TStringList.Create;
  try
    for I := 0 to cxGrid1DBBandedTableView1.DataController.RowCount - 1 do
    begin
      if not cxGrid1DBBandedTableView1.DataController.IsRowSelected(I) then Continue;
      aRowInfo := cxGrid1DBBandedTableView1.DataController.GetRowInfo(I);
      if aRowInfo.Level < cxGrid1DBBandedTableView1.DataController.Groups.GroupingItemCount then Continue; //Gruplama satırı ise...
      St1 := VarToStr(cxGrid1DBBandedTableView1.DataController.Values[aRowInfo.RecordIndex, Idx]);
      aList1.Add(St1);
    end;
    aList1.SaveToFile('C:\Test.TXT');
  finally
    aList1.Free;
  end;
end;
İyi çalışmalar.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Değerli cevaplarınız için hepinize ayrı ayrı teşekkür ederim.

@Z.D. Yazdığı şu kod ile sorunumu hallettim.

Kod: Tümünü seç

Var
  xRow, xCol, i: Integer;
  xEmirData: String;
Begin
  For i := 0 To cxGrid1DBTableView1.Controller.SelectedRowCount - 1 Do Begin
    With cxGrid1DBTableView1.DataController Do Begin
      xRow := cxGrid1DBTableView1.Controller.SelectedRows[i].Index;
      For xCol := 0 To cxGrid1DBTableView1.ColumnCount - 1 Do Begin
        If cxGrid1DBTableView1.Columns[xCol].DataBinding.FieldName = 'EmirNo' Then Begin
          xEmirData := cxGrid1DBTableView1.ViewData.Rows[xRow].Values[xCol];
          showmessage(xEmirData);
        End;
      End;
    End;
  End; 

@Hakan Can hocam senin verdiğin kodda bir kolonu tamamen seçmek gerekiyor sanırım yani Satırsal bazda bir veya birden fazla seçim yaptığımızda Kolon seçmelisiniz uyarısı veriyor. Yinede çok teşekkür ederim işime yarayacak.

Tekrar teşekkür ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Ben genel bir örnek vermek istemiştim. Yani bulunduğunuz herhangi bir kolondaki seçilmişlerin bilgilerini göstersin şeklinde. Eğer herhalükarda bir kolonun bilgilerini istiyorsanız: acxGridDBBandedTableView.GetColumnByFieldName('emirno').Index özelliğini kullanabilirsiniz.

Gerçi daha bir çok farklı yöntemle istediğinizi gerçekleştirebilirsiniz.

İyi çalışmalar.
Cevapla