Ładny brzuch
Mam labela na formie i chce go przeciga na formie w inne miejsce - jak go 'upuszcze' to si pojawia nowa forma typu ToolWindow i w niej jest ten label. Jak zrobi, eby po upuszczeniu label znajdowa si tam, gdzie go upuszcze, bez tego nowego okna?
Wskazwka: zdarzenia OnMouseXXX
onmousedown/ onmouseup? Prbowaem, ale nie wiem co wpisa... (pierwszy raz mam styczno z drag & drop)
Uytkownik owen777 edytowa ten post 23 maj 2006, 21:08
Kiedy znalazem tai kodzik drag & drop:
uses ShellAPI; {obsuga D&D} .... procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; DragAcceptFiles (Handle, True); end; {mwimy systemowi e chcemy obsuy D&D} procedure TForm1.WMDropFiles (hDrop : THandle; hWindow : HWnd); Var TotalNumberOfFiles, nFileLength : Integer; pszFileName : PChar; i : Integer; Begin //liczba zrzuconych plikw 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); //pszFileName - nazwa upuszczonego pliku //tutaj robimy co z nazw pliku FreeMem (pszFileName, nFileLength); end; DragFinish (hDrop); end; //sprawdzamy co zostao przecignite i obsugujemy to procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin case Msg.Message of WM_DROPFILES : WMDropFiles (Msg.wParam, Msg.hWnd); end; end; //obsugujemy komunikat WM_DROPFILES procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin DragAcceptFiles (Handle, False); end; //dzikujemy
Niestety nie pamietam na jakiej stronie i niestety nie podam rda.
Jak wykorzystaem kogo kod to najmocniej przepraszam.
Tam gdzie pisze co robimy z plikiem to mona dopisa:
var pozycjaKursora: Tpoint; ... //pszFileName - nazwa upuszczonego pliku GetCursorPos(pozycjaKursora); //pobieramy pozycj kursora. //tutaj robimy co z nazw pliku ...
Uytkownik pat edytowa ten post 23 maj 2006, 21:21
Chyba mnie le zrozumiae - jakie pliki?!
http://4programmers....c%C4%85_myszki_
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Wskazwka: zdarzenia OnMouseXXX
onmousedown/ onmouseup? Prbowaem, ale nie wiem co wpisa... (pierwszy raz mam styczno z drag & drop)
Uytkownik owen777 edytowa ten post 23 maj 2006, 21:08
Kiedy znalazem tai kodzik drag & drop:
uses ShellAPI; {obsuga D&D} .... procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; DragAcceptFiles (Handle, True); end; {mwimy systemowi e chcemy obsuy D&D} procedure TForm1.WMDropFiles (hDrop : THandle; hWindow : HWnd); Var TotalNumberOfFiles, nFileLength : Integer; pszFileName : PChar; i : Integer; Begin //liczba zrzuconych plikw 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); //pszFileName - nazwa upuszczonego pliku //tutaj robimy co z nazw pliku FreeMem (pszFileName, nFileLength); end; DragFinish (hDrop); end; //sprawdzamy co zostao przecignite i obsugujemy to procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin case Msg.Message of WM_DROPFILES : WMDropFiles (Msg.wParam, Msg.hWnd); end; end; //obsugujemy komunikat WM_DROPFILES procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin DragAcceptFiles (Handle, False); end; //dzikujemy
Niestety nie pamietam na jakiej stronie i niestety nie podam rda.
Jak wykorzystaem kogo kod to najmocniej przepraszam.
Tam gdzie pisze co robimy z plikiem to mona dopisa:
var pozycjaKursora: Tpoint; ... //pszFileName - nazwa upuszczonego pliku GetCursorPos(pozycjaKursora); //pobieramy pozycj kursora. //tutaj robimy co z nazw pliku ...
Uytkownik pat edytowa ten post 23 maj 2006, 21:21
Chyba mnie le zrozumiae - jakie pliki?!
http://4programmers....c%C4%85_myszki_