Sürükle Bırak işlemini anlamak için bir örnek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
athena
Üye
Mesajlar: 92
Kayıt: 20 Eyl 2003 06:32
Konum: Antalya
İletişim:

Sürükle Bırak işlemini anlamak için bir örnek

Mesaj gönderen athena »

Arkadaşlar Selam,

Sürükle bırak işlemleri hakkında bilgi edinebileceğim bir Delphi örneği bilen varmıdır. Arama sonucunda bir cevabın içinde bir arkadaşımız bahsetmiş ama programın yerini ve adını vermemiş.Bilen arkadaşlar dan yardım eceklere şimdiden teşekürler.

Saygılarımla,
"Millete efendilik olmaz,hizmet olur,
kim Millete hizmet ederse,
o milletin efendisidir."
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

internette (google) zibil gibi ornek var
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

giriyon google drag and drop diyosun bir sürü örnek geliyo
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
athena
Üye
Mesajlar: 92
Kayıt: 20 Eyl 2003 06:32
Konum: Antalya
İletişim:

Sürükle bırak en basit anlatımı

Mesaj gönderen athena »

1. İki çeşit sürükleme vardır. Manual ve Automatic
Nesnenin dragmode özelliği ayarlanır.
2. Label'in Properties'inden DragMode özelliği Automatic seçilir.
3. Üstüne sürüklenen nesnenin dragover olayındaki accept true olacak. Yani statictext'in event bölümünde;
Accept:=True;
4. Sonra sürüklenen yerde ondragDrop olayı oluşur.
5. Kendi üzerine birşey sürüklenen nesnenin sürükleme işlemi devam ederken onDragDop olayı oluşur.
DragDrop : Çekti buraktı,
DragOver : Çekti dolaştırdı.
6. StaticText'in ondragDrop olayına yazılacak kod;
StaticText1.color:=(source as Tlabel).color;

Çalışma 3-1
Yukarıdaki uygulamada; edit1.text içindeki yazı label'lerin üzerine sürüklendiğinde label'lerin caption özelliğine kopyalansın.
Yapılacak İşlemler
1. edit1'in DragMode olayı dmAutomatic yapılır. (properties)
2. Label1'in onDragOver olayına Accept:=True; kodu yazılır:
3. Label1'in onDragDrop olayına Label1.caption:=edit1.text kodu yazılır.
Ama burda sadece bir label için oldu. Biz bütün Label'ler için olmasını istiyorsak eğer;
(sender as Tlabel).caption:=(source as Text).text; kodu yazılır.
Sender : Olayın meydana geldiği yer.

edit1.text:=(sender as Tbutton).caption;
"Millete efendilik olmaz,hizmet olur,
kim Millete hizmet ederse,
o milletin efendisidir."
Kullanıcı avatarı
athena
Üye
Mesajlar: 92
Kayıt: 20 Eyl 2003 06:32
Konum: Antalya
İletişim:

Mesaj gönderen athena »

Yukarıdaki kod basit şekilde olayı anlatıyor. Lazım olursa bir gün birilerine Googledan aramasına gerek kalmamıştır. Artık buradan ulaşabilirler.

Yardımcı olan arkadaşlara teşekürler.

Saygılarımla,

R.M.
"Millete efendilik olmaz,hizmet olur,
kim Millete hizmet ederse,
o milletin efendisidir."
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

biraz sitemkar olmuş ikinci cevap athena ama eline sağlık sağolasın cevabın için

Saygılar...
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
cengaver
Üye
Mesajlar: 111
Kayıt: 01 Nis 2014 05:02
Konum: İstanbul

Re: Sürükle Bırak işlemini anlamak için bir örnek

Mesaj gönderen cengaver »

Bu konu, yeni nesil için önem teşkil ettiğinden ben de somut bir örnekle katkıda bulunmak istedim; Kim bilir, belki kendi kütüphanemde bulamazsam bu foruma bakarım :) Umarım yeni nesle yardımcı olur.

Aşağıda bir TListBox ve bir TMemo nesnesi arasındaki sürükle bırak işlevinin nasıl işlediğine yönelik örnek yer alıyor. Bu örneği çalıştırmadan önce formunuzda bazı düzenlemeler yapmalısınız
  • Formunuza bir TListBox ve bir TMemo yerleştirmelisiniz
    Formunuzdaki TListBox nesnesinin DragMode parametresini dmAutomatic yapmalısınız
    Formunuzdaki TMemo nesnesinin OnDragOver olayına aşağıdaki kodu yazmalısınız

    Kod: Tümünü seç

    procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    begin
      { Eğer kaynak bir TListBox ise işlemi Kabul et. }
      Accept := (Source is TListBox); { Parantez içindeki değer sonuç olarak TRUE veya FALSE değerini üretir... }
    end;
    
  • Formunuzdaki TMemo nesnesinin OnDragDrop olayına ise aşağıdaki kodu yazmalısınız;

    Kod: Tümünü seç

    procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      { Kaynağın türü bir TListBox ise; }
      if (Source is TListBox) then begin
          { Olayı tetikleyen bir TMemo nesnesi ise; }
          if (Sender is TMemo) then begin
              { TMemo üzerinde farenin konumu (X ve Y)'na denk gelen yeri tespit et. }
              TMemo(Sender).SelStart := LoWord(TMemo(Sender).Perform(EM_CHARFROMPOS, 0, MakeLParam( X, Y)));
              { Kaynaktan gelen veriyi yapıştır. }
              TMemo(Sender).SelText  := TListBox(Source).Items[TListBox(Source).ItemIndex];
          end;
      end;
    end;
    
Cevapla