drag and drop

0

Witam, jak zrobić DragAndDrop w delphi? Konkretnie chodzi mi o to by przeciagnac z pulpitu jakis plik np tekstowy i zeby mi sie otworzyl w delphi - pobral program jego sciezke czy cokolwiek, po prostu zrobic ten draganddrop z pulpitu do aplikacji
pozdrawiam
Remek

0

np. połóż sobie na formie panel (na niego będziesz przeciągał pliki) i memo (będziesz wypisywał, jakie pliki przeciągnąłeś do aplikacji)

  1. w sekcji public formy deklarujesz dwie funkcje
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
procedure WMDropFiles (hDrop : THandle; hWindow : HWnd);
  1. poniżej masz ich definicje:
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
    case Msg.Message of
        WM_DROPFILES :  WMDropFiles(Msg.wParam, Msg.hWnd);
    end;
end;

procedure TForm1.WMDropFiles(hDrop: THandle; hWindow: HWnd);
var
    TotalNumberOfFiles, nFileLength : Integer;
    pszFileName : PChar;
    i : Integer;
begin
    TotalNumberOfFiles := DragQueryFile(hDrop, $FFFFFFFF, Nil, 0);

    for i := 0 to TotalNumberOfFiles - 1 do
        begin
        nFileLength := DragQueryFile(hDrop, i, Nil, 0) + 1;
        GetMem(pszFileName, nFileLength);
        DragQueryFile(hDrop , i, pszFileName, nFileLength);
        Memo1.Lines.Add(pszFileName);
        FreeMem(pszFileName, nFileLength);
        end;

    DragFinish (hDrop);
end;
  1. W zdarzeniu onCreate formy umieszczasz:
DragAcceptFiles(Panel1.Handle, True);
Application.OnMessage := AppMessage;
  1. Przeciągając plik na panel1 w memo wypisuje ci jego ścieśkę

  2. w zdarzeniu onClose formy umieszczasz:

DragAcceptFiles (Panel1.Handle, False);
0

Podłącze się pod ten wątek. Ciekawy kod, musze przyznać, ale żeby się
skompilował do uses należy dodać ShellApi, uprzedzam kolejne pytanie.

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