PDA

View Full Version : darg & drop کردن فایل txt داخل memo



Ali Najafian
یک شنبه 12 آذر 1385, 08:18 صبح
چگونه می توان محتویات فایل txt را بو سیله drag کردن به یک memo را داخل memo بنویسیم ؟؟

m-khorsandi
یک شنبه 12 آذر 1385, 12:19 عصر
DragAcceptFiles (از یونیت ShellAPI) یه تابع API هست که وقتی با مقدار True فراخوانی بشه،
این اجازه رو به پنجره فعال میده که فایل Drag شده (از محلی رو ) که در این پنجره Drop میشه رو قبول کنه. میتونی تو رویداد OnFormCreate استفاده کنی. وقتی از این تابع استفاده کردی میتونی یکی از پیغامهای ویندوز رو به نام WM_DROPFILES هندل کنی با :
(به عنوان هدر)


procedure Prc_Prv_WMDropFiles(var Prm_Msg: TWMDropFiles); Message WM_DROPFILES;


مثال :

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;


procedure TForm1.PrcWMDropFiles(var Prm_Msg: TWMDropFiles);
var
VarFileName: Array[0..MAX_PATH] Of Char;
begin
Try
If DragQueryFile(Prm_Msg.Drop, 0, VarFileName, MAX_PATH) > 0 Then
Begin
Prm_Msg.Result := 0;
End;
Finally
DragFinish(Prm_Msg.Drop);
End;
end;

dkhatibi
یک شنبه 12 آذر 1385, 13:10 عصر
از اینجا هم می شه چیزهایی یاد گرفت
http://delphi.about.com/od/vclusing/a/dragdrop.htm?terms=drag+drop

Ali Najafian
یک شنبه 12 آذر 1385, 15:40 عصر
من نتونستم این کارو انجام بدم .
جناب m-khorsandi امکان داره اینو بنویسید و اگه میشه بذارید اینجا ؟

farzampur
سه شنبه 14 آذر 1385, 09:15 صبح
سلام
این هم سورس کامل :


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, shellapi;

type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
CFileName: array[0..MAX_PATH] of Char;
begin
try
if DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
begin
Memo1.Lines.LoadFromFile(CFileName);
Msg.Result := 0;
end;
finally
DragFinish(Msg.Drop);
end;


end;

procedure TForm1.FormShow(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;

Ali Najafian
سه شنبه 14 آذر 1385, 23:35 عصر
ولی این کد کاری که انجام نمیده ؟