Je crée une application Delphi 2007, en utilisant des composants Tnt (Compenents with unicode). J'ai un formulaire avec:en utilisant TEdit et TUpDown avec assosiation
edit : TTntEdit;
updown : TTntUpDown
paramètres pour thouse composants sont:
edit.OnKeyPressed := edKeyPress;
edit.OnKExit := edExit;
updown.Max := 900;
updown.Min := 300;
updown.Assosiate := edit;
updown.onClick := updownClick;
procedure TForm.edKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
SetValue(edit, updown, some_global_variable);
end;
end;
procedure TForm.edExit(Sender: TObject);
begin
SetValue(edit, updown, some_global_variable);
end;
procedure TForm.SetValue(ED: tTntEdit;UD: tUpDown;var CardValue: real);
var
rVal : real;
begin
if MainForm.CheckRealStr(ED.Text,rVal,'.') or
MainForm.CheckRealStr(ED.Text,rVal,',') then
begin
if rVal <= (UD.Min/10) then rVal := (UD.Min/10);
if rVal >= (UD.Max/10) then rVal := (UD.Max/10);
CardValue := rVal;
UD.Position := Round(CardValue*10);
ED.Text := FormatFloat('0.0', UD.Position/10);
end
else
ED.Text := FormatFloat('0.0', UD.Position/10);
end;
procedure TForm.updownClick(Sender: TObject;
Button: TUDBtnType);
begin
edit.Text := FormatFloat('0.0', updown.Position/10);
end;
Comme vous pouvez le voir, UpDown pourrait avoir position entre 300 et 900, thats signifie que edit.Text est de ' 30,0 'à '90, 0'. Si Texte est réglé sur 89.8 et que nous utilisons la flèche vers le haut de la mise à jour pour augmenter sa position, le texte en édition changera comme suit: '89 .9 '->' 90.0 '->' 900 'et les butées. Lorsque edit.text passe de '90 .0 'à' 900 ', l'événement updownClick n'est même pas appelé!
Voici donc mes questions:
- pourquoi la valeur '900' apparaît;
- pourquoi l'événement updownClick n'est pas appelé;
merci beaucoup, cela a aidé! Bien sûr, je n'ai pas besoin de tnt pour 2 chiffres, je les utilise juste parce qu'il y a beaucoup d'autres composants (tnt) dans le projet - Edits, GroupBoxes, Labels et autres. –