Builder的一些编码杂记

本文档记录了Builder编程中的一些实用技巧和注意事项,包括TTimer的使用、OpenDialog系统函数的调用、数字格式化、隐藏Edit框输入、ListView与ImageList的结合、窗口句柄获取、程序退出、控件操作、DirectoryListBox使用、遍历ListView项、DriveComboBox刷新、处理窗口可见性问题以及修改弹框标题的方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的内容改成你想要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值