Avatar billede morten_s Nybegynder
03. august 2001 - 08:35 Der er 1 kommentar og
1 løsning

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;
Avatar billede morten_s Nybegynder
03. august 2001 - 08:39 #1
Under afsnittet problemet skulle der have stået
PROBLEMET:
problemet er at hvis brugeren klikker på formens speedbuttons MED MUSEN 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

Avatar billede morten_s Nybegynder
03. august 2001 - 08:47 #2
Har fundet løsningen selv, istedet for under MouseUp, skal eventet være på OnClick
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester