Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dbgrid Drag&Drop İle Satır Sıralama
#1
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.
Cevapla
#2
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.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#3
Slmlar ustad, Donus icin tesekkurler,
Dbgridte , kayitlari surukler birak ile siralamaya calisiyorum.
Cevapla
#4
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;
Ne ekersen onu biçersin!  Idea
Cevapla
#5
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.
Cevapla
#6
(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.
Cevapla
#7
Arkadaslar merhaba, Bu ornekteki kodlari uyarlayarak sorunu cozmus oldum.
http://caryjensen.blogspot.com/2012/08/d...grids.html

Zaman ayirdiginiz icin tesekkurler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği adelphiforumz 1 582 23-01-2025, Saat: 15:16
Son Yorum: yhackup
  DBGrid Columns Otomatik Boyutlandırma Halil Han BADEM 8 8.187 23-01-2025, Saat: 14:51
Son Yorum: OZCANK
  dbgrid sutun toplamini alip lazreport da gostermek sadikacar60 6 1.111 02-12-2024, Saat: 12:21
Son Yorum: sadikacar60
  Label leri Panel içersinde sıralama mersoy 2 578 10-08-2024, Saat: 03:51
Son Yorum: mersoy
  DBGrid Detay Gösterilmesi. OZCANK 19 13.027 05-04-2024, Saat: 00:48
Son Yorum: Pimapen_Nuri



Konuyu Okuyanlar: 1 Ziyaretçi