问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

delphi中的inpubox,如何能控制它的位置?

发布网友 发布时间:2022-12-16 17:09

我来回答

2个回答

热心网友 时间:2024-12-05 07:26

inputbox封装的是InputQuery函数,你可以查看InputQuery的源代码,发现在InputQuery函数里面动态创建了一个窗体,你可以把InputQuery函数的源代码复制出来,自己修改成可控制位置的就行了

unit inputboxExs;

interface

uses Windows, Graphics, Forms, StdCtrls, Consts, Dialogs, Controls;

function InputQueryEx(const ACaption, APrompt: string;
var Value: string; X, Y: Integer): Boolean;

function InputBoxEx(const ACaption, APrompt, ADefault: string; X, Y: Integer): string;

implementation

function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;

function InputQueryEx(const ACaption, APrompt: string;
var Value: string; X, Y: Integer): Boolean;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := False;
Form := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
Left := X;
Top := Y;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
Caption := APrompt;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
WordWrap := True;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := Prompt.Top + Prompt.Height + 5;
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := Edit.Top + Edit.Height + 15;
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgOK;
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgCancel;
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,
ButtonWidth, ButtonHeight);
Form.ClientHeight := Top + Height + 13;
end;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;

function InputBoxEx(const ACaption, APrompt, ADefault: string; X, Y: Integer): string;
begin
Result := ADefault;
InputQueryEx(ACaption, APrompt, Result, X, Y);
end;

以上是源代码,在Delphi源代码基础上稍微修改了下,我单独写在了一个文件中,使用时需要引用我这个单元文件,下面是调用示例:
uses inputboxExs;

procere TForm1.Button2Click(Sender: TObject);
var str1, str2: string;
begin
// 参数中的X,Y,就是你想设置的位置
str1 := InputBoxEx('注意', '输入数字', str2, 100, 10);
ShowMessage(str1);
end;

热心网友 时间:2024-12-05 07:27

呵呵,这个有意思,我学了一下,哈哈
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在RLC电路中,谐振频率为___同期为___谐振条件为___? 电磁振荡并联 RLC振荡回路的谐振频率与振荡特性 佛手柑水培还是干放 中山市美派电器有限公司怎么样? 成都美派电器有限公司怎么样? 两条不同品牌的DDR3内存条可以一起用吗 驾驶证的牡丹卡多长时间能办下来 新衣服必须用洗衣液洗才能去甲醛吗? 梦见逛街被偷抢 2024年买什么品牌的运动男鞋比较好? delphi 遍历文件夹下的jpg图片并全部显示在界面里面,但是最后一张图片却... 用delphi编写记事本程序的打开,保存,另存为,退出,剪切,复制,粘贴_百... 朋友圈文案 | “很浪漫的也很惊艳的简短精致文案” 哪位DELPHI高手请指教,怎样实现普通窗口能产生QQ一样的吸附隐藏功能?多 ... 在DELPHI中动态生成的控件怎么响应消息 墨墨背单词加入记忆是什么意思 delphi控件显示太小 小米ea432022款卡不卡 松针饲料的配制 2022英雄联盟总决赛怎么不是18.00? 便宜的网络电话软件有哪些,真的好用吗!? vos2009网络电话 注册后 能接通 但是两边都没有声音 是不是那里配置错... 已经在搭建中的网络电话系统中,落地线路弄好了,机房服务器+VOS2009软... 每次打开AI-illustrator CS6都会出现about subscribe的提示页面,如何取 ... 浪漫的短句文案 怎样挑选太阳能板? 家庭太阳能热水器的选购贴士 太阳能热水器如何选择 浪漫个性朋友圈语录文案 linux操作系统破解版下载 : 谁能给一个能下载的网站,谢谢 auto.js有没有什么代码可以发出声音的代码 取名字第一个字是去声有哪些 ...五行中缺金。请问,金字旁的字是去声的有哪些? 有没有哪种字体支持特殊符号的 越多越好 谢谢啦 比如像一些商标什么的... 小米手机字体除了Myuppy字体和米兰字体外,还有什么字体支持特殊... 物质的量浓度和气体摩尔质量哪个与温度无关 物质的量浓度跟密度有关? glodon license system是什么意思 Glodcn.License,system是什么意思? ...connect to license server system,怎么解决? ansys10在win10运行时显示license server system does not support... glodon License system 是什么东西 求一部电影的名字,有重奖! 免签和落地签的区别 华为畅享8刷抖音卡吗 家里的光纤已经可以正常使用,怎么通过光纤看电视 用光纤看电视怎么设置 mac双系统启动不出选项很久才启动 月经来的少,怎么回事 手比头高阅读答案原文