分享

Delphi 使用控件的技巧

 163九九 2016-08-09

最新Delphi 使用控件的技巧

以下是三零网为大家整理的最新Delphi 使用控件的技巧的文章,希望大家能够喜欢!

 丰富多彩的标签。
我们已经不满足于Delphi提供的简单的标签,能不能在标签中有不同的字体,有不同的颜色,以此来丰富我们的表现能力。回答是肯定的,并且用不着第三方提供的控件,我们只要巧妙的利用Delphi自己提供的TRichEdit就可以了。首先将TRichEdit控件的边框去除:RichEdit1.BorderStyle:ΚbsNone;同时设置只读属性为真:RichEdit1.ReadOnly:ΚTrue;然后,你利用write之类的软件制作好RichText格式的文本,通过以下语句就可以显示出来了:

  RichEdit1.PlainText:ΚFalse;
RichEdit1.Lines.LoadFromFile(′c:ιtest.rtf′);

 

在Delphi中实现类似VB中的控件数组。
你可以通过设置一组相应控件的TAG属性来实现这一功能。首先在窗体中放置3个BUTTON控件,然后分别设置这三个控件的TAG属性为1、2、3。接下来双击任意一个按钮,
在其代码部分输入如下代码:

procedureTForm1.Button1Click(Sender:TObject);
varcap:string;
begin
caseTButton(sender).Tagof
1:ShowMessage(′1stButtonPressed′);
2:ShowMessage(′2ndButtonPressed′);
3:ShowMessage(′3rdButtonPressed′);
end;
end;

最后在其他两个按钮的ONCLICK事件中选择已经编好的代码。这样一来就可以实现以上功能了。

在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;

 


延伸阅读:
·Delphi 实现运行时改变控件大小
·Delphi 实现控件移动的类
·Delphi 实现显示和存放JPEG图形的控件
·Delphi 利用 DBGrid控件实现“点击标题栏自动排序功能”
·Delphi 状态栏控件应用实例
·Delphi 控制 DBGrid控件显示单元格
·Delphi 数据库开发 Query控件 介绍
·Delphi 利用 DBGrid控件的Sort属性实现标题栏自动排序
·Delphi 控制控件随窗体变化
·Delphi 不使用第三方控件实现XP风格POP菜单
·Delphi 简易托盘图标控件(TTrayIcon)介绍
·Delphi 实现 DbGrid控件标题栏弹出菜单
·Delphi 利用 DbGrid控件隐藏或显示标题栏
·Delphi 实现在 DBGrid控件中显示图形
·Delphi 实现定制 DBGrid 控件 示例

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多