我正在创建一个 Delphi 2007 应用程序,使用 Tnt 组件(带有 unicode 的 Compenents)。我有一个表格:
edit : TTntEdit;
updown : TTntUpDown
thouse 组件的设置为:
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;
如您所见,UpDown 的位置可能在 300 到 900 之间,这意味着 edit.Text 从 '30.0' 到 '90,0'。如果 Text 设置为 89.8 并且我们使用 updown 的向上箭头来增加它的位置,那么编辑中的文本将更改如下:'89.9'->'90.0'->'900' 和停止。当 edit.text 从 '90.0' 变为 '900' 时,甚至不会调用 updownClick 事件!
所以这是我的问题:
- 为什么会出现值“900”;
- 为什么不调用 updownClick 事件;