Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.120 pregleda

Najnovija ↓

Moja je ruka brza od handlera! 04.04.2006. u 13:17 · pre 250 meseci #1
Imam ovakav projekat (malo komplikovaniji od ovoga :-)
Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MMSystem, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure CMMouseEnter(var msg: TMessage) ; message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage) ; message CM_MOUSELEAVE;
  private
    { Private declarations }
  public
    { Public declarations }
  end;




var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMouseEnter(var msg: TMessage) ;
begin
   form1.Label1.Caption:='Entered';
end;

procedure TForm1.CMMouseLeave(var msg: TMessage) ;
begin
   form1.Label1.Caption:='Left';
end;

end.


Kada je mis na formi i brzo ga pomerim u neku stranu tako da vise nije iznad forme, procedura CMMMouseLeave se ne izvrsi. Kasnije se procedura aktivira ako bilo sta pritisnem na tastaturi i kliknem misem negde izvan forme. Da li ove handlere mogu da "popravim" tako da budu "brzi".
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Moja je ruka brza od handlera! 04.04.2006. u 13:54 · pre 250 meseci #2
Handler nije "spor" nego se jednostavno ne pozove uopste. Da bi se MouseEnter i MouseLeave poruka poslala mora da se desi pomeranje misa po formi. Sad zamisli ovaj slucaj: mis se nalazi blizu kraja prozora, brzo pomeris misa i on se pomeri za, recimo, 20 pixela i odjednom se nalazi van forme... forma ne dobija nikakav MouseMove event jer mis nije vise u formi i ne zna ni da mis nije vise iznad nje. Mozda nisam bas najtacnije objasnio, ali sustina je da ti nisi ultra brz nego da ti aplikacija ima bug :)

Najjednostavnije resenje bi bilo da ubacis i jedan TTimer na formu i na, recimo, 100ms proveravas da li je mis iznad forme ili ne i da na osnovu toga odredjujes kako ce se forma ponasati.
Potpis
Play Store
Re: Moja je ruka brza od handlera! 04.04.2006. u 14:26 · pre 250 meseci
izmenjeno 1 put, poslednji put bondja 04.04.2006. u 14:26
  1. bondja04.04.2006. u 14:26zapis iz teksta poruke
#3
Da bi se nakacio na windows-ov mouse event (mouse hook), mozes da probas da iskoristis:
CallNextHookEx sa WH_JOURNALRECORD konstantom. U ovom slucaju ti ne treba DLL.

Jednostavnija varijanta je da koristis DLL (Hook mouse DLL)....

poz.
Re: Moja je ruka brza od handlera! 04.04.2006. u 21:34 · pre 250 meseci #4
Ma nisam ja ni mislio da sam brzi od zvuka :-)

Problem sam resio tako sto sam na formu dodao jedam Timer koji relativno cesto (50ms) radi
Code:
timer1.tag:=timer1.tag+1
i to mi je resilo problem.

Mozda izgleda sasavo, ali meni je pomoglo.

@Srki_82 Je l' to moj bug ili Borlandov?
Potpis
Sendvic uvek pada na namazanu stranu!
Re: Moja je ruka brza od handlera! 04.04.2006. u 21:40 · pre 250 meseci
izmenjeno 1 put, poslednji put Srki_82 04.04.2006. u 21:40
  1. Srki_8204.04.2006. u 21:40zapis iz teksta poruke
#5
Hehe... pa... nije to bas bug... tako radi Windows... probaj da postavis kursor na i onda ga brzo pomeri... videces da ce proci odredjeno vreme pre nego sto Windows shvati da si pomerio misa. Ako cesto proveravas, nece se ni primetiti da se ovako nesto desava... a ako ti i nije bas bitno da reakcija bude brza (kao u primeru koji sam u ovoj poruci pokazao) onda je dovoljno da proveravas jednom u sekundi.
Potpis
Play Store
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme