Bună ziua, în acest articol aș vrea să vorbesc puțin despre ferestrele "lipicioase". Da, efectul în aplicații este destul de comun și cel mai adesea se întâlnește la unii jucători, de exemplu, Winamp. Așa că, atunci când am făcut meu bass.dll jucător pe bază, atunci am această problemă (a fost necesar pentru a organiza o fereastră „lipicios“). Problema pe care am decis că nu este foarte plăcută și sa dovedit a nu fi foarte convenabilă și puternic "buggy". Și am făcut toate astea prin TTimer. Acest lucru este pus în Interval 1, și apoi pentru a crea un formular, am scris cod care va forma marginea principală lipirea o altă formă. Asta este, eu doar pe setul de cronometru A lăsat formularul nou. Acum problema am decis prin prelucrarea mesajelor care sunt trimise atunci când mutați forma, efectul a fost același ca și pentru versiunea cu un contor de timp, dar nu „buggy“. Există modalități care fac ferestre "lipicioase" și altele, poate mai bine, dar am reușit cumva. Să luăm în considerare înainte de a face o fereastră "lipicioasă" în raport cu alta, vom face ca forma să se mute pentru oricare dintre elementele sale. Pentru aceasta vom folosi procesarea mesajului WMNCHitTest.
Declarăm procedura în specificația accesului la procedura privată WMNCHitTest (var M: TWMNCHitTest); mesaj wm_NCHitTest;
Apoi, setați cursorul la această procedură și apăsați Ctrl + Shift + C, după care vom avea pregătirea procedurii noastre.
Acum scrieți următorul cod în procedura noastră
Ce facem aici, pur și simplu ne atribuim titlul la rezultatul nostru. Adică, pentru orice regiune cursorul nostru pe formular nu a fost fixat, va crede întotdeauna că este o rubrică și este posibil să mutați formularul liber pentru oricare dintre zonele sale.
Acum hai să vorbim puțin despre cum să facem fereastra să rămână pe marginea ecranului. Nu trebuie să programați aici, formularul are o proprietate ScreenSnap care va seta acest efect la True. Proprietatea SnapBuffer stabilește valoarea pixelilor de la care va avea loc lipirea de marginile ecranului.
Acum, despre fereastra foarte "lipicios" la o altă fereastră. În primul rând, vom crea un alt formular și vom scrie codul evenimentului OnShow TForm1, care va determina poziția inițială a formularelor noastre.
După aceasta, trebuie să urmărim mișcarea formei noastre principale și să mutăm aceeași formă secundară acolo. Pentru aceasta vom procesa mesajul WMMoving
În specificatorul de acces privat, declarăm următoarea procedură
procedura WMMoving (var msg: TWMMoving); mesajul WM_MOVING;
Apoi, setați cursorul la această procedură și apăsați următoarea combinație de taste de pe tastatură - Ctrl + Shift + C. după care apare martorul procedurii noastre și scrieți următorul cod
Asta e tot, atunci ne uităm unde se află forma noastră principală și în spatele ei avem deja o formă secundară. Cum nu vezi nimic dificil. Puteți termina și obține un rezultat destul de bun, dar puteți găsi o modalitate mai eficientă și mai bună, dar deocamdată.
Apropo, vreau să spun că alegerea tapetului pentru desktop este doar cea mai bună și nu foarte luminos, așa că a fost frumos pentru ochi
Sursa poate fi descărcată aici