Cxgrid seçme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
master_20
Üye
Mesajlar: 85
Kayıt: 27 Eki 2010 09:42

Cxgrid seçme

Mesaj gönderen master_20 »

Merhaba arkadaşlar, cx grid ile yalnızca seçtiğim hücreleri toplu olarak değiştirme işlemini beceremedim, sadece seçtiğim satırları yakaıyorum ama sutunlarda tümünü değiştiriyor onları kısıtlayamadım bir türlü yardımcı olabilecek misiniz
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Cxgrid seçme

Mesaj gönderen tuna »

Yazdığın kodu gönderebilirmisin. Değiştirme işlemini nasıl yapıyorsun. Ona göre yardımcı olalım.
master_20
Üye
Mesajlar: 85
Kayıt: 27 Eki 2010 09:42

Re: Cxgrid seçme

Mesaj gönderen master_20 »

haklısınız, kod aşağıdaki gibi

For i := 0 To cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRowCount - 1 Do Begin
With cxgrdbtblvwcxgrd1DBTableView1.DataController Do Begin
xRow := cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRows.Index;
For xCol := 0 To cxgrdbtblvwcxgrd1DBTableView1.ColumnCount - 1 Do Begin
if cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol)=False then Continue;
If (cxgrdbtblvwcxgrd1DBTableView1.Columns[xCol].DataBinding.FieldName = 'StartTime') Then Begin
// if AViewInfo.Selected=False then Continue;
// cxGridDBTableView1.DataController.IsRowSelected(i)
if cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol)=False then Continue;
ShowMessage('Xcol: '+booltostr(cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol))+': '+cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]);
cxgrdbtblvwcxgrd1DBTableView1.Controller.FocusedRow:=cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRows;

dxmdt1.Edit;
dxmdt1.FieldValues['StartTime']:=(cxdtdt1.Text);
dxmdt1.Post;
cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]:=(cxdtdt1.Text);

//showmessage(xEmirData);
End else
If (cxgrdbtblvwcxgrd1DBTableView1.Columns[xCol].DataBinding.FieldName = 'FinishedTime') Then Begin
// if AViewInfo.Selected=False then Continue;
ShowMessage('Xcol: '+booltostr(cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol))+': '+cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]);
if cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol)=False then Continue;
cxgrdbtblvwcxgrd1DBTableView1.Controller.FocusedRow:=cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRows;
dxmdt1.Edit;
dxmdt1.FieldValues['FinishedTime']:=cxdtdt2.Text;
dxmdt1.Post;
cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]:=cxdtdt2.Text;

//showmessage(xEmirData);
End else
If (cxgrdbtblvwcxgrd1DBTableView1.Columns[xCol].DataBinding.FieldName = 'Tip') Then Begin
// if AViewInfo.Selected=False then Continue;
ShowMessage('Xcol: '+booltostr(cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol))+': '+cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]);
if cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol)=False then Continue;
cxgrdbtblvwcxgrd1DBTableView1.Controller.FocusedRow:=cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRows;
dxmdt1.Edit;
dxmdt1.FieldValues['Tip']:=cxComboBox1.Text;
dxmdt1.Post;
cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]:=cxComboBox1.Text;

//showmessage(xEmirData);
End else
If (cxgrdbtblvwcxgrd1DBTableView1.Columns[xCol].DataBinding.FieldName = 'RootFolder') Then Begin
//if AViewInfo.Selected=False then Continue;
ShowMessage('Xcol: '+booltostr(cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol))+': '+cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]);
if cxgrdbtblvwcxgrd1DBTableView1.DataController.IsRowSelected(xCol)=False then Continue;
cxgrdbtblvwcxgrd1DBTableView1.Controller.FocusedRow:=cxgrdbtblvwcxgrd1DBTableView1.Controller.SelectedRows;
dxmdt1.Edit;
dxmdt1.FieldValues['RootFolder']:=cxtxtdt1.Text;
dxmdt1.Post;
cxgrdbtblvwcxgrd1DBTableView1.ViewData.Rows[xRow].Values[xCol]:=cxtxtdt1.Text;

//showmessage(xEmirData);
End

End;
End;
End;
Kullanıcı avatarı
badkursat
Üye
Mesajlar: 84
Kayıt: 03 Mar 2014 08:58

Re: Cxgrid seçme

Mesaj gönderen badkursat »

Sadece grid görüntüsünde değiştirecekseniz

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  i,RecIdx,ColIdx : Integer;
  OutputVal : Variant;
begin
    for i := 0 to cxGrid1DBTableView1.Controller.SelectedRecordCount-1 do
      begin
        RecIdx := cxGrid1DBTableView1.Controller.SelectedRecords[i].RecordIndex;
        ColIdx := cxGrid1DBTableView1.DataController.GetItemByFieldName('KolonIsmi').Index;
        OutputVal := cxGrid1DBTableView1.DataController.Values[RecIdx, ColIdx];


        cxGrid1DBTableView1.DataController.Values[RecIdx,ColIdx] := Edit1.Text;
      end;
end;
Ama verileri değiştirecekseniz

Kod: Tümünü seç

    
procedure TForm1.Button1Click(Sender: TObject);
begin
    For Index := 0 To cxGrid1DBTableView1.Controller.SelectedRowCount-1 Do
      Begin
        cxGrid1DBTableView1.Controller.SelectedRows[Index].Focused := True;
        ADOQuery1.FieldByName('KolonIsmi').Value := 'Değeriniz';
        //yada
        ADOQuery1.SQL.Text := 'Insert Into felanfişmekan';
        ADOQuery1.ExecSQL;
      End;
end;
Yaptığım denemelerin videosu
Sadece görüntüde değiştiriyor. İsteğe bağlı olarak kaydet butonu konulup, basıldığında değiştirilen verileri veritabanına güncelleyebilirsiniz.
https://www.youtube.com/watch?v=hMwxt-iXRlE
https://youtu.be/Eb4hklfR_aQ
Cevapla