丰富多彩的标签。
我们已经不满足于Delphi提供的简单的标签,能不能在标签中有不同的字体,有不同的颜色,以此来丰富我们的表现能力。回答是肯定的,并且用不着第三方提供的控件,我们只要巧妙的利用Delphi自己提供的TRichEdit就可以了。首先将TRichEdit控件的边框去除:RichEdit1.BorderStyle:ΚbsNone;同时设置只读属性为真:RichEdit1.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中实现不同风格的SPEEDBUTTON。
在许多常用的软件(如WORD)中经常会遇到这样的快捷按钮(SPEEDBUTTON):若干个按钮做为一组来工作,同一时刻只能有一个按钮处于按下状态,比如WORD中的四个段落排版按钮。在Delphi中实现这样的功能只需要简单的一个步骤:设置若干个SPEEDBUTTON按钮的GROUPINDEX属性设置为同一个大于0的整数。
还有另外一种快捷按钮,我们称之为开关按钮,比如WORD中的“粗体”按钮,这种按钮每按一次状态就改变一次。在Delphi中实现这种按钮只需要两步设置:首先设置按钮的GROUPINDEX属性为一个大于0的整数,第二步设置ALLOWALLUP属性为TRUE。这样就完成了开关按钮的建立。
通过调用API确定MEMO控件中的当前行和列。
你可以调用WINDOWSAPI中的EM—LINEFROMCHAR和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控件
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控件
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 控件 示例
|