Przeciąganie pliku.

0

Jak załadować plik tekstowy do edita, przeciągając plik na edita?

0

Tworzysz Form1, Edit1 i dajesz taki kod:

W ramach Form1:

public
    OldWndProc:TWndMethod;
    procedure AcceptFiles( var msg : TMessage );

A potem implementujesz:

procedure TForm1.AcceptFiles( var msg : TMessage );
const
  MAX_NAME = 255;
var
  i, n: integer;
  FileName: array [0..MAX_NAME] of char;
begin
if (msg.Msg=WM_DROPFILES) then
  begin
  n:= DragQueryFile( msg.WParam, $FFFFFFFF, FileName, MAX_NAME );
  for i := 0 to n-1 do
    begin
    DragQueryFile( msg.WParam, i, FileName, MAX_NAME );

//Tu w FileName masz nazwę pliku, więc możesz go sobie wczytać otwierając plik..
//Ja dla przykładu w Edit1 pokażę tylko jego nazwę.

    Edit1.Text:=FileName;
    end;
  DragFinish( msg.WParam );
  end
else
  OldWndProc(msg);
end;

A na stworzenie Form1 dajesz taką akcję:

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles( Edit1.Handle, True );
OldWndProc:=Edit1.WindowProc;
Edit1.WindowProc:=AcceptFiles;
end;

To by było tyle. Włączasz Editowi akceptowanie plików i nadpisujesz jego obsługe komunikatów. Jeśli przyszedł WM_DROPFILES, upuszczono plik i należy to obsłużyć, w przeciwnym wypadku komunikaty należy obsłużyć po staremu. Stąd zapamiętanie w OldWndProc dawnej obsługi komunikatów.

W sumie nie wiem czemu chciało mi się to napisać.. bo po użyci wyszukiwarki na forum pewnie nie raz byś to znalazła.. ale nich będzie..

0

Dzięki Szczawik, działa.
A tak na marginesie odnośnie tego:
"[...]W sumie nie wiem czemu chciało mi się to napisać.. bo po użyci wyszukiwarki na forum pewnie nie raz byś to znalazła.. ale nich będzie..[...]"
Mam na imię Tomek i rozumiem że moja ksywka może być myląca, tak więc wybaczam :-) jednak na przyszłość proszę pamiętaj i pamiętajcie.
Dzięki. Nerka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1