نمایش نتایج 1 تا 2 از 2

نام تاپیک: چطور یک فایل رو لیست باکس درگ(Drag) کنیم؟

  1. #1
    کاربر دائمی آواتار hex161
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    تهران
    پست
    277

    چطور یک فایل رو لیست باکس درگ(Drag) کنیم؟

    با سلام.
    من میخواهم کاری کنم که وقتی کاربر یک فایل رو از داخل ویندوز به لیست باکس من کشید (درگ کرد) آدرس فایل تو لیست باکس یا Edit box نمایش داده بشه.مثلا تو برنامه مدیا پلیر ما میتونیم فایل های موسیقی یا فیلم ها رو از داخل ویندوز به لیست مدیاپلیر بندازیم.
    خواستم ببینم چطور میشه این کار رو انجام داد؟
    البته تو وی بی من براحتی این کار رو انجام میدادم .تو وی بی در رویداد OLEDragDropبا یک خط کد این کار انجام میشه.ولی تو دلفی نمیدونم چطوریه.
    با تشکر.

  2. #2
    می تونی با پردازش پیغام WM_DROPFILES این کار رو انجام بدی. باید اول برنامه ات را به عنوان برنامه ایی که فایل های درگ شده را قبول میکنه رجیستر کنی و یه Message Handler هم برای WM_DROPFILES بسازی و توش با استفاده از DragQueryFiles نام و تعداد فایلهای درگ شده را بدست بیاری. تمام توابع فوق در یونیت ShellAPI تعریف شدند و نحوه استفاده از اونها در Windows SDK توضیح داده شده.
    نمونه ای از کدی که فایلهای درگ شده را به لیست باکس اضافه میکنه:

    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    ShellAPI {ShellAPI is rquired};
    type
    TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    //WM_DROPFILES is sent to any window that is registered to accept draged
    //files from explorer.
    procedure WMDROPFILES(var MSG : TMessage); message WM_DROPFILES;
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    //Register the main window to accept draged files
    DragAcceptFiles(Handle,True);
    end;
    procedure TForm1.WMDROPFILES(var MSG: TMessage);
    var
    hDrop : integer; //Drag data
    FileCount : integer;
    FileName : Array[ 0..Max_Path] of char; //Buffer
    Index : integer; //Index of the file
    begin
    //WParam contains a pointer to the drag info. This data is created by Windows
    //and must be freed by DragFinish.
    hDrop := Msg.WParam;
    //Passing $FFFFFFFF to DragQueryFile returns the numnber of files which are
    //draged.
    FileCount := DragQueryFile(hDrop,$FFFFFFFF,FileName,SizeOf(File Name));
    //iterate in the draged files list and add each file to the listbox.
    Index := 0;
    repeat
    //Get file name for each item.
    //DragQueryFile returns the number of bytes returned as the file name. If
    //is 0 then no data is returned and an error has been accured.
    if DragQueryFile(hDrop,Index,FileName,SizeOf(FileName )) > 0 then
    ListBox1.Items.Add(FileName)
    else
    raise Exception.Create('File Drag Error');
    Inc(Index);
    until Index = FileCount;
    //Free the drag data
    DragFinish(hDrop);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ListBox1.Clear;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    ListBox1.Sorted := True;
    ListBox1.Sorted := False;
    end;
    end.

    فرم بالا شامل یک لیست باکس و 2 دکمه هست که از دکمه ها برای پاک کردن محتوای لیست باکس و مرتب کردن محتوی اون استفاده میشه.

تاپیک های مشابه

  1. نحوه drag کردن تصاویر
    نوشته شده توسط parandeh1383 در بخش VB.NET
    پاسخ: 2
    آخرین پست: یک شنبه 02 خرداد 1389, 16:51 عصر
  2. Drag کردن یک دایره
    نوشته شده توسط روانشناس در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 04 اسفند 1385, 15:08 عصر
  3. Drag کردن یک فایل روی فرم
    نوشته شده توسط iman_Delphi7 در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: یک شنبه 15 مرداد 1385, 07:57 صبح
  4. Drag (فوری)
    نوشته شده توسط STI در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: جمعه 26 اسفند 1384, 18:33 عصر
  5. drag کردن فرم
    نوشته شده توسط afshincomputer در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: دوشنبه 12 مرداد 1383, 09:58 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •