FireMonkey 的网格 Grid 的用法(1)

Delphi FMX开发进阶:DevExpress控件包安装与核心功能实战 在Delphi跨平台开发中,第三方UI控件库是提升开发效率和界面专业性的关键工具。其核心原理在于通过封装复杂功能模块,为开发者提供可复用的高级组件,从而避免重复造轮子。这类控件的技术价值在于能够大幅缩短开发周期,确保功能稳定性和界面一致性,尤其适用于企业级应用和商业化项目。常见的应用场景包括复杂数据网格展示、混合图表可视化、数据导入导出以及移动端硬件交互等。本文聚焦于DevExpress FMX控件包,针对Delphi 12.3环境,详细解析其安装配置流程、核心组件使用,并特别回应了开发者社区中关于deve 阅读详情

学习一下在 FireMonkey 里面怎么用格子来实现一些界面效果。比如,类似 Delphi IDE 的属性面板那种格子。

一边学习一边写 Blog 作为记录。从最简单的玩法开始。

创建一个 FireMonkey 的工程,保存一下。只需要一个 Form。

拖一个 TLayout 过来,设置 Align 为 Top;拖一个 TGrid 到这个 Layout 里面,设置 Align 为 Left。

鼠标双击这个 Gird1,IDE 会弹出一个 Item Editor 窗口。这里点击 Add Item 按钮,增加一个 TColumn,它自动生成一个名字为 Column1 的 TColumn,也就是为这个 Grid 增加一个列。这里我要有两个列,另外一个列,我用代码创建。

先看看最终效果:

 

上述效果图里面,左边一列的数字,是行序号。右边一列的字符串,是用代码事先写死进一个 List 里面的。

代码里面写一点东西:

TForm1 = class(TForm)
    Layout1: TLayout;
    Grid1: TGrid;
    Column1: TColumn;
    procedure FormCreate(Sender: TObject);
    procedure Grid1GetValue(Sender: TObject; const ACol, ARow: Integer;
      var Value: TValue);
    procedure Grid1SetValue(Sender: TObject; const ACol, ARow: Integer;
      const Value: TValue);
  private
    { Private declarations }
  protected
    ValueColumn: TColumn;
    Data: TList<string>;
    procedure PopulateData;
  public
    { Public declarations }
  end;

上述代码解释:

1. Data 用来存一些用于显示的文本数据。

2. ValueColunm 就是动态创建的列。

3. PopulateData 方法,用于为 Data 赋值。

procedure TForm1.PopulateData;
begin
  Data := TList<string>.Create;
  Data.Add('aaa');
  Data.Add('bbb');

  Data.Add('dfafasdfa');
  Data.Add('bb3224b');
  Data.Add('234234234');
  Data.Add('-123423');
  Data.Add('23423');
  Data.Add('gfsdh adfa def');
end;

到这里可以开始正式写代码了。

首先在 Form OnCreate 里面写点代码,把数据创建出来,把另外一个列也创建出来。

procedure TForm1.FormCreate(Sender: TObject);
begin
  PopulateData;
  Grid1.RowCount := Data.Count;

  ValueColumn := TColumn.Create(Grid1);   //增加一列
  ValueColumn.Parent := Grid1;
end;

解释:Grid1.RowCount := Data.Count; 这一行用于设置 Grid1 的行数。有多少条数据就给多少行。

格子创建好了,在哪里写代码把 Data 里面的文本写进这个 Grid1 里面去?在 Grid1 的 OnGetValue 事件里面。设计期鼠标选中 Grid1 后,在 IDE 属性面板的事件里面,找到 OnGetValue 双击,代码框架自动建立这个事件方法。里面写代码如下:

procedure TForm1.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer;
  var Value: TValue);
begin
  if ACol = 0 then
    Value := ARow
  else if ACol = 1 then
    Value := Data[ARow];
end;

上述代码解释:

1. ACol 代表当前的列数。0 = 第一列也就是左边列;1 = 第二列也就是右边列。

2. Value 代表当前格子的值。这里是  var 的说明可以赋值给它。

3. 当前是第一列,则给它 ARow 这个值,也就是当前的行号。

4. 当前是第二列,则给它 Data[ARow] 这个值,也就是当前行号对应的字符串列表的的第几条字符串。

 

试试看。

到这里,按 F9 可以运行程序看效果了。果然,格子出来了,显示了正确的内容。

鼠标点进某个格子,发现居然可以选中,还可以编辑里面的文字。但编辑文字后,一旦光标离开,编辑的文字丢失,还是显示原来的文字。 

想了想,这里的代码显示的是 Data 里面的内容。那么,如果编辑后,把编辑的文字修改了 Data 里面对应的内容,应该就可以看到编辑结果不会丢失的效果。

既然把 Data 里面的内容显示到格子里是用 TGrid 的 OnGetValue 事件,那么,它应该有 OnSetValue 事件。去属性面板里面找了一下,果然有,双击它,自动出现代码框架,代码如下:

procedure TForm1.Grid1SetValue(Sender: TObject; const ACol, ARow: Integer;
  const Value: TValue);
begin
  if ACol = 1 then
  begin
    Data[ARow] := Value.ToString;
  end;
end;

解释:

在这个事件方法里面,我写了 if ACol =1 then 意思是如果编辑的是对应的 Data 里面的数据,才保存当前编辑的数据到 Data 里面。对应的 ARow 行数也就是 Data 里面对应的 Index。

再次运行测试,界面上的 Grid1 里面,确实可以保留编辑结果了。

搞定。

DevExpress VCL 25.2.7在Delphi 13.1中的安装与集成 在Delphi桌面应用开发中,VCL(Visual Component Library)是经典的可视化组件框架,而DevExpress VCL Controls作为商业控件集,提供了从网格、编辑器到皮肤的一整套增强组件,能显著提升界面开发效率。其安装过程涉及IDE版本匹配、组件包选择、编译平台配置等多个环节,正确完成注册与库路径设置,才能让控件集在IDE中正常显示并调用。掌握这一流程,不仅能为新项目快速搭建统一界面,也能帮助开发者将传统DBGrid迁移至功能更强的cxGrid,实现数据展示、排序分组、导出等 阅读详情

相关推荐

DevExpress VCL Controls 26.1.3在Delphi 13.1中的安装与实战指南

Delphi作为经典的桌面开发语言,在传统行业管理系统中仍占据重要地位,但原生VCL控件面对复杂交互时显得力不从心。第三方VCL组件库通过封装成熟的表格、布局、皮肤等能力,成为提升开发效率与界面质感的有效方案。例如,cxGrid提供多级分组、主从表等高级数据展示,dxLayoutControl则让表单界面自动对齐、快速布局。这类组件不仅减少了自绘代码量,还增强了多显示器DPI适配与运行期性能,广泛应用于ERP、MES、HIS等Windows桌面客户端。本文围绕DevExpress VCL Controls

weixin_33885676的博客 449

【Delphi FireMonkey实现窗体嵌入的功能】

以前在VCL模式下,个人喜欢实现选项卡的方式打开子窗体,即每打开一个子窗体,就在主窗体的PageControl上增加一个Page,并将子窗体嵌入到新增的Page中。后面开始玩FMX,发现VCL的方式不能直接套用,需要做一些修改才可以用,以下就是针对此问题做个笔记,希望对有需要的朋友们有用。以上两步就能实现FMX模式下的窗体嵌入功能,如下图,中间图表就是调用子窗体内容。功能描述:将子窗体在主窗体的Layout里面打开显示。子窗体显示的区域:主窗体的Layout3。以下是打开子窗体的函数。

1272

Delphi 12.3安装TMS FNC UI Pack跨平台控件实战指南

跨平台开发中,UI控件方案的选型往往决定项目效率。Delphi开发者常面临VCL与FMX两套界面框架的割裂,同一需求往往需要维护两份代码。框架中立组件(FNC)通过统一接口抽象底层实现,在Windows和移动端自动映射到对应原生渲染机制,让一套UI代码覆盖多端成为可能。这种设计不仅降低学习成本,还能显著减少迁移与维护工作量。在Delphi 12.3环境下,正确安装并配置TMS FNC UI Pack v6.2.0.0,合理选用FNC Grid、ComboBox等组件,结合Library路径配置与跨平台渲染差

weixin_34357887的博客 386

FireMonkey常用控件

FireMonkey是一个跨平台的 GUI 开发框架,它支持多种平台,包括 Windows、macOS、iOS、Android 和 Linux。FireMonkey 提供了丰富的控件,以满足开发者的各种需求。 常用的 FireMonkey 控件有: TButton:按钮控件 TLabel:标签控件 TEdit:文本输入控件 TListBox:列表框控件 TComboBox:组合框控件 TProg...

weixin_42579969的博客 623

KonopkaControls VCL控件集在Delphi 13下的安装实战与常见坑点解析

在Delphi开发中,VCL控件是构建Windows桌面应用的基础组件,而第三方控件集则能有效提升界面质感与开发效率。对于采用RAD Studio 13等新版本IDE的工程师而言,在环境升级后如何顺利集成开源控件库,是一个普遍关注的工程实践问题。KonopkaControls作为一款轻量级、免费且开源的VCL控件集,提供了KVDBGrid、KGrid、KChart等增强组件,可用于快速实现数据表格、看板界面等场景。然而,在新版IDE中安装这类控件,常会遇到编译报错、组件面板不显示或控件丢失等兼容性挑战。本文

