delphi 小知识(留着以后复习)

来源:互联网 发布:淘宝网中老年女上装 编辑:程序博客网 时间:2024/04/30 11:04

随手记下的一点小东西,留着以后忘了来看看。

1.

as是把某个类型对象转换成所需要的类型。
is是判断某对象是否是某类型。

遍历窗体上的控件

for i:=0 to form1.ComponentCount-1 do  begin    if form1.Components[i] is TcxCheckBox then      (form1.Components[i] as TcxCheckBox ).Checked := ReadSetting(for1.Components[i].Tag) ;  end;

遍历groupbox的控件

    for i:=0 to cxgrpbx1.ControlCount-1 do    begin      if cxgrpbx1.Controls[i] is TcxCheckBox then        (cxgrpbx1.Controls[i] as TcxCheckBox ).Checked := ReadSetting(cxgrpbx1.Controls[i].Tag) ;    end;

2.

in是集合操作,什么是集合呢?在线帮助上说:A set is a collection of values of the same ordinal type. 

所以,这里说明了,集合必须是"ordinal"类型, 也就是序数类型。
整形是的,浮点型就不是
枚举是的,因为内部存储其实就是整形。
布尔型是的,
字符型也是的,字串就不行,
其它对象类型也是的。

其实这样的情况在Delphi中有很多,case语句也有同样的规定:
再深入些,为什么Delphi要做到这样呢?

因为这些值是要在编绎期设定的---这个工作由编绎器优化,序数类型就可以在这个时期做了。而对象却不行(必须在运行期才能做)


3. 检测文件夹

if(directoryExists('e:\123')=false) then   //如果文件夹不存在

    forceDirectories('e:\123')   //创建名为123的文件夹

 else

    showmessage('文件已存在!');


4.实现窗口淡出效果。

void CAboutDlg::OnClose()
{
//实现淡出效果。
AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_BLEND); CDialog::OnClose();
}

5.诡异的OnCloseUp事件

一般情况下,OnCloseUp事件发生时,combobox里面的内容是下拉列表改变前的内容,但是今天突然发现,这个跟Style有关,当Style := csDropDown时是成立的,但是如果是csDropDownList,OnCloseUp和OnChange是一样的,在该事件里获取combobox.Text里获得的内容都是改变后的内容了。

6.

delphi中判断popupmenu的弹出来源....
showmessage(pm1.PopUpComponent.name);


7. 直接打印cxgrid
拉一个TdxComponentPrinter dxComponentPrinter1放到form中,双击dxComponentPrinter1
在其中添一个ReportLink dxComponentPrinter1Link1,

8.ado数据精度不能大于4的解决方法

将adoquery1的enableBCD设置为false,BCD字段类型使用了货币类型,这种类型是小数点后是4位数

9. 64位win7添加ODBC驱动

   解决办法:运行C:/Windows/SysWOW64下odbcad32.exe就可以正常添加各种数据源的驱动程序了

原创粉丝点击