学用 TStringGrid [6] - Options
本例运行效果图:

一般修改 TStringGrid 的 Options 直接在设计时选一下 True 或 False 就行了; 代码中可以像下面操作:
StringGrid1.Options := [goFixedVertLine];
StringGrid1.Options := [goFixedVertLine, goVertLine, goColSizing];
做完这个例子发现不太初级了, 但代码很简单:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids; type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
GroupBox1: TGroupBox;
procedure FormCreate(Sender: TObject);
procedure GroupBox1Click(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} uses
TypInfo; {需要这个单元获取 StringGrid1.Options 选项名称} var
cb: TCheckBox; {准备动态生成 15 个 TCheckBox}
GridOpt: TGridOptions; {StringGrid1.Options 是一个 TGridOptions 类型(集合)}
{同时也应知道: TGridOptions 集合是根据 TGridOption 枚举定义的} {窗体建立时, 干了不少事}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j: Integer;
gb: TGroupBox; {为简化 GroupBox1 名称用}
begin
StringGrid1.RowCount := ; {设 StringGrid1 为 16 行} {给每个单元赋值}
with StringGrid1 do
for i := to ColCount - do
for j := to RowCount - do
Cells[i,j] := Format('%.1x%.1x',[i,j]); {下面只是动态生成 15 个 TCheckBox, 并赋予标题与 OnClick 功能}
gb := Self.GroupBox1; {用 gb 简化 GroupBox1 的称谓}
j := ; {用来记录 TCheckBox 的纵向位置}
for i := to do
begin
if cb<>nil then Inc(j,cb.Height);
cb := TCheckBox.Create(Self);
cb.Parent := gb;
cb.Left := ; cb.Top := j;
cb.Caption := GetEnumName(TypeInfo(TGridOption),i);
cb.OnClick := gb.OnClick; {本来可以没有下面这句, 不然会隐藏部分名称, 可能是中文系统的支持问题}
cb.Width := Canvas.TextWidth(GetEnumName(TypeInfo(TGridOption),))+ ;
end;
end; {这个主要是让 TCheckBox 调用的}
procedure TForm1.GroupBox1Click(Sender: TObject);
var
i: Integer;
begin
GridOpt := [];
for i := to GroupBox1.ControlCount - do
begin
if TCheckBox(GroupBox1.Controls[i]).Checked then
GridOpt := GridOpt + [TGridOption(i)];
end;
StringGrid1.Options := GridOpt;
end; end.
附上窗体设计源码:
object Form1: TForm1
Left =
Top =
Caption = 'Form1'
ClientHeight =
ClientWidth =
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesigned
OnCreate = FormCreate
PixelsPerInch =
TextHeight =
object StringGrid1: TStringGrid
Left =
Top =
Width =
Height =
Align = alClient
TabOrder =
ExplicitWidth =
end
object GroupBox1: TGroupBox
Left =
Top =
Width =
Height =
Align = alRight
Caption = 'GroupBox1'
TabOrder =
OnClick = GroupBox1Click
ExplicitLeft =
end
end
学用 TStringGrid [6] - Options的更多相关文章
- 跟我一起学.NetCore之选项(Options)核心类型简介
前言 .NetCore中提供的选项框架,我把其理解为配置组,主要是将服务中可供配置的项提取出来,封装成一个类型:从而服务可根据应用场景进行相关配置项的设置来满足需求,其中使用了依赖注入的形式,使得更加 ...
- Delphi控件之---通过编码学习TStringGrid(也会涉及到Panel控件,还有对Object Inspector的控件Events的介绍
我是参考了万一的博客里面的关于TStringGrid学习的教程,但是我也结合自己的实际操作和理解,加入了一些个人的补充,至少对我有用! 学用TStringGrid之——ColCount.RowCoun ...
- Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)
一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...
- jquery photoClip支持手机端,PC端 本地裁剪图片后上传插件
支持手机,PC最好的是jquery photoClip插件,下载地址&示例:https://github.com/topoadmin/photoClip demo.html 代码: <! ...
- 学习笔记:delphi之TStringGrid
1.说明 最近加入了一个项目组,使用的开发工具是delphi6,想想又要开始搞这个工具有点小忧伤,但没办法谁让咱就是个打杂的尼... 的需求是显示一个类似于Word/excel的那种表格,可以合并列等 ...
- 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选
在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...
- 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求
论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- 学完了js的知识,一起分享总结知识点
又一个知识点学完了,到了总结学习效果和知识总结的时间了.js这个编程语言相对于html和css的逻辑性要强一些,也比较不容易上手.概念性的知识点不难理解,就是实际的操作并不容易,需要通过学习和借鉴案列 ...
随机推荐
- python程序超时处理 timeout_decorator
如下两个例子,实现对某个函数的超时处理(其实就是加了一个装饰器timeout): 成功例子: 代码: import time import timeout_decorator @timeout_dec ...
- AIX中的/etc/inittab文件
1./etc/inittab文件 /etc/inittab文件从上到下逐行表述了某个服务或应用的启动需求.运行级别.应用脚本,格式如下: identifier:Runlevel: Action: ...
- C#操作目录和文件
C#操作目录和文件 创建目录和文件 1.通过Path类的Combine方法可以合并路径. string activeDir = @"C:\myDir"; string newPa ...
- EFCore, 输出执行的Sql语句到控制台或者调试窗口
.net core 已经集成的各种日志功能,使用efcore时,只需要按情况引入相应的包即可,如果你用的是.net core调试,那么可以引入 Microsoft.Extensions.Logging ...
- 记录手机端h5页面碰到的一些问题
关于input光标在手机端偏移 问题根本:不要使用line-height垂直居中. 解决方法:可直接定义height,然后高度由上下padding值撑开. 移动端清除input光标 ios input ...
- Css min-height max-height min-width max-height
Css min-height应用地方解释我们有时设置一个对象盒子时候避免对象没有内容时候不能撑开,但内容多少不能确定所以又不能固定高度,这个时候我们就会需要css来设置min-height最小高度撑高 ...
- pt-online-schema-change的用法
pt-online-schema-change的用法 环境: 10.192.30.53 主库 10.192.30.60 从库 mysql版本:8.0.17 为了方便操作,简单的写了如下的脚本. #!/ ...
- springboot项目作为其他项目子项目
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/P ...
- TypeScript作为前端开发你必须学习的技能(一)
2019年,TypeScript已经开始渐渐的崭露头角,各大框架都说要使用TypeScript,虽然现在还没有完美,但是TypeScript很有可能会成为下一个主流技术. 废话就不多说了,直接开始吧. ...
- antd表格分页
<Table bordered loading={loading} dataSource={list} pagination={{ showSizeChanger: true, total: d ...