delphi十个小技巧。。。。
1、判断一个字符串是否包含于另外一个字符串的方法
例如:if pos('ab','abcd')<>0 then
messagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0);
pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.
2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化!
(1) BorderStyle 为 bsNone
(2) Windowstate 为 wsMaximized
(3) 退出时可加一个按钮之类的,写上 close 即可退出。
3、数字格式化输出
format('%8.2f',[123.456]),返回字符串' 123.46'。
4、播放一个wav文件
use mmsystem;
SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);
5、InputBox,InputQuery和ShowMessage函数的威力
uses dialogs;
var s,s1:string;
b:boolean;
begin
s:=trim(Inputbox('NewPassword','Password','masterkey'));
b:=s<>'';
s1:=s;
if b then b:=InputQuery('Confirm Password','Password',s1);
if not b or (s1<>s) then ShowMessage('Password Failed');
end;
6、几个有关子目录的操作的过程
MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str);
IOResult --上面几个过程调用成功即返回0值
7、将一个可视控件变成图形类型
例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做:
image1.width:=label1.width;
image1.height:=label1.height;
label1.perform(WM_PAINT,image1.Canvas.Handle,0);
8、如何得到字符的ASCII值
得到字符的ASCII值,可以用如下语句:
var: a:integer;
string1:string;
begin
string1:='ABC';
a:=byte(string[1]); {此时就得到'A'的ASCII值}
end;
9、动态更新DBGrid的颜色
例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Population').AsInteger > 20000000 then DBGrid1.Canvas.Font.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
10、获得命令行参数
1. 取得命令列参数的个数: ParamCount 函数
2. 呼叫 ParamStr(0), 传回执行档的档名(含路径)
3. 呼叫ParamStr(n), 传回第n个参数的内容
例子:
procedure TForm1.FormCreate(Sender: TObject);
var
ix: integer;
begin
Memo1.Lines.Clear;
if ParamCount = 0 then
Memo1.Lines.Add('没有参数')
else
begin
Memo1.Lines.Add('档名:' + ParamStr(
0));
for ix := 1 to ParamCount do
Memo1.Lines.Add(ParamStr(ix));
end;
end;
delphi小技巧两则 转自逸仙时空
最近在研究类及类方法时发现一些很有趣的用法,这里挑出两则最有用的与大家分享。
一、访问保护属性
众所周知,delphi的对象有private、protected和public三个级别的访问控制。而delphi有一个奇怪的规则,就是在同一个unit里的对象可以互相访问对方的protected 级别属性!
利用这个特性,我们可以轻松访问任意对象的protected级别属性。虽然这样不是很符合面向对象编程的封装的思想,但有时的确是非常有用的。比如在使用TDBGrid时,我们对如何获得其Row和Col非常头疼,其实在TDBGrid中,Row和Col都是protected级别的属性,我们只要在需要使用这两个属性的unit的interface里声明
TFakeGrid = class(TDBGrid);
然后就可以使用TFakeGrid(ADBGrid).Row和TFakeGrid(ADBGrid).Col 轻松访问了,这个规则对protected里的方法同样适用。
二、类方法的使用类方法(Class methods)是一类特殊的方法,它们在声明时要以class开头
type
TFigure = class
public...
class procedure GetInfo(var Info: TFigureInfo);
virt