Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 sept. 2006 à 15:04
elle ne peut pas encore convenir ... mais ça ne devrait pas tarder
en effet le code donné par Guillemouze ne fonctionne pas ... désolé
voici un essais fonctionnel avec 12 TSpeedButton avec les Caption de "0" à "9" + "." + "= "
tout les GroupIndex à 1 et
tout les AllowAllUp à True et
tout les OnClick à SpeedButton1Click
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin With (Sender as TSpeedButton) do Begin Edit1.Text : = Edit1.Text + Caption;
End;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var I : Integer;
begin For I := 1 to 12 do With TSpeedButton(FindComponent('SpeedButton' + IntToStr(I))) do If Key = Ord(Caption[1]) Then Begin Down := True;
Invalidate;
click;
End ;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var I : Integer;
begin For I : = 1 to 12 do With TSpeedButton(FindComponent('SpeedButton' + IntToStr(I))) do Begin If Down = True Then
Down : = False;
Invalidate;
End;
end;
il y a certainement possibilité de faire mieux mais ce code produit l'effet souhaité ...
pour le reste c'est à toi de gèrer
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
//simule l'appui sur une touche
case Key of
'1' : btn1.Click;
'2' : btn2.Click;
'3' : btn3.Click;
'4' : btn4.Click;
'5' : btn5.Click;
'6' : btn6.Click;
'7' : btn7.Click;
'8' : btn8.Click;
'9' : btn9.Click;
'0' : btn0.Click;
end;
//remplace la touche pressée par 'espace'
Key := ' ';
end;
procedure TForm1.btnClick(Sender: TObject);
begin
edit1.Color := clWhite;
//ajoute le texte à l'edit en fonction du boutton
if Sender = btn0 then edit1.Text := edit1.Text + '0'
else if Sender = btn1 then edit1.Text := edit1.Text + '1'
else if Sender = btn2 then edit1.Text := edit1.Text + '2'
else if Sender = btn3 then edit1.Text := edit1.Text + '3'
else if Sender = btn4 then edit1.Text := edit1.Text + '4'
else if Sender = btn5 then edit1.Text := edit1.Text + '5'
else if Sender = btn6 then edit1.Text := edit1.Text + '6'
else if Sender = btn7 then edit1.Text := edit1.Text + '7'
else if Sender = btn8 then edit1.Text := edit1.Text + '8'
else if Sender = btn9 then edit1.Text := edit1.Text + '9'
else if Sender = btnClear then edit1.Text := ''
else if Sender = btnEgal then edit1.Color := clSkyBlue;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
// Utile seulement si c'est l'edit qui à le focus.
// Il n'est pas possible d'intercepter la touche entré lorsqu'un bouton a le focus.
if key = VK_RETURN then
begin
btnEgal.Click;
key := 0; // on annule la valeur de la touche
end;
end;
procedure TForm1.btnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//on passe le focus au bouton '=' lorsque le bouton est relaché.
// Cela permet d'eviter l'appui de 'entree' sur le bouton
btnEgal.SetFocus;
end;
nemo216
Messages postés8Date d'inscriptionmardi 26 septembre 2006StatutMembreDernière intervention 9 octobre 2006 27 sept. 2006 à 09:43
ben pour la touche égal ben c résolu merci bien a toi. mai par contre
j'aimerai que lorsque j appui sur une touche (exemple: la touche 1) du
clavier, on voit sur mon interface , la touche s'enfoncer et se
relacher. mais je sais pas comment faire donc si tu aurai une idée.
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 27 sept. 2006 à 11:08
heu ouais tu peu essayer de mettre
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if sender is TSPeedButton then
TSpeedButton(Sender).Down := true;
//simule l'appui sur une touche
case Key of
'1' : btn1.Click;
'2' : btn2.Click;
'3' : btn3.Click;
'4' : btn4.Click;
'5' : btn5.Click;
'6' : btn6.Click;
'7' : btn7.Click;
'8' : btn8.Click;
'9' : btn9.Click;
'0' : btn0.Click;
end;
//remplace la touche pressée par 'espace'
Key := ' ';
end;
procedure TForm1.btnClick(Sender: TObject);
begin
edit1.Color := clWhite;
//ajoute le texte à l'edit en fonction du boutton
if Sender = btn0 then edit1.Text := edit1.Text + '0'
else if Sender = btn1 then edit1.Text := edit1.Text + '1'
else if Sender = btn2 then edit1.Text := edit1.Text + '2'
else if Sender = btn3 then edit1.Text := edit1.Text + '3'
else if Sender = btn4 then edit1.Text := edit1.Text + '4'
else if Sender = btn5 then edit1.Text := edit1.Text + '5'
else if Sender = btn6 then edit1.Text := edit1.Text + '6'
else if Sender = btn7 then edit1.Text := edit1.Text + '7'
else if Sender = btn8 then edit1.Text := edit1.Text + '8'
else if Sender = btn9 then edit1.Text := edit1.Text + '9'
else if Sender = btnClear then edit1.Text := ''
else if Sender = btnEgal then edit1.Color := clSkyBlue;
if sender is TSPeedButton then
TSpeedButton(Sender).Down := false;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 sept. 2006 à 14:24
petite précision :
il faut la propriété GroupIndex de tous les TSpeedButton à une valeur non nul (par exemple 1)
ainsi que la propriété AllowAllUp à True
Extait de l'aide Delphi:
Spécifie si tous les boutons d'un groupe peuvent être simultanément non sélectionnés.
property AllowAllUp: Boolean;
Description
Utilisez la propriété AllowAllUp avec un groupe de boutons appartenant à un même groupe. Des turboboutons appartiennent à un même groupe s'ils ont la même valeur pour la propriété GroupIndex. Les boutons d'un même groupe sont mutuellement exclusifs : quand un bouton du groupe est sélectionné (enfoncé), tous les autres boutons du groupe sont désélectionnés (relevés). Si AllowAllUp a la valeur True, tous les turboboutons d'un groupe peuvent simultanément être désélectionnés. Si l'utilisateur clique sur le bouton sélectionné du groupe, ce bouton est désélectionné sans qu'un autre bouton soit sélectionné. Si AllowAllUp a la valeur False, il y a toujours exactement un bouton sélectionné dans le groupe. Cliquer sur un bouton enfoncé ne le fait pas passer à l'état haut.
La modification de la valeur de la propriété AllowAllUp d'un des boutons du groupe change la valeur de la propriété AllowAllUp de tous les boutons du groupe.
Remarque : Si GroupIndex est à zéro, AllowAllUp est sans effet.