Listboxa sürükle bırak?

Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Selam...
Arkadaşlar aşağıdaki kodlarla Browsefolder komutu ile bir klasör içindekileri (yolu KlasorListesine,içindeki dosya isimlerini CalmaListesine)listeletiyorum.
Kod:
Private Sub DosyaAc_Click()
On Error Resume Next
    Dim FileNames, Direccion As String
    Direccion = BrowseForFolder(Me.hwnd, "Klasör Seçiniz...")
    FileNames = Dir$(Direccion & "*.*")
    While Len(FileNames) > 0
        Select Case UCase(Right(FileNames, 3))
        Case "MP3", "MPG", "PEG", "DAT", "AVI"
            KlasorListesi.AddItem Direccion & FileNames
            CalmaListesi.AddItem FileNames
        End Select
        FileNames = Dir$
    Wend

End Sub
Sorum şu:
BrowseFolder komutu dışında (media Player mantığı ile) seçtiğimiz bir klasörü sürükleyip listbox a bıraktığımızda aynı işlemi nasıl yaptırabiliriz?
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Biraz problem çıkardı ama,API yardımıyla sorunu çözdüm.
Teşekkür ederim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu çözümü bizimle paylaşırmısınız.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Sayın Levent Bey;
Sorumu zaten dikkat ederseniz VB6 için sormuştum.Çünkü henüz excel VBA da henüz listbox ın DragMode olayını keşfedemedim.Fakat Excel-VBA üzerindeki çalışmalarım sürüyor.Çünkü Excel-VBA daki listbox ın böyle bir kullanımı yok(normalde),fakat sanırım bu sorunda api ile çözülebilir.Uğraşıyorum.
Ancak VB6 daki çözümü sunayım.Belki bu konuda sizin bir fikriniz olabilir:
Module kodları
Kod:
Option Explicit

Type POINTAPI
  x As Long
  y As Long
End Type
Type MSG
  hWnd As Long
  message As Long
  wParam As Long
  lParam As Long
  time As Long
  pt As POINTAPI
End Type
Declare Sub DragAcceptFiles Lib "shell32.dll" (ByVal hWnd As Long, ByVal fAccept As Long)
Declare Sub DragFinish Lib "shell32.dll" (ByVal hDrop As Long)
Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop As Long, ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Public Const PM_NOREMOVE = &H0
Public Const PM_NOYIELD = &H2
Public Const PM_REMOVE = &H1
Public Const WM_DROPFILES = &H233
Form Kodları:
Kod:
Option Explicit
Private Sub cmdclear_Click()
KlasorListesi.Clear
End Sub

Private Sub cmdexit_Click()
End
End Sub
Private Sub Form_activate()
DragAcceptFiles frmmain.hWnd, True
Visible = True
WatchForFiles
End Sub
Public Sub WatchForFiles()
Dim FileDropMessage As MSG
Dim fileDropped     As Boolean
Dim hDrop           As Long
Dim filename        As String * 128
Dim numOfDroppedFiles As Long
Dim curFile         As Long
Dim ret As Long
Do
  If fileDropped Then
    hDrop = FileDropMessage.wParam
    numOfDroppedFiles = DragQueryFile(hDrop, True, filename, 127)
    For curFile = 1 To numOfDroppedFiles
      ret = DragQueryFile(hDrop, curFile - 1, filename, 127)
      KlasorListesi.AddItem filename
          Next curFile
Dim AnyString, MyStr
    Dim FileNames, Direccion As String
            If KlasorListesi.ListIndex <> KlasorListesi.ListCount - 1 Then
                    KlasorListesi.ListIndex = KlasorListesi.ListIndex + 1
                End If
    Direccion = KlasorListesi.Text
    FileNames = Dir$(Direccion & "\*.*")

    While Len(FileNames) > 0
        Select Case UCase(Right(FileNames, 3))
        Case "MP3", "MPG", "PEG", "DAT", "AVI"
            CalmaListesi.AddItem FileNames
        End Select
        FileNames = Dir$
    Wend

    DragFinish hDrop
  End If
  DoEvents
   Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
 
Son düzenleme:
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Galiba bi&#351;eler oldu.Alpi arkada&#351;&#305;m&#305;nda yard&#305;m&#305;yla sorun tamamen &#231;&#246;z&#252;lm&#252;&#351;t&#252;r.Yukar&#305;da da belirtti&#287;im gibi Excel-VBA da ListBox'&#305;n Drag&Drop(s&#252;r&#252;kle-b&#305;rak) &#246;zelli&#287;i mevcut de&#287;il.Fakat say&#305;n Alpi nin &#246;nerisi &#252;zerine Listview kullanmaya karar verdik(buda bize &#351;unu g&#246;steriyor ki nesneleri ve &#246;zelliklerini iyi tan&#305;mam&#305;z gerekir).
A&#351;a&#287;&#305;daki &#231;al&#305;&#351;mada iki &#246;rnek g&#246;receksiniz.



