cxgrid de görünen kayıtların indexlerini değiştirmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

cxgrid de görünen kayıtların indexlerini değiştirmek

Mesaj gönderen tuanna »

aslında yapmak istediğim su bir cx grid de görüntülediğim kayıtları kullanıcı mouse ile alıp en alttaki kaydı en üste koyabilsin veya ...

aıtoyorum en alttan 3 kaydı seçsin alıp bunu en başa ve istediği yere bırabilsin bunu nasıl yaparım...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Mutlaka daha teknik bir metod vardır ama araştıracak vaktim yok.

- Bunu direkt yapmayı denemedim, mecbur olsaydım önceki tecrübelerimden kolaj yapar şunu denerdim.

1. - Öncelikle veritabanında bu iş için bir SWAP alanı olurdu. Neden, çünkü numaralarını değiştireceğim kayıtların eski nolarının yedeklenmesi lazım.

2. - MouseToCell ile BeginDrag olduğu yerdeki X,Y koordinatlarının hangi satır , sütun'a ait olduğunu global bir değişkene atardım.

3. - Sonra DragDrop olan yerde de aynısını yapar yeni satır ve sürun koordinatlarını alırdım.

4. - Bu iki satır farkı bana kaç kayıt önce veya sonraya olduğunu verir. Satır farkı kadar kayıt gerideki veya ilerideki kaydı yardımcı bir SQL ile tespit ederdim.

- Dayanak noktalarım belli oldu mu ? evet :) Gerisi Database operasyonuna kalıyor.

Başarılar..
Resim
Resim ....Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

cxGrid in bağlı DataSet in indeks yapısından bağımsız her bir alanı ayrı ayrı sıralayabildiğinden bu sıralamayı etkileyecek bir kayıt yer değiştirme nasıl olur bilemiyorum. Tüm sıralama olaylarını kapatıp Muharrem hocamın söylediğine benzer birincil indeksi (PK) değiştirerek bu işlemi yapmak mümkün görünüyor. Diyelim beşinci sıradaki kayıtı dokuzuncu kayıtın sonrasına koymak gerekti. Öncelikle fare ile tutulan beşinci kayıtın bırakıldığı yerdeki (buradaki dokuz) kayıt sıra nosu + 1 yapılır. Beşinci kayıtın yeni sira_no alanı (PK) taşınan yerin bir sonrası olarak atanır. Tabi öncesinde buradan sonrakileri de birer artırmak gerekiyor :!: Bu pekâlâ mümkündür. Master/Detail yapılarda meşakatlı olur :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla