GARANTIR DESCONTO

Fórum Programa para Joystick #178294

28/08/2003

0

Boa tarde pessoal,

Eu comprei um joystick da microsoft mas o programinha da mesma que me permitiria criar macros para os botões naum está achando o meu joystick sendo que ele aparece no painel de controle e funciona normalmento nos jogos. Então pensei em desenvolver um programa onde eu diria o que cada botão iria fazer ao ser precionado. Fiz um exemploem casa e consegui capturar quantos botões e quantos eixos tem o joystick que está conectado no computador. Mas naum consegui fazer pra saber quando um botão é precionado ou não. Neste meu exemplo eu usava um checkbox para marcar quando o botão foi precionado ou não. Parecido com um exemplo que sai na revista ClubeDelphi na edição 41 eu acho (uma da capa azul que fala de interbase e firebird)
Alguém sabe onde eu poderia achar componentes, exemplos ou qualquer outra coisa que pudese me ajudar.

Só não coloco o meu código fonte pois este programa eu to fazendo em casa e agora estou no trabalho.
De qualquer forma agradeço a quem puder me ajudar e a todos que me derem atenção.


Raphael Oliveira

Raphael Oliveira

Responder

Posts

28/08/2003

Raphael Oliveira

O Meu código é o seguinte:


unit UPrincipal;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, QCJoystick, StdCtrls, ExtCtrls, MMSystem; 
// O QCJoystick é um componente de terceiros.

type
 TForm1 = class(TForm)
   Joy: TQCJoystick;
   Timer1: TTimer;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   txtjoy: TStaticText;
   txtbotao: TStaticText;
   txteixo: TStaticText;
   CheckBox1: TCheckBox;
   CheckBox2: TCheckBox;
   CheckBox3: TCheckBox;
   CheckBox4: TCheckBox;
   CheckBox5: TCheckBox;
   CheckBox6: TCheckBox;
   CheckBox7: TCheckBox;
   CheckBox8: TCheckBox;
   procedure FormCreate(Sender: TObject);
   Procedure LerJoy (var B1, B2, B3, B4, B5, B6, B7, B8: Boolean);
   procedure AtualizaJoy;
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AtualizaJoy;
var
 B1, B2, B3, B4, B5, B6, B7, B8 : Boolean;
begin
 B1 := True; B2 := True; B3 := True; B4 := True;
 B5 := True; B6 := True; B7 := True; B8 := True;
 LerJoy(B1,B2,B3,B4,B5,B6,B7,B8);
//Atualiza os checkbox conforme os botões forem precionados
 Checkbox1.Checked := B1;
 Checkbox2.Checked := B2;
 Checkbox3.Checked := B3;
 Checkbox4.Checked := B4;
 Checkbox5.Checked := B5;
 Checkbox6.Checked := B6;
 Checkbox7.Checked := B7;
 Checkbox8.Checked := B8;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 txtjoy.Caption := joy.JoystickName; // Recebe o nome do Joystick conectado no pc
 txtbotao.Caption := inttostr(joy.Buttons); // Quantidade de Botões do joy
 txteixo.Caption := inttostr(joy.Axes); // Quantidade de Eixos do Joy
end;

procedure TForm1.LerJoy(var B1, B2, B3, B4, B5, B6, B7, B8: Boolean);
var
 myjoy: TJoyInfoEx;
begin
//Verifica os botões que estão sendo precionados.
 B1 := (myjoy.wButtons and 1) > 0; 
 B2 := (myjoy.wButtons and 2) > 0;
 B3 := (myjoy.wButtons and 3) > 0;
 B4 := (myjoy.wButtons and 4) > 0;
 B5 := (myjoy.wButtons and 5) > 0;
 B6 := (myjoy.wButtons and 6) > 0;
 B7 := (myjoy.wButtons and 7) > 0;
 B8 := (myjoy.wButtons and 8) > 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 atualizajoy;
end;

end. 




É exatamente a parte dos checkbox que não está funcionando ele naum está mostrando o botão é acionado ou não. Os checkbox ficam todos marcados depois desmarcam e voltar a ficar marcados sozinho.

Gostaria que alguém desse uma olhada onde estou errando e me ajudasse.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar