cxgrid drag drop

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

cxgrid drag drop

Mesaj gönderen skyking »

selam arkadaslar

sorum su
ayni cxgrid içinde drag drop yapmak
EMS manager da yapmıslar

google aratım ama bulamadım bir mantık yada bir örnek

kayıtlar
ADI ID
1.GÖKHAN 2
2.VOLKAN 5
3.TOLGA 7

drag drop yapıp
1.VOLKAN 5
2.GÖKHAN 2
3.TOLGA 7

ama burda id adı soyadı uyrugu gibi alanlar var
ben kısaltım sadece mantıgı anlatmak için
yani mouse la yukarı asagı sureklerek order yapmak
yardımcı olursanız cok sevinirim
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

sadece nerden geldiğimi buldum

ama hangi kayıdın ustune atıldıgı nasıl bulabilirim?

Kod: Tümünü seç

procedure TForm1.cxGrid1DBTableView1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
   TargetView : TcxCustomGridView;
   MasterDC : TcxGridDBDataController;
begin
TargetView := TcxGridSite(Sender).ViewInfo.GridView;
   if TargetView.IsDetail then
     MasterDC :=
   TcxGridDBDataController(TargetView.PatternGridView.MasterGridView.DataController)
   else
     MasterDC := TcxGridDBDataController(TargetView.DataController);
    showmessage(MasterDC.DataSet.FieldByName('id').Asstring);

end;


procedure TForm1.cxGrid1DBTableView1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
var
   HT: TcxCustomGridHitTest;
begin
   with TcxGridSite(Sender) do
   begin
     HT := ViewInfo.GetHitTest(X, Y);
     Accept := (HT is TcxGridRecordCellHitTest) and
   (TcxGridRecordCellHitTest(HT).GridRecord.RecordIndex <>
    GridView.DataController.FocusedRecordIndex)
   end;

end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

TStringGrid ile bir örnek hazırldım. Üçüncü parti olsa da çalışacaktır..

- DraDrop olayında X ve Y koordinatları vardır bunu hücreye dönüştürmek için

Kod: Tümünü seç

TcxGrid.MouseToCell(X, Y, Sutun, Satir);
gibi kullanılır.

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
Var
  i,j : Integer;
begin
  StringGrid1.RowCount := 10;
  StringGrid1.ColCount := 10;
  StringGrid1.FixedRows := 0;
  StringGrid1.FixedCols := 0;
  For i := 0 to 10 do
    For j := 0 to 10 do
      StringGrid1.Cells[j, i] := Format('%d, %d', [i, J]);
  StringGrid1.DragMode := dmAutomatic;
end;

Kod: Tümünü seç

procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := True;
end;

Kod: Tümünü seç

procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  Sutun, Satir: Integer;
begin
  StringGrid1.MouseToCell(X, Y, Sutun, Satir);
  ShowMessageFmt('Kaynak Pos: X:%d, Y:%d -> Kaynak Hücre: Sat:%d Sut:%d', [X, Y, Satir, Sutun]);
end;
Resim
Resim ....Resim
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

cxgrid karsılıgı mousetocell

Kod: Tümünü seç

aHitTest := AGridView.ViewInfo.GetHitTest(lPt)
  if AHitTest is TcxGridRecordCellHitTest then
  begin
    ACol := TcxGridRecordCellHitTest(AHitTest).Item.Index;
    ARow := TcxGridRecordCellHitTest(AHitTest).GridRecord.Index;
  end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Doğru aceleyle atlamışım.

- Sonuçta Cell by Cell değil, Record by Record ve Field by Field erişim var Database Grid ve türevlerinde... :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

sonunda yaptım belki birgun lazım olur size

Kod: Tümünü seç

procedure TForm1.cxGrid1DBTableView1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  HT: TcxCustomGridHitTest;
var
   TargetView : TcxCustomGridView;
  acol,arow,recIdx,colIdx,aidNo:integer;
  AGridView: TcxCustomGridView;
  APoint: TPoint;
  AHitTest: TcxCustomGridHitTest;
begin


AGridView := TcxGridSite(Sender).ViewInfo.GridView;
 //nerden yuruklendi
showmessage(AGridView.DataController.Values[AGridView.DataController.FocusedRecordIndex,idx.Index]);

   AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
   if AHitTest is TcxGridRecordCellHitTest then
   begin
   ACol := TcxGridRecordCellHitTest(AHitTest).Item.index;
   ARow := TcxGridRecordCellHitTest(AHitTest).GridRecord.Index;;
  end ;
//nereye sürüklendi
//idx giriddeki colon adi 
  showmessage(AGridView.DataController.Values[ARow,idx.Index]);
// showmessage(AGridView.DataController.Values[ARow,ACol]);


end;
antolog
Üye
Mesajlar: 3
Kayıt: 07 Oca 2008 11:05

Mesaj gönderen antolog »

ben kodu kullanmaya calistim fakat "undeclerad idx" hatasi aliyorum bunu nasil asabilirim.o kismi kapattim showmessage sonucta fakat calismadi.

Tableview in dragmodunu otomatik yaptim.
Eksik bi sey mi yapiyorum

Tesekkuler
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

idx colon un name mi
idx colonunda id ler geliyor
antolog
Üye
Mesajlar: 3
Kayıt: 07 Oca 2008 11:05

Mesaj gönderen antolog »

kaydın tasinmasi islemi nasil gerceklesiyor
Cevapla