请高手指点:某些软件财务模块中 例如:
 
   一个edit 单击后在它的下面出现一个计算器,操作之后 数值显示在edit中
  请问这怎么实现的???急!!!!!

解决方案 »

  1.   

    这样实现的原理很简单:
    1、计算器实际上就是在一个Form上设计计算器的界面和实现代码
    2、在要弹出计算器的控件时调用 计算器那个Form的一个方法
    类似:
    procedure TZJQueryDlg.PositionForm(WinCtrl: TWinControl);
    begin
      // --- 计算窗体的位置 ---
      if WinCtrl <> nil then
      begin
        ZJQueryDlg.Left := WinCtrl.ClientOrigin.X - 2;
        ZJQueryDlg.Top := WinCtrl.ClientOrigin.Y + WinCtrl.ClientHeight + 1;    if (ZJQueryDlg.ClientOrigin.X + ZJQueryDlg.Width) > Screen.Width then
          ZJQueryDlg.Left := Screen.Width - ZJQueryDlg.Width;    if (ZJQueryDlg.ClientOrigin.Y + ZJQueryDlg.Height) > Screen.Height then
          ZJQueryDlg.Top := WinCtrl.ClientOrigin.Y - ZJQueryDlg.Height - 2;    if ZJQueryDlg.Width < WinCtrl.Width then
          ZJQueryDlg.Width := WinCtrl.Width;
      end
      else
      begin
        ZJQueryDlg.Left := Mouse.CursorPos.X;
        ZJQueryDlg.Top := Mouse.CursorPos.Y;    if (ZJQueryDlg.ClientOrigin.X + ZJQueryDlg.Width) > Screen.Width then
          ZJQueryDlg.Left := Screen.Width - ZJQueryDlg.Width;    if (ZJQueryDlg.ClientOrigin.Y + ZJQueryDlg.Height) > Screen.Height then
          ZJQueryDlg.Top := Screen.Height - ZJQueryDlg.Width;
      end;
      // --- END ---
    end;