学用 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模块之导入包及模块发布
1.导入包(不常用的方法) 在使用python的包时,有时候想直接导入包名,然后通过包名来调用模块,例如: temp为我们创建的一个包,如果我们想通过下面的方式进行导入模块中的方法,将会出错 impo ...
- (转) IntelliJ IDEA2018激活
IntelliJ IDEA2018破解教程 破解方法:下载破解补丁→修改配置文件→输入激活码→激活成功 由于JetBrains封杀,大部分激活服务器已经不能使用,使用下面的比较麻烦的方法也可以进行破解 ...
- (转)JAVA socket 进行十六进制报文交互测试
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...
- Android仿支付宝扣款顺序,动态改变ListView各Item次序
前言:今天遇到个需求,需要让用户动态选择语音传输方式的次序,突然想起支付宝选择扣款顺序的功能,恰好能满足需要,就花了点时间写了个demo,在此权当学习记录 先上效果图 支付宝的效果 demo的效果 思 ...
- Linux查看某进程的线程
首先得知道你要查的进程的PID: 比如我要查看看我unimrcpserver的线程 第二种方法:top top命令可以实时显示各线程情况.就相当于windows的资源管理器.
- 如何通过Samba共享Linux文件夹
https://blog.csdn.net/stu059074244/article/details/77766155 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Window ...
- Olympic Game
每次奥运会期间,大家都非常关注奖牌榜排名的情况. 现在我们假设奖牌榜的排名规则,按优先级从高到低如下: 金牌 数量多的排在前面: 银牌 数量多的排在前面: 铜牌 数量多的排在前面: 若以上三个条件仍无 ...
- 2019JAVA最新课程-React从入门到实战(新)
1.准备工作 可以在yunp.top网站看webpack,node/npm,cnpm的相关使用视频教程 react有两种使用方式,一是在现有网站中添加:二是创建一个全新的 官网创建全新一个react ...
- Mysql 日期函数date_format()
用法:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据 1.语法 date_fromat(date,format) 说明:date 参数是合法的日期.format 规定日期/时间的输 ...
- 带 like 的字符串匹配查询
1.百分号通配符 '%' ,匹配任意长度的字符,甚至包括零字符 例:查询所有以 'a' 字母开头的水果,sql 语句如下 select f_id,f_name from fruits wher ...