Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Drag and Drop


Автор: pashokq 25.2.2008, 16:41
Люди, помогите пишу прогу элементарную до немогу  smile 
Дело вот в чем, я открываю тестовый файл в Memo, выбираю файл с помощью диалога "открытия файла", все работает и хорошо, НО НУЖНО ЧТОБЫ ПРОГРАММА ОТКРЫВАЛА ФАЙЛ ПРОСТЫМ ПЕРЕТАСКИВАНИЕМ ЕГО (т.е. фала) В ОКНО или НА ЗНАЧЕК ФАЙЛА. Как моно это реализовать посоветуйте чайнику smile 

Автор: MetalFan 25.2.2008, 17:15
Цитата(pashokq @  25.2.2008,  16:41 Найти цитируемый пост)
НО НУЖНО ЧТОБЫ ПРОГРАММА ОТКРЫВАЛА ФАЙЛ ПРОСТЫМ ПЕРЕТАСКИВАНИЕМ ЕГО (т.е. фала) В ОКНО или НА ЗНАЧЕК ФАЙЛА

1. некрасиво "кричать". хочешь подчеркнуть мысль - для этого есть курсив, жирый или подчеркнутый шрифт
2. получение списка "дропнутых" в окно файлов есть  в факах
3. при дропе на "значек файла" дропнутый файл afaik передается через командную строку (см. ParamStr,ParamStrCount)
факи - дркб или http://delphiworld.narod.ru

Автор: EvilsInterrupt 25.2.2008, 18:14
ЗЫ:
Цитата

для этого есть курсив, жирый

мля, все перерыл, но курсива "жирый" не нашел ((( Может плохо искал?

Автор: MetalFan 25.2.2008, 20:39
Цитата(EvilsInterrupt @  25.2.2008,  18:14 Найти цитируемый пост)
но курсива "жирый"

это ты к чему?

Автор: Sanchezzz 25.2.2008, 20:50
действительно плохо искал 
...
Код

 protected
  procedure WMDropFiles (var Msg: TMessage); message wm_DropFiles;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
var
Filename: PChar;
i, amo, size: integer;
begin
  inherited;
  Amo := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255);
  for i := 0 to (Amo - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
    Filename := StrAlloc(size);
    DragQueryFile(Msg.WParam, i, Filename, size);

    Memo1.Lines.LoadFromFile(StrPas(Filename))

  end;
  DragFinish(Msg.WParam);
end;




Автор: MetalFan 25.2.2008, 21:18
Sanchezzz, можно и проще, с использованием только AnsiString

Автор: ivan219 25.2.2008, 23:43
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    procedure DropFiles(var Message: TWMDROPFILES); message WM_DROPFILES;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DropFiles(var Message: TWMDROPFILES);
var
  buffer : array[0..255] of char; // Путь к файлу
begin
 Inherited;
 DragQueryFile(Message.Drop, 0, @buffer, sizeof(buffer));
 Memo1.Lines.LoadFromFile(buffer);
end;

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

end.


Автор: pashokq 26.2.2008, 20:25
Цитата(Sanchezzz @ 25.2.2008,  20:50)
действительно плохо искал 
...
Код

 protected
  procedure WMDropFiles (var Msg: TMessage); message wm_DropFiles;

procedure TForm1.WMDROPFILES(var Msg: TMessage);
var
Filename: PChar;
i, amo, size: integer;
begin
  inherited;
  Amo := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255);
  for i := 0 to (Amo - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
    Filename := StrAlloc(size);
    DragQueryFile(Msg.WParam, i, Filename, size);

    Memo1.Lines.LoadFromFile(StrPas(Filename))

  end;
  DragFinish(Msg.WParam);
end;


Спасибо тебе большое. Очень помог smile

Добавлено через 1 минуту и 7 секунд
Цитата(pashokq @ 25.2.2008,  16:41)
Люди, помогите пишу прогу элементарную до немогу  smile 
Дело вот в чем, я открываю тестовый файл в Memo, выбираю файл с помощью диалога "открытия файла", все работает и хорошо, НО НУЖНО ЧТОБЫ ПРОГРАММА ОТКРЫВАЛА ФАЙЛ ПРОСТЫМ ПЕРЕТАСКИВАНИЕМ ЕГО (т.е. фала) В ОКНО или НА ЗНАЧЕК ФАЙЛА. Как моно это реализовать посоветуйте чайнику smile

Спасибки все, проблема решена УРА!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)