首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在字符串网格Delphi FMX中添加复选框

,可以通过以下步骤实现:

  1. 创建一个字符串网格(StringGrid)组件,并设置其属性,如行数、列数等。
  2. 在需要添加复选框的列中,设置该列的单元格类型为自定义(Custom)。
  3. 在该列的单元格绘制事件(OnDrawColumnCell)中,绘制复选框。
    • 在事件处理程序中,获取当前单元格的行和列索引。
    • 使用Canvas对象绘制复选框,可以使用Delphi提供的TCanvas类的方法,如FillRect、Rectangle等。
    • 根据当前单元格的值(可以是布尔值或其他标识),确定复选框的选中状态。
    • 根据需要,可以设置复选框的样式、颜色、大小等。
  • 在复选框的点击事件(OnClick)中,更新相关数据或执行其他操作。
    • 在事件处理程序中,获取当前单元格的行和列索引。
    • 根据复选框的选中状态,更新相关数据或执行其他操作。

示例代码如下:

代码语言:txt
复制
procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
  CheckBoxRect: TRectF;
begin
  if Column.Index = CheckBoxColumnIndex then
  begin
    CheckBoxRect := Bounds;
    InflateRect(CheckBoxRect, -2, -2); // 调整复选框的大小

    // 绘制复选框背景
    Canvas.Fill.Color := TAlphaColorRec.White;
    Canvas.FillRect(CheckBoxRect, 0, 0, [], 1);

    // 绘制复选框边框
    Canvas.Stroke.Color := TAlphaColorRec.Black;
    Canvas.DrawRect(CheckBoxRect, 0, 0, [], 1);

    // 根据当前单元格的值确定复选框的选中状态
    if Value.AsBoolean then
    begin
      // 绘制选中状态的复选框
      Canvas.Fill.Color := TAlphaColorRec.Blue;
      Canvas.FillRect(RectF(CheckBoxRect.Left + 2, CheckBoxRect.Top + 2, CheckBoxRect.Right - 2, CheckBoxRect.Bottom - 2), 0, 0, [], 1);
    end;
  end;
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
var
  CheckBoxRect: TRectF;
  Column: TColumn;
  Row: Integer;
begin
  Column := StringGrid1.Selected.Column;
  Row := StringGrid1.Selected.Row;

  if Column.Index = CheckBoxColumnIndex then
  begin
    CheckBoxRect := StringGrid1.CellRect(Column, Row);
    InflateRect(CheckBoxRect, -2, -2); // 调整复选框的大小

    // 切换复选框的选中状态
    if StringGrid1.Cells[Column.Index, Row] = '1' then
      StringGrid1.Cells[Column.Index, Row] := '0'
    else
      StringGrid1.Cells[Column.Index, Row] := '1';

    // 重新绘制复选框
    StringGrid1.Canvas.Fill.Color := TAlphaColorRec.White;
    StringGrid1.Canvas.FillRect(CheckBoxRect, 0, 0, [], 1);
    StringGrid1.Canvas.Stroke.Color := TAlphaColorRec.Black;
    StringGrid1.Canvas.DrawRect(CheckBoxRect, 0, 0, [], 1);
    if StringGrid1.Cells[Column.Index, Row] = '1' then
    begin
      StringGrid1.Canvas.Fill.Color := TAlphaColorRec.Blue;
      StringGrid1.Canvas.FillRect(RectF(CheckBoxRect.Left + 2, CheckBoxRect.Top + 2, CheckBoxRect.Right - 2, CheckBoxRect.Bottom - 2), 0, 0, [], 1);
    end;
  end;
end;

这样,你就可以在字符串网格Delphi FMX中添加复选框了。在绘制事件中绘制复选框,并在点击事件中更新复选框的选中状态。根据需要,你可以进一步扩展该功能,例如添加复选框的点击事件处理、保存选中状态等。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算服务:https://cloud.tencent.com/product/cvm
  • 腾讯云数据库服务:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器运维服务:https://cloud.tencent.com/product/cds
  • 腾讯云音视频处理服务:https://cloud.tencent.com/product/mps
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云物联网服务:https://cloud.tencent.com/product/iot
  • 腾讯云移动开发服务:https://cloud.tencent.com/product/mob
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/vr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

博客目录及索引,欢迎指导交流

java的锁 java字符串相关知识整理 ThreadLocal简单理解 Java模拟Windows的Event 多用多学之Java的Set,List,Map 学习笔记:Java的集合类简单理解...聊聊从web session的共享到可扩展缓存设计 Apache Ignite Apache Ignite之集群应用测试 Ignite性能测试以及对redis的对比 Apache Ignite高性能分布式网格框架...的TIdSMTP改造,解决发送Html和主题截断问题 技术笔记:Delphi多线程应用读写锁 技术笔记:Indy控件发送邮件 学习笔记:7zdelphi的应用 学习笔记 :DrawText 学习笔记:...delphi之TStringGrid 学习笔记: Delphi之线程类TThread 学习笔记:delphi多线程知识 WEB开发相关 Http状态码之:301、302重定向 学点HTTP知识 学习笔记...:URL Protocol浏览器打开本地应用程序 学习笔记:发现一个IE版本判断的好方法 使用js在网页上记录鼠标划圈的小程序 其他 学习笔记:内存,堆栈,到底为何物?

1.7K90
  • Navi.Soft31.WinForm框架(含下载地址)

    ,权限管理等 本框架指在解决这些问题,并将通用的功能抽离并实现.使开发过程,将更多的精力放在业务逻辑 1.2面向对象 Net程序开发员 1.3开发环境 开发环境 描述 VS2012或以上 整个框架只有此一个解决方案...描述 l 提供在日常项目开发过程,各功能点整理和总结 n 提供对字符串的加密/解密,转义等功能.如下图所示 ? n 时区转换 ? n C#代码是支持goto语句的,如下图所示.但不推荐使用 ?...n 调用Com对象.此项技术用于使用C#制作Com对象,被其他开发工具使用.如:VB,PB,Delphi等 n 条码打印.此示例是使用DevExpress提供的打印功能,通过其自带的打印模板,实现打印功能...n Grid控件帮助页面.是指将数据以Grid网格形式展示,只需传入参数,页面公用 ? n CheckBoxList帮助页面,是指将数据以复选框列表形式展示,只需传入参数,面用公用 ?...COM组件引用 项目引用若干COM组件,包括PDF文档预览组件,Office文档预览组件,视频播放组件.框架本身已提供安装程序\packages\Tools\文件夹(暴风影音安装程序未提供) 2.

    3K70

    【译】W3C WAI-ARIA最佳实践 -- 布局

    如果导航功能可以动态地向DOM添加更多的行或列,则将焦点移动到网格的开头或结尾的键盘事件(例如 control + End ),可将焦点移动到DOM的最后一行,而不是先前可用数据的最后一行。...如果网格包含带有用于选择行的复选框的列,则该键可以用作焦点不在复选框时勾选框的快捷方式。 Control + A: 选择所有单元格。...例如,消息的收件人列表可能是个网格,其每个单元格包含一个代表收件人的链接。网格最初可能只有一行,但是随着收件人的添加,会变为多行。...如果导航功能可以动态地向DOM添加更多的行或列,则移动焦点到网格的开头或结尾的键盘事件(例如 control + End ),可将焦点移动到DOM的最后一行,而不是后端数据可用的最后一行。...这些小部件的示例包括链接,按钮,菜单栏,切换按钮,单选按钮(不是单选按钮组),开关和复选框。 一个单元格包含文本或一个单独的图形,网格导航键单元格上设置焦点。

    6.2K50

    【Python篇】PyQt5 超详细教程——由入门到精通(序篇)

    我们先在窗口中添加了一个标签,然后再添加了两个水平排列的按钮。按钮排列水平布局,水平布局本身又嵌入到了垂直布局,形成了一种灵活的组合布局。...2.6 更多布局管理器介绍 QGridLayout (网格布局管理器) QGridLayout 允许你以网格的形式排列控件,每个控件可以放置指定的行和列。它适合用来创建表单或矩阵式的控件布局。...= QGridLayout() # 添加控件到网格布局的特定行和列 layout.addWidget(QLabel("标签 1"), 0, 0) # 第 0 行,第...addWidget(widget, row, column):将控件添加到指定的行和列,比如 (0, 0) 表示控件放置第一行第一列。...这部分在之后还会有更加详细的介绍 第3部分:常用控件详解 PyQt5 ,常用的控件(也称为小部件)有很多,它们可以用来实现用户界面的各种元素,比如按钮、文本框、复选框等。

    2K20

    C# WPF DataGrid下面 使用CheckBox 选中事件

    控件文件 第一种方式:在对应的铯实现 格子 数据网格名称='DG1 '网格Row='5 '网格column span=' 4 ' items source=' { Binding my list,...-这里是具体使用复选框- DataGridTemplateColumn Header='复选框测试width="* "数据网格模板列.单元格模板数据模板 !...-绑定是启用的是类的属性叫做属性自己可以随便定义即可(定义弯曲件类型)-复选框水平对齐=' Center ' Click=' CheckBox _ Click '被选中=' {启用绑定} '//数据模板...//这里是拿到我的列表类的属性属性即上面标记语言中检验盒中绑定的变量 } } } 第二种实现:MVVM结构 Da taGridTemplateColumn .HeaderTemplate数据模板复选框为...=' { Binding Path=被选中,relative source={ relative source Self } } '//数据模板/datagridtemplatecollen .模板 伏特计实现数据上下文全部检查命令方法即可

    2.8K40

    谷歌最新验证系统又双叒被「破解」了,这次是强化学习

    等等,「我不是机器人」这种界面不是已经 v3 中被移除了吗?理论上是该这么做,但在实际操作并没有。...论文一作 Akrout 表示, reCAPTCHA v3 ,网站设置其分数阈值以判定用户是否为机器人。...「我认识的大部分程序员会添加复选框,因为他们不知道如何选择恰当的时机来询问 v3 系统的判断。」 正是这个复选框的存在让 Akrout 和他的同事们发现了绕过 reCAPTCHA v3 的可能。...他说道:「本文试图展示的攻击仅仅是从页面的随机起点移至复选框。这是用户在实践与实际页面产生交互的非常具体和有限的子集(如填写表格、与多页面元素交互以及跨越更复杂模式等)。」...我们提出的方法 100 × 100 的网格实现了 97.4% 的胜率, 1000 × 1000 的屏幕分辨率上实现了 96.7% 的胜率。

    2.3K10

    delphi 数据库连接池-kettle案例3.5--数据库连接

    由于数据库的种类有很多,因此Kettle工具的数据库连接窗口包含多种数据库类型。   ...若是勾选“支持布尔数据类型”的复选框,Kettle就会为支持布尔类型的数据库生成正确的SQL语法。...the data type:即支持时间戳数据类型,若是勾选该选项的复选框,Kettle就会为支持时间戳的数据库生成正确的时间类型。...“选项”标签 “选项”标签,设置数据库的特定参数delphi 数据库连接池,例如数据库连接的参数。“选项”标签界面具体如图所示。   4....当一个数据库不能满足需求时,我们可以使用多个数据库来处理数据,即采用数据库分区技术来分散数据的加载,这样可以将一个大的数据集分为多个小数据组(即分区)delphi 数据库连接池,每个分区都保存在独立的数据库

    1.4K20

    Gizmos菜单_gi clamp

    Show Grid 显示网格 该显示网格复选框切换场景视图上的标准场景测量网格(选中)和关闭(未选中)。要更改网格的颜色,去团结 > 首选项 > 颜色,改变网格设置。...相机和灯的内置图标 左图:3D模式下的图标。右:2D模式下的图标。 显示网格 该显示网格功能,切换场景的平面网格。下面的图像显示了它在场景视图中的显示方式: 左:现场查看电网已启用。...在此图像,“场景”视图网格的颜色为深蓝色,以使其浅色地板上更好地显示: 选择外形和选择线 选择大纲 当选择大纲启用,那么当你选择场景的视图或层次窗口游戏物体,橙色轮廓周围会出现在场景认为,...注意:如果在列表的项目有一个小物件,但没有图标,没有图标列的选项。 勾选的复选框小玩意儿列选择是否小玩意儿的图形是由编辑特定组件类型绘制。...取消选中此列复选框可关闭这些Gizmos。 注意:如果在列表的项目都有一个图标,但没有小发明,没有在此列没有复选框

    3.7K10

    delphi vcl_delphi数据类型

    TStringGrid和TDrawGrid类提供了一种表示网格信息的方法。...例如,TDBGrid组件是用来显示网格的数据库表,在这种情况下,TDBGrid充当用户与数据库的接口,通过TDBGrid,用户可以查看和编辑数据库表。...这个组件组包含一些功能强大的组件(Win 3.1标签源自Delphi1)。其中比较好用的是TTabSet和TNotebook组件。...除了这里列出的GDI类以外,还有一些其他类,以后的Delphi学习过程,我们将会学习到更多有关这方面的类,并掌握使用它们。...更多这些类的详细信息请大家自己看看Delphi VCL Help。 这不是全部 讨论到这里并没有讨论到所有的VCL类,但这里所涉及到的类应用程序中用到的可能性很大。

    2.7K10

    恶意代码分析实战六:熊猫烧香病毒样本分析

    注册表监控 将RegSetValue添加到筛选器的“Operation”,可以看到注册表的行为: 注册表的这个位置主要是用来随机数种子的生成,仅仅靠这条信息是无法推测出病毒的行为的,所以这里我们认为...文件监控 将CreateFile添加到筛选器的“Operation”,可以看到文件操作的行为: 可以标红处位置看见,“样本.exe”C:\Windows\system32\drivers目录创建了文件...sub_403C98(AllocStrCpy) Part1: 我们图1可以看到有两个sub_403C98的函数,因为之前说过上面代码都是Delphi自动生成的,所以这里就不分析,我们最开始的地方应当是标红这位置开始分析...可见,经过Call后ecx寄存器得到了解密后的字符串***武*汉*男*生*感*染*下*载*者***。...它可以将符号表(Map)文件导出,便于我们OD载入符号表进行调试。 显示出了Delphi的符号,便于分析和调试。

    3.3K20

    JAVA学习Swing章节按钮组件JButton的简单学习

    是较为常见的组件,用于触发特定动作 * Swing中提供了多种按钮,包括提交按钮,复选框,单选按钮等 * 这些按钮都是从AbstractButton类中继承而来的 * * 2:Swing的提交按钮组件...同时设置按钮文字和图标 JButton jb=new JButton("button"+i,icon); container.add(jb);//将按钮添加到容器...JCheckBox * 其Swing组件的使用也非常广泛,它具有一个方性图标,外加一段描述性文字 * 复选框区别于单选按钮就是每一个复选框都提供了选中和不选中两种状态 * * @author...* * 3:Swing存在一个ButtonGroup类,用于产生按钮组。...container.add(jp);//将面板添加到容器 //设置容器的特性 setTitle("单选按钮的简单练习");//容器的标题

    3.2K50

    Excel图表学习59: 绘制时间线图

    图2 选择数据单元格区域A1:B17,单击功能区“插入”选项卡“图表”组的“散点图”,得到原始图表如下图3所示。 ? 图3 选取垂直坐标轴,设置其格式。...将横坐标轴交叉的”最大坐标轴值“选中,选取”逆序刻度值“前的复选框,如下图4所示。 ? 图4 选取水平坐标轴,设置其格式。...图5 给数据系列添加标签,并设置数据标签格式。选取“标签选项”的“单元格的值”前的复选框,并选择工作表的单元格区域C2:C17,得到如下图6所示的结果。 ?...图6 删除图表网格线和垂直坐标轴,添加图表标题并设置标签合适的字号大小,得到的图表如下图7所示。 ?...图7 选取图表系列,单击功能区“图表工具”选项卡“设计”选项卡的“添加图表元素—误差线—标准误差”,如下图8所示。 ?

    2.8K10

    【实践】VISIO经验(粘附跨线对齐连线文本框调整)

    “对齐和粘附”对话框的“常规”选项卡上,“当前活动”下,清除“粘附”复选框。 【建议】要选择连接点,便于吸附粘贴到形状的不同位置。...默认开启新创建的连接线的粘附 “视图”选项卡上单击“"视觉帮助”组的对话启动器。 “对齐和粘附”对话框的“常规”选项卡上,“当前活动”下,选中“粘附”复选框。...默认情况下,形状与标尺细分线和网格同时对齐。 要更轻松地使形状与标尺细分线对齐,请关闭对齐网格。 1,“视图”选项卡上的“视觉帮助”组,单击对话框启动器。...2,“常规”选项卡上的“当前活动”下,清除“对齐”复选框以禁用对齐,或选中“对齐”将其启用。 3,“对齐目标”下选择想要形状与之对齐的绘图元素,然后单击“确定”。...2.5 连接线对应的文本位置调整 首先双击两个图形间的连接线,添加需要的文字 首先点击菜单栏上部的指针工具,然后选中连接线。

    7.2K41

    2

    本次讲座,我们以Delphi5为开发工具,标准的paradox表为后台数据库,来向大家介绍如何进行最简单的数据库编程。...本例,我们将实现对一个数据表单的添加、修改、删除以及对表数据进行查询的功能。   ...废话少说,现在开始:   正式编写程序之前要有许多准备工作,这当然包括Borland Delphi 5的安装。...除工资之外的属性都是字符串类型,即图中Type项所选择的A(Alpha),而Size则是指的字符串的长度,属性值的长度是根据属性的具体意义来确定的,例如“性别”选择只有“男”和“女”,一个汉字的长度,那么性别属性的长度设置成...>这样控件的属性就设置完毕了,注意到dbgrid里面的“编号”、“姓名”等栏都是数据表的属性,ryb.db里面定义,而不是在前端的delphi程序里面定义。

    55620

    Delphi考虑sql注入 QuotedStr

    之前只BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个问题...总体讲,大体知道有两种方式可以避免Delphi的Sql注入:1、用QuotedStr替代”’进行字符串拼接;2、采用传参数的方式与数据库交互,这种方式哪天再仔细体验一下。...以下为一个小测试,一个简单的插入语句,如果Edit1内容为 abc’) delete from tb1 insert into tb1(Id, Name) values(123, ‘xxxx 则运行后,tb1表之前数据将全部清除...,只剩下insert into tb1(Id, Name) values(123, ‘xxxx 添加的一条 [delphi] view plain copy procedure TForm1.

    38520
    领券