1.关于定时器TTimer
首先定时器的属性Enable有true和false,默认的是true,代表只要你不主动设置为false,程序一启动,定时器就自动执行
而且一般来说,如果不手动的去关掉定时器,它会以设置好的时间间隔,在整个程序期间保持运作。
时间间隔Interval ,1000代表1秒
2.关于类似opendialog的系统函数
由于函数的调用会有返回值,所以不建议直接调用,一般要判断返回值是否正确,即if(???)的方式去掉用
3.关于用千分位将大数字隔开表示
在处理数字的时候,可以先转换为相应的字符串,利用字符串函数更容易操作
4.关于隐藏Edit框的输入,即输入密码时显示*号
更改passwordchar属性
5.关于listview以及imagelist使用的一点总结
下面的例子是显示:图片+字符串 作为一个Item
a,先就imagelist控件而言,双击控件或者右键选择编辑,设置图片列表,底标从0开始
b,然后在listview控件的属性栏里,smallimages绑定imagelist
c,调用方式为item->imageIndex = index,index的值和imagelist设置的图片的底标相对应
7.获取当前窗口句柄
定义变量,HWND m_hWnd; this->m_hWnd;
8.退出当前程序
Application->Terminate();
9.关于Form Create和Form的构造函数
TForm有一个oldCreateOrder属性,如果为false,则构造先于Create,为true则反之. 联机帮助则干脆建议把初始工作全部放在构造里
10.关于在构造函数内做一些控件的操作,特例如下
for(int i =0;i<cbox1.size();i++)
{
AnsiString tmp = cbox1.at(i);
ComboBox1->Items->Add(tmp);
}
该语句无法正常运行,且干扰到其它语句执行,这里具体是干扰到ShowMessage(),不明其理,放在别处实现相应操作
11.关于DirectoryListBox的使用问题
在SelectFolder等封装好的函数不能满足设计需要的时候,考虑用软体提供的相应控件自定义需要的组件
按主次顺序的三个组件:DriveComboBox,DirectoryListBox,FileListBox
DriveComboBox的DirList属性绑定给DirectoryListBox,DirectoryListBox的FileList属性绑定给FileListBox
DirectoryListBox的DirLab属性,会显示当前所选的文件夹的路径,但是字符过长是会省略显示
所以用如下代码,手动获取所选文件夹路径
AnsiString tmp = DirectoryListBox1->GetItemPath(DirectoryListBox1->ItemIndex);
FileList的FileEdit属性会显示当前所选文件的名字,暂时未用
12.关于获取当前选项的一种方法
AnsiString tmp = DirectoryListBox1->GetItemPath(DirectoryListBox1->ItemIndex);
13.关于遍历Listview控件里面所有的项
int count = ListView1->Items->Count;//统计项数
for(int i=0;i<count;i++)
{
TListItem *tItem = ListView1->Items->Item[i]; //按行遍历,拿到tItem可以按需求处理
AnsiString tmp = tItem->Caption;//比如获取头列信息
}
14.关于DriveComboBox控件的刷新
当驱动器数目动态变化时,实时捕捉当前驱动器数目,刷新DriveComboBox控件,刷新消息我这里是手动设置按钮
DriveComboBox1->TextCase = DriveComboBox1->TextCase;
15.关于Cannot focus a disabled or invisible window
这个东西真的整的人难受,当是为了我的头发,记录一下这个的处理办法
我的情况,listView(我的例子)控件拿到了焦点,然后对Listview做了显示上的变化,具体就是Visable,因为涉及到画面迁移。
跳转回来就这样了,百科的回答也表示说,在窗口控件拿到焦点后,再执行窗口的显示命令造成的,具体原因就当是bug吧
我这里尝试过很多办法,主要围绕去掉ListView的焦点,以及子控件的焦点等,没有成功,
蠢办法,更改ListView的位置信息,比如当前画面需要隐藏,把Top属性设置到程序窗口更下面,显示回来再调整为正常
16.关于修改弹框标题的方法
可以更改具体的每一个弹框的标题,修改MessageBox()的参数,这里记录的是更改整个程序的默认弹框标题
菜单-project->options->Application->Appearance->Title的内容改成你想要的