【问题标题】:using TEdit and TUpDown with assosiation使用 TEdit 和自顶向下关联
【发布时间】:2013-07-23 10:48:08
【问题描述】:

我正在创建一个 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 事件!

所以这是我的问题:

  1. 为什么会出现值“900”;
  2. 为什么不调用 updownClick 事件;

【问题讨论】:

  • 非常感谢,有帮助!当然,我不需要 2 位数的 tnt,我使用它们只是因为项目中有很多其他 (tnt) 组件 - 编辑、组框、标签等。

标签: delphi delphi-2007


【解决方案1】:

删除

updown.Assosiate := edit; 

要么是 UpDown 控件更改值,要么您通过自定义代码进行。

对于同一个问题有两个相互矛盾的大师没有什么好处。如果您定制了SetValue,那么不要让UpDown 的内置函数妨碍您。

更好地使用一些现成的旋转按钮编辑,原生支持浮点数。

PS。您可能希望设置 Edit.OnExit 以便它解析用户输入的文本并相应地调整 UpDown.Value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多