随手记下的一点小东西,留着以后忘了来看看。
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.实现窗口淡出效果。
5.诡异的OnCloseUp事件
一般情况下,OnCloseUp事件发生时,combobox里面的内容是下拉列表改变前的内容,但是今天突然发现,这个跟Style有关,当Style := csDropDown时是成立的,但是如果是csDropDownList,OnCloseUp和OnChange是一样的,在该事件里获取combobox.Text里获得的内容都是改变后的内容了。
6.
delphi中判断popupmenu的弹出来源....
showmessage(pm1.PopUpComponent.name);
在其中添一个ReportLink dxComponentPrinter1Link1,
8.ado数据精度不能大于4的解决方法
将adoquery1的enableBCD设置为false,BCD字段类型使用了货币类型,这种类型是小数点后是4位数
9. 64位win7添加ODBC驱动
解决办法:运行C:/Windows/SysWOW64下odbcad32.exe就可以正常添加各种数据源的驱动程序了