说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi中实现类似VB中的控件数组。

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi中实现类似VB中的控件数组。

在Delphi中实现不同风格的SPEEDBUTTON。

在许多常用的软件(如WORD)中经常会遇到这样的快捷按钮(SPEEDBUTTON):若干个按钮做为一组来工作,同一时刻只能有一个按钮处于按下状态,比如WORD中的四个段落排版按钮。在Delphi中实现这样的功能只需要简单的一个步骤:设置若干个SPEEDBUTTON按钮的GROUPINDEX属性设置为同一个大于0的整数。

还有另外一种快捷按钮,我们称之为开关按钮,比如WORD中的“粗体”按钮,这种按钮每按一次状态就改变一次。在Delphi中实现这种按钮只需要两步设置:首先设置按钮的GROUPINDEX属性为一个大于0的整数,第二步设置ALLOWALLUP属性为TRUE。这样就完成了开关按钮的建立。

通过调用API确定MEMO控件中的当前行和列。

你可以调用WINDOWSAPI中的EM—LINEFROMCHAR和EM—LINEINDEX函数来确定MEMO控件中的当前行和列,具体调用的过程见下面的过程。

varLineNum:longint;

CharsBeforeLine:longint;

begin

LineNumΚSendMessage(Memo1.Handle,EM—LINEFROMCHAR,Memo1.SelStart,0);

CharsBeforeLine:=SendMessage(Memo1.Handle,EM—LINEINDEX,LineNum,0);

Label1.Caption:=′Line′+IntToStr(LineNum+1)

Lab

el2.Caption:=′Position′+IntToStr((Memo1.SelStart-CharsBeforeLine)+1);

end;

动态产生构件并相应事件

方法:

var

MyBu : TBUTTON;

begin

MyBu:=TBUTTON.Create(Form1);

MyBu.Parent:=Form1;

MyBu.Left:=10;

MyBu.Top:=10;

MyBu.OnClick:=MyOnClick;

MyBu.Show;

end;

注:MyOnClick为响应的事件过程.

几个构件共用一段代码

方法:

(Sender as TStringGrid).Width:=5;

注:这样将发送消息的构件强制类型转换成TStringGrid类

并改变它的属性.

回车替Tab下移控件

需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击键:

Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);

Begin

if key=#13 then { 判断是按执行键}

if not (ActiveControl is TDbgrid) Then

Begin { 不是在TDbgrid控件内}

key:=#0;

perform(WM_NEXTDLGCTL

0

0);{移动到下一个控件}

end else

if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}

begin

With TDbgrid(ActiveControl) Do

if Selectedindex<(fieldcount-1) then

Selectedindex:=Selectedindex+1{ 移动到下一字段}

else Selectedindex:=0;

end;

End;

分行提示

无论你什么时候要分行显示的时候,只需要在字符串中间加入“#13”就可以了,但在属性框里却不能这么干,以下就几种控件加以说明:

begin

Label1.caption :='垂'+#13+'直'+#13+'显'+#13+'示';

Edit1.Hint :='输入框说明:'+#13+'文本的输入';

end;

运行时生成控件

㈠、运行时生成可视控件:以下以TEdit 控件为例

1.在Form的Public中定义TEdit控件

Edit1:TEdit;

2.在需要生成的地方加入以下代码:

Edit1:=TEdit.Create(Self);

Edit1.Parent:=Form1;

Edit1.Left ?:=20;

Edit1.Top :=20;

Edit1.Text :='Edit1 Text';

3.使用完毕后,释放分配的资源

if? Assigned(Edit1) then Edit1.Free; ?

㈡、运行时生成非可视控件:以下以 TTimer控件为例

1.在Form的Public中定义TTimert控件

Timer1:TTimber;

2.在需要生成的地方加入以下代码:

Timer1:=TTimer.Create(Self);

Timer1.OnTimer:=YourAction;

YourAction是自己定义的OnTimer事件,使用

procedure TForm1.YourAction(Sender:TObject); 完成

3.使用完毕后,释放分配的资源

if? Assigned(Timer1) then Timer1.Free; ?

.NET技巧:用TcpClient类测试网络服务 在VB.NET中用AT命令发送手机短信(SMS) 修改 WordPress 的 Flash Video Player 插件,使视频播放器显示封面图 JQuery和CSS实现图片幻灯片显示 JQuery操作Ajax的基本方法 我用openform打开一个窗体或报表为什么总是弹出一个“您输入的表达式包含无效的语法”窗体 对象不支持此属性和方法 很菜的问题,在线等…… solaris下oracle8i无法备份出来. 求教关于二进制存储的问题 sql server 是不是不支持limit?可以用什么代替呢? 求教关于二进制读取的问题 ImageCreate中文字符问题 各位大哥,请问"计算任意两天相差的天数"的算法是什么 袁隆平电影观后感,求自己写的不要抄袭,还有明天一天 帮我安排一下作业时间,就是几点做什么!今天下午4- 一种自行车的车轮外胎直径是40厘米,按每分钟转10 一种小型自行车的外胎直径是50厘米,按每分钟转10 对一件事很坚持怎么用词语形容 用长短不等的八根小棒拼搭成三个相同大小的正方形 12根小棒摆成4个小正方形,请你移动4根小棒,使4 怎样安排时间做作业啊?快开学了,我还没完成作业,我 求诗词,用来形容追求一个心意的女孩子,但是追不到, 德媒曝美国驻柏林大使馆涉嫌参与对默克张玮、张赫宣和金池将带粉丝组队飙歌安理会谴责马里特派团遇袭事件 吁迅速白宫宣传乳癌防治月活动 点亮粉红色灯韩国双胞胎整形“扭转命运” 戽斗脸变隆平高科:一季度净利增长近四成一万次感动不如一次伸手刚升职为保安班长,他在巡查故障电梯时陕西:家长为给孩子“报仇” 溜进教室封基“长跑王”封转开 嘉实泰和孤辰公子海贼夏火的抽奖机武周攻略某科学的剑君魔王在努力獐岛旅游童话树屋旅游云峰山旅游虞山公园旅游百度大厦旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