疑惑计算器的调用 请高手指点:某些软件财务模块中 例如: 一个edit 单击后在它的下面出现一个计算器,操作之后 数值显示在edit中 请问这怎么实现的???急!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样实现的原理很简单: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; 算法高手请进! 求Delphi中树的表示方法(不要告诉我用TreeView) 很简单的hook问题,delphi的~ delphi有没有像c#和java宠物店之类的经典代码下载啊? 求图像的自动对比度或自动色阶算法, 高手越来越少,我提的问题,竟没有人遇到过。给多少分恐怕也没人拿走!哎。。。 怎样能试出应用服务器联结最大的客户数? turbo pascal 下的一个工程编译时出现一下错误,那位高手对turbo pascal熟悉,烦劳给看看!!! Delphi有排序函数吗? 我是新手,有1个问题! 一个自定义类属性的读写问题 Delphi8如何调用c#写的dll? 自定义类的问题
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;