delphi实战开发笔记本20250519

作者: koic 分类: 我的教程 发布时间: 2025-05-19 11:11

今天从https://www.bilibili.com/video/BV1u3411P7X3寻找灵感

主要关于delphi窗体以及项目的命名规则开始搞起

窗体名称Fm*** 文件名称 uFm***

工程名称按需

窗体启动可以设置最大化,或者最小化

delphi实战开发笔记本20250519

delphi10.x 似乎可以多开,使用不同的IDE窗口打开多个工程

主窗体:

常见控件的使用

TPanel

以及控件的位置

delphi实战开发笔记本20250519

delphi实战开发笔记本20250519

TPanel控件,主要可以用来制作分区

制作基类,然后从基类窗体继承

delphi实战开发笔记本20250519

相关群聊

delphi实战开发笔记本20250519

主从表的相关知识:

分为主表跟明细

delphi实战开发笔记本20250519

写一次代码,多次使用

多页面控件:Win32➡️TPageControl

delphi实战开发笔记本20250519

delphi实战开发笔记本20250519

据说这些年,delphi一直更新移动开发的内容,原有的系统控件都没有怎么更新过,所以大家现在主要使用第三方控件来完成一些功能

delphi实战开发笔记本20250519

DevExpress控件是当前delphi开发不可或缺的的组成部分了可以说

今天又学习了一个

Popup方法:

自定义弹出窗体(TForm

  • 功能:实现类似对话框的弹出窗口。

  • 步骤

    1. 创建一个新窗体(如 PopupForm),设置其 BorderStyle 为 bsNone(无边框)或 bsDialog(对话框风格)。

    2. 在需要触发弹出窗口的事件中动态创建并显示窗体。

  • 示例

// 显示模态弹出窗口(阻塞式)
procedure TForm1.Button1Click(Sender: TObject);
var
PopupForm: TPopupForm;
begin
PopupForm := TPopupForm.Create(nil);
try
PopupForm.ShowModal; // 模态显示
finally
PopupForm.Free;
end;
end;

// 非模态弹出窗口(非阻塞式)
PopupForm := TPopupForm.Create(Application);
PopupForm.Show;

 

使用 MessageDlg 或 InputBox(简单弹窗)

  • 功能:快速显示消息框或输入框。

  • 示例

// 消息提示框
procedure TForm1.ShowMessageClick(Sender: TObject);
begin
MessageDlg(‘操作成功!’, mtInformation, [mbOK], 0);
end;

// 输入框
procedure TForm1.GetInputClick(Sender: TObject);
var
UserInput: string;
begin
UserInput := InputBox(‘输入’, ‘请输入内容:’, ‘默认值’);
if UserInput <> ” then
ShowMessage(‘你输入了:’ + UserInput);
end;

 

4. 动态定位弹出菜单

  • 功能:手动控制弹出菜单的位置(如按钮下方)。

  • 示例

procedure TForm1.Button1Click(Sender: TObject);
var
P: TPoint;
begin
// 计算按钮的屏幕坐标
P := Button1.ClientToScreen(Point(0, Button1.Height));
// 显示弹出菜单
PopupMenu1.Popup(P.X, P.Y);
end;

 

5. 结合 TForm 的 PopupMode 属性(VCL 高版本支持)

  • 功能:使弹出窗口始终显示在父窗口上方。

  • 设置

PopupForm.PopupMode := pmAuto; // 自动依附于当前活动窗口
PopupForm.PopupParent := Self; // 指定父窗口

 

6. 第三方控件的弹出功能

  • 场景:使用如 DevExpressTMS 或 Raize 等第三方库的高级弹出组件。

  • 示例(以 DevExpress 的 TdxBarPopupMenu 为例):

// 动态添加菜单项并弹出
var
Item: TdxBarButton;
begin
Item := TdxBarButton.Create(dxBarPopupMenu1);
Item.Caption := ‘第三方菜单项’;
dxBarPopupMenu1.ItemLinks.Add.Item := Item;
dxBarPopupMenu1.Popup(X, Y); // 在指定坐标弹出
end;

 

7. 动态生成内容(如列表选择框)

  • 功能:创建一个类似下拉列表的弹出选择框。

  • 示例

procedure TForm1.Edit1Click(Sender: TObject);
var
PopupForm: TForm;
ListBox: TListBox;
begin
PopupForm := TForm.Create(nil);
try
PopupForm.BorderStyle := bsNone;
PopupForm.Width := Edit1.Width;
ListBox := TListBox.Create(PopupForm);
ListBox.Parent := PopupForm;
ListBox.Align := alClient;
ListBox.Items.Add(‘选项1’);
ListBox.Items.Add(‘选项2’);
// 显示在 Edit1 下方
PopupForm.Left := Edit1.ClientToScreen(Point(0, 0)).X;
PopupForm.Top := Edit1.ClientToScreen(Point(0, Edit1.Height)).Y;
PopupForm.Show;
finally
// 注意:需要处理 ListBox 的 OnClick 事件以关闭窗口
end;
end;

 

 

发表回复