weixin_30800807的博客 489

EhLib 11.0.021适配Delphi 12 Athens兼容性指南

VCL控件库是Delphi桌面应用开发的核心基础设施,其与IDE版本的兼容性直接决定项目能否稳定编译与运行。Delphi 12 Athens重构了VCL渲染引擎、高DPI支持及Windows 11 API调用机制,导致大量旧版第三方组件失效。EhLib作为企业级VCL增强组件集代表,通过底层重写47个核心单元、双模式Direct2D/GDI+渲染适配、运行时动态加载等技术手段,实现对Delphi 12的深度兼容。该适配不仅解决Access Violation、Class Cast异常等典型崩溃问题,更支撑高

weixin_30457551的博客 403

给所有使用FMX(FireMonkey)进行开发的忠告!

没有废话,直接正文:     在开始之前,首先我假设您有10年、或者20年甚至是30年的Pascal开发经验,由于种种无法解释且又无法摆脱的原因而不得不使用FMX来进行苦逼的开发,所以,我觉得下面是您所必须要了解的: 一、放弃,放弃,再放弃!     这句话我宁愿每天说100万遍,宁愿让它长在您的脑门上,刻在您的脑子里,穿在您的衣服上!所以,请放弃使用FMX的开发,放弃,放弃,再放弃!不要问为...

Component㊣的博客 1万+

TMS FNC UI Pack实战:一套UI跨越Delphi VCL与FMX

跨平台桌面应用开发中,UI代码复用一直是工程效率的关键瓶颈。传统VCL控件基于Win32句柄,FMX虽跨平台但类体系与VCL不兼容,导致同一界面需要维护多套实现。框架中立组件(FNC)的出现改变了这一局面,其核心原理是通过Canvas自绘所有界面元素,不再依赖原生窗口控件。这种设计使得同一套UI组件可以无缝运行在VCL、FMX乃至WEB Core环境中,显著降低多端项目的维护成本。在仓储管理、移动PDA等真实场景中,开发者利用TMS FNC UI Pack的表格、列表与主题系统,仅编写一份代码即可同时交付W

weixin_30835649的博客 318

FireMonkey 界面的玩法

FireMonkey 用来做 APP 的一个特点就是做界面通吃各平台,因为它自己画图。因为自己画图,所以如果 APP 需要一些效果,也可以程序员自己搞定,通过组合各种形状,无需找第三方控件。 先看一个效图图: 第一个图是界面元素,第二个图中的圆圈发光,是因为鼠标点下去(或者手指头触摸)。 这种效果,我摸索了一下,发现用 FireMonkey 完全可以在设计期用现场控件堆出...

pcplayer的博客 7511

Delphi EhLib 13.0.015 无源码版安装、配置与核心功能实战指南

在Delphi桌面与跨平台应用开发中,数据感知控件是构建数据密集型用户界面的核心组件。标准VCL控件功能有限,而第三方控件库通过扩展数据展示、交互与导出能力,能极大提升开发效率与用户体验。EhLib作为Delphi生态中知名的增强控件库,其TDBGridEh组件提供了标题过滤、分组统计、多行表头、数据导出等高级功能,形成了完整的数据前端解决方案。在工程实践中,正确安装与配置控件库是项目稳定的基础,尤其需要关注版本兼容性与库路径设置,以避免常见的“控件版本问题”和“控件丢失”等开发困扰。本文以EhLib Vc

weixin_33226548的博客 257

交互手势FireMonkey应用实例(唐山市开滦一中 董艳凤)

交互手势FireMonkey应用实例 单位 唐山市开滦一中 作者 董艳凤 使用说明:手机APP安装后,在枫叶处,手指右划或者是下划 出现歌曲,字的颜色改变。 包含着apk文件,在Android手机上安装APP直接使用 现在移动设备中手势是主要使用方式,手指类似鼠标光标(对于Windows和Mac OS X)使用。手势可以由一个控制的父母操纵包括层次结构和第一个处理手势等问题...。下面是具体一些说明 1手势平台 Android 或者Mac OS 2如何使用手势 2.1启用标准手势 2.2实现OnGesture事件处理程序 2.3启用交互手势FireMonkey

DELPHI FireMonkey下Grid用法笔记

以前在VCL模式,使用cxGrid做什么都方便,后面使用FireMonkey的时候发现,有些简单的东西实现起来,还挺麻烦,下面就针对Grid网格的使用做一些笔记。笔记一:给网格Grid根据条件设置背景颜色与字体颜色。

