Citat:
Ovo sam i ubacio u aplikaciju, medjutim, chim fokus predje na bilo koje dugme sa forme pritiskom na SPACE okidam to dugme, a stop promenjiva se ne menja. Meni treba promena stop-a a dugme da "ostavim na miru".
Uklanjanje standardne Windowsove SPACE funkcionalnosti tastera (OnClick) je moguce na par nacina:
* Recimo, jedan nacin je da napravis svoj TButton (nasledjivanjem) pri cemu ces u WndProc hvatati SPACE i ubijati ga.
* Drugi nacin je dinamickim menjanjem TButton::WindowProc
Na primer /netestirano/:
--- header ---
Code:
// ...
TWndMethod OldButtonWP;
void __fastcall NewButtonWP(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_DIALOGKEY, TMessage, NewButtonWP)
END_MESSAGE_MAP(TForm)
// ...
--- cpp ---
Code:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
OldButtonWP = Button1->WindowProc;
Button1->WindowProc = NewButtonWP;
}
void __fastcall TForm1::NewButtonWP( TMessage &Msg )
{
switch ( Msg.Msg )
{
case WM_KEYDOWN:
{
if ( Msg.WParam == VK_SPACE )
{
Msg.Result = 0;
return;
}
break;
}
case WM_DESTROY:
{
Button1->WindowProc = OldButtonWP;
break;
}
}
OldButtonWP( Msg );
}
Citat:
Treba mi reshenje koje ce uvek raditi, jer je kontrola vremena kljucna.
Ovo gore bi trebalo da ti pomogne oko SPACE-a, mada TTimer je message bazirana, pa ako je kontrola vremena kljucna moze se desiti da ceo sistem ponekad zaglavi na trenutak ako se zbog necega message queue zatrpa.
Citat:
Koja treba da je vrednost KeyPreview-a na formi?
U tvom slucaju: true, jer TForm::OnKeyPress ne bi reagovao ako ti je kursor recimo privremeno u TEdit-u, i sl.
Citat:
Kako je izvodljivo da se otvori josh jedna forma(pritiskom na neko dugme), a da se klikom na SPACE i dalje menja stop promenjiva na Parent formi?
Nista te ne sprecava da isti kod imas i u drugim formama pri cemu 'gadjas' TTimer od prve
Form1->Timer1->.... Prethodno naravno treba
#include ... te glavne forme u parent formama.