Дали правилно съм разбрал? Бутони които да реагират на натискане на клавиатурата( например на стрелките). Ако е така :
1. Слагаш във формата 4 бр. TSpeedButton. Защо такива? Защото си имат свойство "Down" т.е можеш да гу задържиш "натиснати".
2. Настройваш свойството "GroupIndex" = 1 на всичките. Така ги вкарваш в една група от която само един може да бъде "натиснат" в един момент.
3. Настройваш свойството "AllowAllUp=true" - т.е разрешаваш да няма нито един натиснат бутон в групата.
Толкоз за бутоните. Ето и кода на формата :
{*---------------------------------------------------------------------*}
object MainForm: TMainForm
Left = 0
Top = 0
Caption = 'Buttons'
ClientHeight = 267
ClientWidth = 367
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnKeyDown = FormKeyDown
OnKeyUp = FormKeyUp
PixelsPerInch = 96
TextHeight = 13
object sbUp: TSpeedButton
Left = 144
Top = 52
Width = 65
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Up'
end
object sbRigth: TSpeedButton
Left = 197
Top = 80
Width = 52
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Right'
end
object sbLeft: TSpeedButton
Left = 104
Top = 80
Width = 58
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Left'
end
object sbDown: TSpeedButton
Left = 144
Top = 108
Width = 73
Height = 22
AllowAllUp = True
GroupIndex = 1
Caption = 'Down'
end
end
{*--------------------------------------------------------*}
После в събитията "FormKeyDown", "FormKeyUp" пишеш :
{*--------------------------------------------------------*}
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_DOWN : sbDown.Down := true;
VK_LEFT : sbLeft.Down := true;
VK_RIGHT : sbRigth.Down := true;
VK_UP : sbUp.Down := true;
end;
end;
procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_DOWN : sbDown.Down := false;
VK_LEFT : sbleft.Down := false;
VK_RIGHT : sbRigth.Down := false;
VK_UP : sbUp.Down := false;
end;
{*--------------------------------------------------------*}
и това е. Можеш да си правиш вариации на темата.
Дано да е това което ти трябва.
По склона на връх Фудзи бавно пълзи охлюв.<P ID="edit"><FONT class="small"><EM>Редактирано от ValM на 26.12.14 15:13.</EM></FONT></P>Редактирано от ValM на 26.12.14 15:14.