17. januar 2001 - 13:19Der er
29 kommentarer og 2 løsninger
MouseMove Event på en Gauge
Hejsa mine små computer nørder... Jeg har et lille problem som I kloge hoveder sikkert hurtigt kan løse. Jeg vil gerne have en OnMouseMove Event sat på en Gauge, men jeg ved ikke hvordan man gør. Help me....
procedure TForm1.GaugeWindowPoc(var Message: TMessage); begin if message.Msg = WM_MOUSEMOVE then begin Caption := \'Do your stuff here\'; message.Result := 0; end; OldWindowPoc(Message); end;
Du skal køre den wizard der er til at lave en ny component og så skal du nedarve fra TGauge og tilføje den line der heder property OnMouse.... under published, du har så lavet en ny component som kan det du gerne vil havde og det har taget dig 2 min. og uden at skrive noget kode ( sort set *S* ), Delphi er Genialt *S*
martinlind >> Det mange mennesker glemmer er at gemme den gamle procedure .. inden de giver en ny ... Hvis du gør som jeg har vist er der ingen risiko ved den metode, og du kan lave ganske mange sjove tinge der inde .....
Det imod er ujeg modstanner af at lave uendelige mængder af komponenter der skal distribueres sammen med dit projekt, mest pga. Delphis tåbelige håndtering af samme.
Jens B >> Rigtigt, men det er vel også en exefil han skal distribueres, mht. til wndproc foretrækker jeg at override den istedet, men det er stadig at foretrække at undgå den, det er også noget skod og debug inden i en wndproc.
martinlind >> problemer er her at du ikke kan override winproc i det her ikke er tale om en nedarvning ... derfor er du nødtil at selv holde styr på \"hvor du kommer fra\".
Jeg fatter stadig ikke helt hvordan man laver en komponent...(har aldrig prøvet før)... ville det være for meget at forlange hvis du lavede sådan en komponent som du snakker om og sendte den til mig så kan jeg nok bedere se hvordan det skal gøres... min mail er:
eller sådant noget lign... så troede jeg egentligt bare at man stort set kunne gøre noget lign men OnMouseMove, OnMouseDown og OnMouseUp... Men der har jeg måske taget helt fejl...
Jens B>> Jeg prøvet dit forslag. men havd skal jeg gøre hvis jeg vil have x, y kordinaterne frem i form1.caption når jeg føre musen hen over min gauge1
En ten bruger du GetCursorPos() ellers skal du bruge de data du får i din message ....
Begge metoder er illusteret her :
procedure TForm1.GaugeWindowPoc(var Message: TMessage); var x, y : Integer; //skal kun brugews i metode 2 Point : TPoint; //skal kun brugews i metode 1 begin if message.Msg = WM_MOUSEMOVE then begin //Metode 1 : Kan bruge alle steder : GetCursorPos(Point); Caption := \'x : \' + IntToStr(Point.x) + \' y : \' + IntToStr(Point.y); //end Metode 1
//Metode 2 : Kan lidt mere langhåret kan kun bruges her : x := Lo(Message.LParam); y := Hi(Message.LParam); Caption := \'x : \' + IntToStr(Point.x) + \' y : \' + IntToStr(Point.y); //end Metode 2 message.Result := 0; end; OldWindowPoc(Message); end;
ZeroHero >> Og det gælder jo også her, det med point\'ene *S*
/Martin
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.