Delphi随记

可以用GetPropInfo来判断一个对象或者类是否拥有某个属性

可以用SetPropValue来为某个属性赋值,用GetPropValue来获取某个属性的值.

以上前提是属性必须声明在published里(在被判断类的前面使用{$M+},否则编译会出警告,但不影响功能),在public里是不行的.

 

当TObjectList对象的OwnsObjects属性设置为True(默认值)时,如果调用TObjectList对象的Clear,Delete,Remove或者释放TObjectList对象,都将销毁列表中的对象,而TList则不会.另外需要注意的是OwnsObjects并不影响Extract(Extract类似Remove,只是会返回被删除对象的指针),Extract只是从列表移除对象引用,并不会销毁对象.

当TComponentList列表里的一个对象被释放时,将自动从列表里移除.

 

没有Handle的组件必须被一个TWinControl包含,并且由这个TWincontrol负责绘制.TWinControl的PaintControls方法做的就是这件事.

 

如果要使用泛型,需要引用System.Generics.Collections;

 

动态创建菜单项:

function NewItem(const ACaption: string; AShortCut: TShortCut;
  AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: THelpContext;
  const AName: string): TMenuItem;

如:

PopupMenu1.AutoHotkeys := maManual;

PopupMenu1.Items.Add(NewItem(edtHistory.Text,0,False,True,RestoreText,0,''));

 

资源文件格式

名称:xxx.rc

内容:

STRINGTABLE
BEGIN
1 "AB"
2 "12"
END bmp1 Bitmap a.bmp
icon1 icon a.ico

 

资源文件目录必须包括需要的文件

rc文件需要用brcc32编译为res文件才能使用,使用方法为:运行cmd,切换到rc文件目录,执行brcc32 xxx.rc.如果需要指定文件名则:brcc32 xxx.rc –fo xxx.dll.

资源引用方法有静态与动态两种,静态引用就是将资源文件包含到源码中编译到EXE中去;动态引用则是把资源文件当成DLL动态装载。静态引用资源文件在Delphi中是最简单不过了,只要在工程文件中加入{$R xxx.res}编译指令即可.

引用时,字符串只要LoadStr(Index)即可,而其它资源用TResourceStream读取,只不过资源句柄就是程序本身,直接用hInstance就可以了

ReallocMem:重新分配由GetMem分配的内存块大小.

 

Application.ShowMainForm := False;让应用程序不显示窗体

当使用DrawText时,如果要使文字在垂直方向对齐,需要uFormat同时增加DT_VCENTER or DT_SINGLELINE,使用其中某一个无效果.注:DT_BOTTOM和DT_SINGLELINE也要一起使用.

CreateWindowEx是用来扩展CreateWindow所不具有的窗口风格的.

 

StringOfChar:返回字符重复N次的字符串

S := StringOfChar('A', 10);

sets S to the string 'AAAAAAAAAA'.

 

这玩意叫什么?求解答?:

FSortedComponents.SortList(
  function(Item1, Item2: Pointer): Integer
  begin
    Result := CompareText(TComponent(Item1).Name, TComponent(Item2).Name);
  end);

 

function CompareText(const S1, S2: string): Integer;//比较字符串,如果S1等于S2,返回0,如果S1>S2返回一个大于0的整数,如果S1<S2,返回一个小于0的整数.

Delphi2009后:Exit(‘abc’)等同于Result := ‘abc’;Exit;

Delphi总是先构造派生的类,仅当派生类调用了继承的构造器时才去构造基类。在C++中次序相反,从祖先类开始构建,最后才是派生的类。因而,假如有类C继承于B,而B继承于A,那么Delphi先是构建C,然后是B最后是A.C++先构建A,然后B,最后C。

posted on 2011-11-28 15:36  easy33  阅读(463)  评论(0编辑  收藏  举报

导航