536

Delphi xe FireMonkey FMX StingGrid 点击表头排序

Delphi xe FireMonkey FMX StingGrid 点击表头排序

DevExpress FMX Data Grid全面编辑

DevExpress FMX数据网格具有强大的功能,因此您可以创建漂亮的跨平台应用程序,这些应用程序可以在Windows、Android和macOS上以本地方式运行(并显示)。FMX数据网格(CTP)FireMonkey(FMX)的高性能数据网格组件,具有集成的主细节和数据分组支持。我们开发了FMX表视图,它模拟了Microsoft Outlook网格的外观、感觉和功能,并使用标准的表UI隐喻显示数据。在我们的FMX数据网格中,您可以显示任何复杂度的主细节关系,具有无限嵌套和所有级别的细节。

q2315702359的博客 914

STM32—时钟树(结合系统时钟函数理解)

时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处。心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树。 STM32时钟: 在STM32...

肥宅快乐博客 1万+

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1269

grideh SelectedRows Bookmark

VCL grideh 选中多行 TBookmark、Bookmark、GotoBookmark TBookmark bm= DataSet-&gt;GetBookmark(); DataSet-&gt;Filtered = false; DataSet-&gt;Filter=""; DataSet-&gt;GotoBookmark(bm);   ...

weixin_33697898的博客 210

Unity PSD分层导入插件ps2d原理与实战指南

PSD作为UI设计主流源文件,其图层结构、混合模式、文字矢量属性等核心语义在传统引擎导入中普遍丢失,导致设计还原度低、多语言适配难、运行时不可控。ps2d通过深度解析PSD二进制规范,将图层映射为GameObject树、文字转为TextMeshPro可编辑组件、形状生成矢量Mesh、蒙版与图层样式编译为定制Shader,实现设计意图的精准程序化表达。该方案显著提升UI开发效率,支撑高保真还原、动态修改、分辨率自适应及运行时热重载等工程需求,是Unity中连接设计师与程序员的关键工作流中枢。

weixin_32943857的博客 348

TMS Grid

TMS Grid http://edn.embarcadero.com/article/42553 转载于:https://www.cnblogs.com/cb168/p/5347240.html

weixin_30374009的博客 152

基于 PID 算法的 STM32 步进电机高精度位置控制系统设计与实现(工业自动化应用)

硬件层面:选用 STM32F103C8T6+A4988 + 欧姆龙编码器的组合,兼顾工业可靠性与成本,接线需注意强弱电分离和信号抗干扰;软件层面:核心为位置式 PID 闭环控制,Mermaid 流程图清晰展现 “采集 - 运算 - 驱动” 的闭环逻辑,代码模块化易移植;性能层面:无负载定位误差≤±1 脉冲,带载误差≤±3 脉冲,满足工业自动化高精度位置控制需求。

weixin_42300449的博客 194

【产品经理修炼之道】- 优惠券系统从入门到精通(二)

在电商平台中,优惠券的使用场景与频次都很高。那么如何做好一个优惠券系统呢?本文总结了相关流程和设计思路,希望对你有所帮助。上一篇与大家分享了架构中的前端应用、生命周期、优惠券管理中OpenAPI 、基础系统,今天继续与大家分享架构图中优惠券模板部分。

xiaoli8748的专栏 1290

浏览器自定义脚本管理插件系列介绍(三):火猴(FireMonkey)

虽然它具有类似于其他用户脚本管理器如(GreaseMonkey/Tampermonkey/Violentmonkey和用户CSS管理器如Stylish/Stylus/xStyle的功能,但也存在一些区别。- 直接从GreasyFork、OpenUserJS和file:///加载到选项卡中的脚本进行直接安装。- 支持GM3和GM4(GM_***和GM.***)样式函数,以及一些新的API(例如fetch)- 临时插入现有的用户脚本和用户CSS。- 来自脚本的通知显示脚本的名称。- 导出/导入脚本和CSS。

专注于认知和效率提升方面的分享 1182

基于Java的OPC UA Server开发指南:从零开始构建高效服务器

本文介绍了如何使用开源项目org.eclipse.milo创建Java OPC UA Server。通过创建Spring Boot项目,添加Milo SDK依赖,定义Namespace类,服务器启动类以及监听器,详细阐述了建立OPC UA Server服务的步骤。启动后,服务器默认监听地址为opc.tcp://localhost:12685,可使用Softing OPC Client进行连接。

洛阳泰山的博客 3023
上一篇: Delphi 和 Windows 的 Linux 子系统
下一篇: FireMonkey 底下用自己定义 Style 的方式,给按钮 Button 以颜色
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值