Delphi Can
Dbgrid Drag&Drop İle Satır Sıralama - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Dbgrid Drag&Drop İle Satır Sıralama (/showthread.php?tid=5770)



Dbgrid Drag&Drop İle Satır Sıralama - TheEAK - 04-03-2021

Arkadaslar merhabalar, Bir suredir dbgrid teki satırları drag&drop ile sıralamaya çalışıyorum, fakat bu konuda bir başarı elde edemedim. Bu konuda yol gösterebilirseniz sevinirim.

Yardımlarınız için şimdiden teşekkürler.


Dbgrid Drag&Drop İle Satır Sıralama - shooterman - 04-03-2021

Selamlar
Mantığını tam anlamadım yazdıklarınızdan. Bir texti dbgrid içine sürükle bırak yapıyorsanız, drop işlemi bittikten sonra, ilgili query ya da table da tekrar select ile sıralama işlemi yaptırabilirsiniz.


Dbgrid Drag&Drop İle Satır Sıralama - TheEAK - 04-03-2021

Slmlar ustad, Donus icin tesekkurler,
Dbgridte , kayitlari surukler birak ile siralamaya calisiyorum.


Cvp: Dbgrid Drag&Drop İle Satır Sıralama - tmrksmt - 04-03-2021

Merhaba... Arşivimde bulduğum aşağıdaki kodları deneyebilirsiniz...

type
  TDBGHack = class (TDbGrid)
 end;
  
procedure TFormDrag.DBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
 gc: TGridCoord;
begin
 gc := TDBGHack (DbGrid1).MouseCoord (x, y);
 if (gc.y > 0) and (gc.x > 0) then
 begin
   DbGrid1.DataSource.DataSet.MoveBy (gc.y - TDBGHack(DbGrid1).Row);
   DbGrid1.DataSource.DataSet.Edit;
   DBGrid1.Columns.Items [gc.X - 1].Field.AsString := EditDrag.Text;
 end;
 DBGrid1.SetFocus;
end;



Dbgrid Drag&Drop İle Satır Sıralama - TheEAK - 09-03-2021

Tesekkurler, Deneyip sonucu buradan yazarim.

(04-03-2021, Saat: 15:45)tmrksmt Adlı Kullanıcıdan Alıntı: Merhaba... Arşivimde bulduğum aşağıdaki kodları deneyebilirsiniz...

type
  TDBGHack = class (TDbGrid)
 end;
  
procedure TFormDrag.DBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
 gc: TGridCoord;
begin
 gc := TDBGHack (DbGrid1).MouseCoord (x, y);
 if (gc.y > 0) and (gc.x > 0) then
 begin
   DbGrid1.DataSource.DataSet.MoveBy (gc.y - TDBGHack(DbGrid1).Row);
   DbGrid1.DataSource.DataSet.Edit;
   DBGrid1.Columns.Items [gc.X - 1].Field.AsString := EditDrag.Text;
 end;
 DBGrid1.SetFocus;
end;

bu kod calismadi malesef.


Cvp: Dbgrid Drag&Drop İle Satır Sıralama - mustafaozpinar - 09-03-2021

(04-03-2021, Saat: 10:02)TheEAK Adlı Kullanıcıdan Alıntı: Arkadaslar merhabalar, Bir suredir dbgrid teki satırları drag&drop ile sıralamaya çalışıyorum, fakat bu konuda bir başarı elde edemedim. Bu konuda yol gösterebilirseniz sevinirim.

Yardımlarınız için şimdiden teşekkürler.

Selamlar,
DBGrid'le bu şekilde bir sıralama yapamazsınız. Çünkü DBGrid tablo kayıtlarını, kendisi için ayrıca bir dizide tutmaz. Bunun yerine tüm bilgileri tablodan alır. Yani bu şekilde bir işlem yapmak istiyorsanız bunu DataSet üzerinde yapacaksınız. Yani diyelim ki bir MemoryTable ile çalışıyorsunuz. Drag&Drop yaptığınız kayıt başka iki satırın arasına geldi. Bu durumda bu iki satırın sıralama için kullandığınız ID'lerinin arası bir ID'yi taşımak istediğiniz satıra vereceksiniz. Bu işlemi anca bu şekilde yapabilirsiniz. Başka bir yolu ise TStringGrid kullanmaktır. VCL'de TStringGrid ve LiveBinding kullandım ve işe de yaradı. Ama böyle bir işlemi onun üzerinde yapmadım. 

Veya 3.parti gridler kullanacaksınız, bu arada hepsi yapamaz bu işi. Örneğin TMS, Raize, LMD gibi bileşen paketlerinin VCL DBGrid'leri bu işi yapamaz, çünkü onlar da DBGrid gibi data için ayrı bir alan kullanmaz. Bu işi yapabilecek olan, en bilinen DevExpress'in şahane grididir. EhLib var, onu da kullanabilirsiniz.


Dbgrid Drag&Drop İle Satır Sıralama - TheEAK - 18-03-2021

Arkadaslar merhaba, Bu ornekteki kodlari uyarlayarak sorunu cozmus oldum.
http://caryjensen.blogspot.com/2012/08/dragging-and-dropping-into-dbgrids.html

Zaman ayirdiginiz icin tesekkurler.