Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği
#1
Selamlar

Belki birisine lazım olur diye burayada kalsın
Windows Explorer üzerinden delphide açık olan bir form üzerine dosya süreükle bırak işlemi örneğidir.
Bu örnek sürüklenen dosyanın full path bilgisi ile bir listbox içerisine ekler.

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, Vcl.Forms, SysUtils, Variants, Classes, Graphics, Controls, Dialogs, StdCtrls, Vcl.AppEvnts;


type
 PChangeFilterStruct = ^TChangeFilterStruct;
 TChangeFilterStruct = record
   cbSize: DWORD;
   ExtStatus: DWORD;
 end;

function ChangeWindowMessageFilterEx(
 hWnd: HWND;
 Msg: UINT;
 Action: DWORD;
 ChangeFilterStruct: PChangeFilterStruct
): BOOL; stdcall; external 'user32.dll';

const
 MSGFLT_ALLOW = 1;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   procedure FormDestroy(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   procedure WMDropFiles(var Msg: TMessage); message WM_DROPFILES;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses ShellAPI;


procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, true);

{$REGION 'Bu yapi tüm uygulama için geçerli olacak şekilde sürükle bırak kontrollerini sağlıyor'}
{
  ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD);
  ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD);
  ChangeWindowMessageFilter ($0049, MSGFLT_ADD);
}
{$ENDREGION}

{$REGION 'Bu yapi sadece pencere bazında geçerli olacak şekilde sürükle bırak kontrollerini sağlıyor'}
  ChangeWindowMessageFilterEx(Form1.Handle, WM_DROPFILES, MSGFLT_ALLOW, nil);
  ChangeWindowMessageFilterEx(Form1.Handle, WM_COPYDATA, MSGFLT_ALLOW, nil);
  ChangeWindowMessageFilterEx(Form1.Handle, $0049, MSGFLT_ALLOW, nil);
{$ENDREGION}

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Form1.Handle, False);

end;

procedure TForm1.WMDropFiles(var Msg: TMessage);
var
hDrop: THandle;
FileCount: Integer;
NameLen: Integer;
I: Integer;
S: string;

begin
hDrop:= Msg.wParam;
FileCount:= DragQueryFile (hDrop , $FFFFFFFF, nil, 0);

for I:= 0 to FileCount - 1 do begin
  NameLen:= DragQueryFile(hDrop, I, nil, 0) + 1;
  SetLength(S, NameLen);
  DragQueryFile(hDrop, I, Pointer(S), NameLen);

  Listbox1.Items.Add (S);
end;

DragFinish(Msg.WParam);
end;

end.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Bu Konudaki Yorumlar
Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği - Yazar: adelphiforumz - 23-01-2025, Saat: 15:01

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  yapay zeka delphi kl007 9 687 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 567 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 390 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 1.376 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y
  Delphi ile SQL server bağlantı hatası yakalama Under 20 2.049 21-11-2025, Saat: 15:24
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi