Tastaturproblem
Jeg har en form med 10 stk speedbuttons, som skal fungere som et nummerisk tastatur. tastaturet sender via IP tastetryk fra det numerisketastatur eller musetryk ved clik med musen til en elektronisk enhed.Mit problem er at den elektroniske enhed i den anden ende ikke kan reagere momentant på et tastaturtryk p.graf. forsinkelserne på Internettet, det kan få brugeren til at gentage sine tastetryk fordi han ikke tror der sker noget i den anden ende, derfor er det nødvendigt at brugeren kan se at knapperne på formen bevæger sig når han trykker på det nummeriske tastatur.
det har jeg løst ved at sætte SpeedButtons GroupIndex = 1 og AllowAllUp til True, samt nedenstående kode.
Med nedenstående kode har jeg så en form med et tastatur som følger PC\'ens nummeriske tastatur, hvilket virker meget godt
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons;
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SpeedButton10MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_NUMPAD0 : SpeedButton10.Down := True;
VK_NUMPAD1 : SpeedButton1.Down := True;
VK_NUMPAD2 : SpeedButton2.Down := True;
VK_NUMPAD3 : SpeedButton3.Down := True;
VK_NUMPAD4 : SpeedButton4.Down := True;
VK_NUMPAD5 : SpeedButton5.Down := True;
VK_NUMPAD6 : SpeedButton6.Down := True;
VK_NUMPAD7 : SpeedButton7.Down := True;
VK_NUMPAD8 : SpeedButton8.Down := True;
VK_NUMPAD9 : SpeedButton9.Down := True;
end //Case
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Cnt : Integer;
begin
for Cnt := 0 to ComponentCount-1 do
if Components[Cnt] is TSpeedButton then
(Components[Cnt] as TSpeedButton).Down := False;
end;
end.
PROBLEMET:
problemet er at hvis brugeren klikker på formens speedbuttons vil den sidste speedbutton blive nede
jeg har forsøgt med at lade alle de 10 speedButtons MouseUpEvent pege på nedenstående kode, men det virker ikke
procedure TForm1.SpeedButton10MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Cnt : Integer;
begin
for Cnt := 0 to ComponentCount-1 do
if Components[Cnt] is TSpeedButton then
(Components[Cnt] as TSpeedButton).Down := False;
end;