__________________
D&#304;&#286;ER &#199;ALI&#350;MALAR

Masa&#220;st&#252; Sinema v1.0(VB6-Program)
MP3Player v2.0(VB6-Program)
ACCESS G&#214;RSEL E&#286;&#304;T&#304;M
&#214;&#286;RENC&#304; TAK&#304;P PROGRAMI(Excel ile Access VeriTaban&#305; Uygulamas&#305;)
CPU Noya G&#246;re &#350;ifreleme
USERFORM G&#214;R&#220;N&#220;MLER&#304;
POPUP TAKV&#304;M UYGULAMASI
LCD SAAT UYGULAMASI
XCelMedia v1.0
JakcPot v1.0(oyun)
&#350;ansl&#305; 7 Oyunu
K&#304;ML&#304;K SORGULAMA(web &#252;zerinden)
L&#304;STV&#304;EW UYGULAMASI
DRAG&DROP(S&#220;R&#220;KLE-BIRAK) UYGULAMASI
B&#304;LD&#304;R&#304;M ALANINA M&#304;N&#304;M&#304;ZE(VB6)
 
Son düzenleme:

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,680
Excel Vers. ve Dili
Excel 2019 Türkçe
Say&#305;n Tankut SAZLI ve Say&#305;n Alpi, b&#246;yle g&#252;zel ve de&#287;i&#351;ik &#231;al&#305;&#351;malar i&#231;in te&#351;ekk&#252;rler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıda da belirttiğim gibi Excel-VBA da ListBox'ın Drag&Drop(sürükle-bırak) özelliği mevcut değil.
Burada bir yanlışlığı düzeltelim. Listboxun bununla ilgili eventleri mevcuttur. (BeforeDragOver ve BeforeDropOrPaste) Konuyla ilgili bir örnek dosya eklerim.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Teşekkür ederim(-iz).
Levent beyin düzeltmesi üzerine şunu söylemek isterim.Listbox'ın dra&drop özelliği derken properties ayarlarından kasdetmiştim.Ayrıca yanlışsam galiba yine düzeltmelisiniz,bahsettiğiniz BeforeDragOver ve BeforeDropOrPaste kombinasyonunun listboxta listelenen verilerinin yerlerini kaydırmak için ya da bir listboxtan diğerine satır aktarmak için olduğunu hatırladığımdan üzerinde fazlaca uğraşamadım.
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ekli dosyay&#305; inceleyin. Listbox1den fare ile tutaca&#287;&#305;n&#305;z bir veriyi listbox2 ye ta&#351;&#305;yabilirsiniz.

Bu &#246;zellik properties olarak yok hakl&#305;s&#305;n&#305;z (textbox ve comboboxlarda mevcut)

Listboxta ancak eventleri kullanarak sonu&#231; elde etmek m&#252;mk&#252;n.

Not: Bu arada ekledi&#287;iniz dosyada benmi bir &#351;eyi atl&#305;yorum listview bo&#351; olarak &#231;&#305;k&#305;yor. Yada kullan&#305;m &#351;ekli nas&#305;l?
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Levent Bey;
&#214;rne&#287;i inceledim.Zaten benimde yukar&#305;da bahsetti&#287;im &#351;eyde buydu,yani listbox&#305;n mevcut drag&drop eventleri sadece ya kendi i&#231;inde sat&#305;rlar&#305;n yerini kayd&#305;rmak i&#231;in yada bir listten di&#287;erine veri ta&#351;&#305;mak i&#231;in.Yaln&#305;z san&#305;r&#305;m(yanl&#305;&#351; anlamad&#305;msa) sizin atlad&#305;&#287;&#305;n&#305;z(ve listviewin bo&#351; &#231;&#305;kmas&#305; normal) &#351;ey ben bunu excel i&#231;indeki yada d&#305;&#351;&#305;ndaki herhangibir veriyi listeletmek i&#231;in kullanm&#305;yorum.
Buradaki kullan&#305;m &#351;&#246;yle ayn&#305; Windows Media Playerde oldu&#287;u gibi bir klas&#246;r&#252; fare ile tutarak listview &#252;zerine s&#252;r&#252;kleyi,Buradaki listeleme klas&#246;r i&#231;indeki dosyalar&#305;n listenmesidir.Ha e&#287;er yanl&#305;&#351; anlad&#305;m da zaten siz bunu yapman&#305;za ra&#287;men listeleme olmuyorsa bazen ilk seferinde klas&#246;r bilgisini alamayabiliyor(ne yaz&#305;kki excel bu konuda bazen vb6 kadar tutarl&#305; davranamayabiliyor),bir iki kez deneyin,ayr&#305;ca &#252;st&#252;ste defalarca klas&#246;r ekleyebilirsiniz.
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Tamam şimdi anladım açıklama için teşekkürler.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Ne demek Levent bey, vazifemiz.
 
Üst