panel a klawisze

0

więc tak,
mam na formie Panel i chcę żeby po naciśnięcu klawisza (może być spacja) kiedy jest zaznaczony (OnEnter) zaszło jakieś zdarzenie. Czy ma ktoś jakiś pomysł, bo niestety panelowi brakuje właściwości OnKeyPressed. Próbowałem ze SpeedButtonem ale on też nie ma tej właściwości (to trochę dziwne, bo to jest przycisk, a te powinny to mieć). Proszę o pomoc :)

0

panel ie moze miec on key pressed, bo nie ma input focus a więc takie numery nie zadziałaja, speed tuton też nie da rady bo peed buttony też nie mogą być "aktywne" tak jak buttony normalne

0

Chyba panela nie da się zaznaczyć :-/

Jeśli chodziło ci o to czy myszka jest nad panelem to stwórz zmienną globalną i przypisuj jej wartość przy OnEnter i OnExit panela i sprawdzaj jej wartość w OnKeyPress formy.

0

Hm... zawsze możesz stworzyć nowy panel i odpowiednio reagować na zdarzenie WM_KEYDOWN tudzież WM_CHAR:

type TMojPanel=class(TPanel);
  public
  procedure WMKeyDown(var Msg: TMsg); message WM_CHAR; //WM_CHAR to wynik przetłumaczenia (TranslateMessage) WM_KEYDOWN
end;

//...

procedure TMojPanel.WMKeyDown(var Msg: TMsg);
begin
//... - w Msg.WParam masz kod klawisza a w Msg.LParam - coś jak TShiftState
end;

I zostaje Ci po prostu dynamicznie stworzyć ten panel, albo jeśli chcesz, pisać komponent. Swoją drogą żeby panel był aktywny, to musisz chyba zrobić panel.SetFocus; prawda?

1 użytkowników online, w tym zalogowanych: 0, gości: 1