我爱builder

C++Builder 程序员博客

OptionEh 里的AutoSortMarking = true;
SortLocal = true;
所有列 Column->TitleButton = true;
在DBGridEhTitleClick(TColumnEh *Column)事件里
AnsiString IFieldName;
if(Column->FieldName =="" )return;
IFieldName = Column->FieldName;

if(DBGridEh->DataSource->DataSet->FieldByName(IFieldName)->IsBlob((TMetaClass *)this))
return ;
IFieldKind = DBGridEh->DataSource->DataSet->FieldByName(IFieldName)->FieldKind;
switch(IFieldKind)
{
case fkLookup:
IFieldName =DBGridEh->DataSource->DataSet->FieldByName(IFieldName)->KeyFields;
break;
case fkData:
break;
default:
  return;
}

try
{
if(!qryData->Eof)
{
{
if(qryData->Sort == IFieldName+" ASC")
{
qryData->Sort=IFieldName+" DESC";
}
else
{
qryData->Sort=IFieldName+" ASC";
}
}
}
  }
  catch(…)
  {}
可以实现双击排序,但是标题上的图标在单击时候就更改了,有什么办法能屏蔽单击事件,只有在双击时才改变吗

这样是可以的,但是客户那边希望做成双击才进行排序,单击排序太容易误点了.

恩,这个倒是个好方法,试下先.已经解决问题了。TDBGridEh 在它的DBGridEhTitleClick()事件里先判断是否需要进行排序
这里要过滤到fkLookup,它不能进行排序
要进行排序,qryData 是TDBGridEh 的DataSet

if(qryData->Sort == IFieldName+" ASC")
{
  qryData->Sort=IFieldName+" DESC";
  Column->Title->SortMarker = smDownEh;
}
else
{
qryData->Sort=IFieldName+" ASC";
Column->Title->SortMarker = smUpEh;
}

  • Filed under: C++ Builder
  • pc端通过界面控制温度,通过在输入框中输入一定的值,然后当温度超过一定的值时就会自动报警,
    (PC通过串口和协调器相连接,协调器通过无线网络接受传感器传来的值)请问怎么实现?具体实现代码是什么?

    希望各位大侠相助,本人菜鸟一个,昨天到今天查资料也没搞定。这具体代码也太难了吧?协调器里有什么东西不知道,无线网络用什么协议不知道。定時去收取數據 把收到的數據拿來對比就行了<
    <
    <
    看不懂,帮顶!取了数据就判断是不是超过范围!!

    不知道你的软件和PLC连接上没有??没有的话可以参考!!
    以三菱fx系统为例,找到那条连接电脑编程线,rs422转rs232的,接电脑上!!
    了解plc的驱动指令!!
    例如
    假如plc里把数据存储到数据寄存器D21,
    用c++builder串口通讯往发送读取数据寄存器D21的指令,
    你就可以把plc返回的数据显示出来!!

    我这里有个API串口程序http://download.csdn.net/source/1633176,可以直接往PLC里面发送数据!!

  • Filed under: C++ Builder
  • 自己完成ftp客户端的实现,怎么显示远程ftp站点的指定目录下的所有文件??
    我发送 LIST
    的时候发现数据显示不全,我本地缓冲区已经开的很大了,最大到64K了。发现未能显示完整,这是什么原因

    socket都recv()函数接收数据都返回零了,但是现实的数据不全,比如说下面是我读完整的数据,

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (347).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (348).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (349).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (350).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (360).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (369).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (370).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (371).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (372).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (373).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (374).asp

     -rw-rw-rw- 1 user group 11255 Jun 17 2009 34 (375).asp

     -rw-rw-rw- 1 user
    这是什么原因呢? 一般的好的ftp客户端软件 不论远程文件夹下面有多少文件都能显示全,我看他们发送的也是 LIST 呀,这就奇怪了。。ftp
    CB目录目录下的例子
    Examplefastnetftp<
    <
    void TFtp::RemoteFileList(String path)
    {
     WIN32_FIND_DATA F;
     HINTERNET Enum;
     String FileName;

     Enum = FtpFindFirstFile(ftp,(path+"/*.*").c_str(),&F,0,0);
     bool end=!Enum;
     while(!end)
      {
      FileName= F.cFileName;
      if(F.dwFileAttributes==faDirectory)
      ShowMessage(FileName+" 目录");
      else
      ShowMessage(FileName+" 文件");
      end=!InternetFindNextFile(Enum, &F);
      }
    }

    现在都用TidFtp了<
    <
    问题终于得到解决啦,哎,马上结贴

  • Filed under: C++ Builder
  • 要求:
    1.可以判断FIFO里面数据长度
    2.可以向FIFO加入多个字节数据
    3.可以从FIFO取出多个数据,
    4.可以查询FIFO多个数据(不取出来)

    怎么实现?BCB好像是有个链表类的,如果不能用,那么就自己实现一个链表
    按先进先出操作即可STL里面有queue,队列的操作应该比较全了吧?操 作 功 能 
    empty() 如果队列为空 则返回 true 否则返回 false 
    size() 返回队列中元素的个数 
    pop() 删除 但不返回队首元素 在 priority_queue 中 队首元素代表优先级最
    高的元素 
    front() 返回 但不删除队首元素 它只能应用在一般队列上 
    back() 返回 但不删除队尾元素 它只能应用在一般队列上 
    top() 返回 但不删除 priority_queue 的优先级最高的元素 只能应用在
    priority_queue 上 
    push(item) 在队尾放入一个新元素 对于 priority_queue 将根据优先级排序 《C++ Primer 中文第3版》 P271不管他几字节、、我只认是否在官网上下的?可以定义个数组来实现队列功能

  • Filed under: C++ Builder
  • 要求:
    1.可以判断FIFO里面数据长度
    2.可以向FIFO加入多个字节数据
    3.可以从FIFO取出多个数据,
    4.可以查询FIFO多个数据(不取出来)

    怎么实现?BCB好像是有个链表类的,如果不能用,那么就自己实现一个链表
    按先进先出操作即可STL里面有queue,队列的操作应该比较全了吧?操 作 功 能 
    empty() 如果队列为空 则返回 true 否则返回 false 
    size() 返回队列中元素的个数 
    pop() 删除 但不返回队首元素 在 priority_queue 中 队首元素代表优先级最
    高的元素 
    front() 返回 但不删除队首元素 它只能应用在一般队列上 
    back() 返回 但不删除队尾元素 它只能应用在一般队列上 
    top() 返回 但不删除 priority_queue 的优先级最高的元素 只能应用在
    priority_queue 上 
    push(item) 在队尾放入一个新元素 对于 priority_queue 将根据优先级排序 《C++ Primer 中文第3版》 P271不管他几字节、、我只认是否在官网上下的?可以定义个数组来实现队列功能

  • Filed under: C++ Builder
  • 软件A 通过串口检测是否连接硬件,通过串口发送0xaa,反回0×55.来检测。
    如果无硬件软体无法运行(当然使用中还需要通过串口通讯)。

    现在我没有软件A的硬件,所以写一个软件B,软件B可以虚拟一个串口出来,然后设置软件A使用这个虚拟的串口,软件A通过虚拟的串口通讯,实际数据是发送到软件B,软件B通过接收的数据(软件A通过虚拟串口发送的),返回不同的数据,虚拟出这个硬件出来,使软件A可以正常运行。

    现在的问题是,怎么实现软件B的虚拟串口。。。
    自己写一个虚拟串口有一定的难度,你可参考
    http://bbs.driverdevelop.com/htm_data/11/0404/65804.html
    网上有很多虚拟串口软件,如SerialNull,不知能否符合你的要求?
    好久不见keiy老大。好久不见keiy老大。
    观摩观摩下。。。自己顶一下。。用现成的虚拟串口软件吧<
    似乎传说中的老大都出现了,趁机问个问题再重复一边 上网 找个软件下载
    VSPD XP 5 关键字
    下了就能用不行了 发个邮件给我 
    我发给你

    34727498@qq.com用现成的虚拟串口软件 是不行的..

    比如虚拟一个串口COM3

    软件A 通过COM3 发送数据,这个数据能到我的软件B中来吗? 软件B能通过COM3返回数据给软件A吗?http://www.powerip.net/product_VSPM.htm
    VSPM虚拟串口软件Ver2.76,它将串口信号转换为网络数据,配合TCP/UDP测试工具就可以满足你的要求

    运行在Client模式,会自动建立几个虚拟串口,修改远程Server地址及端口。

    这个软件是我见过的最好的了,而且免费的。

    再推荐一个工具AccessPort,最好的串口数据监听软件。<
    DDK 开发虚拟串口.
    但有虚拟串口未必能解决楼主的问题,软件A 通过串口检测是否连接硬件,可能要求硬件回相应信息的.
    楼主最好还是找到连接的硬件,才能解决问题."软件A 通过串口检测是否连接硬件,通过串口发送0xaa,反回0×55.来检测"
    如果能确定返回0×55,两个串口对接,用一个串口调试程序就可发送返回0×55,不用虚拟串口.
    找一台有两个串口的电脑,或两台个有一个串口的电脑,两个串口互相能发送接收.<
    虽然这个有点麻烦,但还是再顶顶…<
    学习再顶顶看看.书店有本 龚建伟 写串口书里很详细…看来是没什么希望了…不会呀,学习!!!真的没有了吗?买个串口卡有2口的,然后用串口线将2个串口连接起来,这样你就可以写软件B了,如果实时性没有要求,根本就不用写,用个串口调试软件接收就可以了,然后该回应什么自己手动输入。

    一般新装的串口卡串口是com3,com4,那么A用串口3,B用串口4,按照我说的就可以试验。串口卡不贵,一块也就100块左右吧。我的电脑装机是不带串口的,都靠她了这么个好帖居然这么长时间没有注意。

    顶顶

    <

    <
    我也一直在进行串口产品,和基于串口通信的系统开发!要用的反馈都是才有双串口通信活着双机手动检验!今天才知道还有虚拟一说,确实能节省很大人力啊!希望传奇大哥们这个问题多指点啊!……这个问题..你可以先用虚拟串口的工具虚拟出两个串口..比如com1和com2 接着让它们互联..然后..你的A软件..打开com1 b软件.打开com2 他们就能互通了~

  • Filed under: C++ Builder
  • 如何让主窗体的关闭按钮实现最小化的效果?谢谢。在FormCloseQuery事件中写最小化窗口代码。

  • Filed under: C++ Builder
  • 请问ListView控件中使用CheckBox如何实现只能单选的功能?感谢!选中一个的时候判断,把其它的去掉。是循环判断么?从ListView1-> Items-> Items[0]到ListView1-> Items-> Items[i]?
    可是这样的话总是先检查上面的,比如先选了第3行,现在想改选第2行,这样循环最后结果还是第3行的checkbox被选中阿。555选把你要选中的勾起,循环去掉其他的。可是怎么获得勾选的item序号呢?只会循环检查item-> checked是否为真,但是这样循环下来总是检查到第一个被选中的item。你在循环的时候想选哪个都可以啊
    选的为真,其他的为假。。。
    你还想怎么实现?是我表达不清.
    我的意思是比如有3行,原本选中了第二行的checkbox,现在勾选第三行的时候希望去掉第二行,但是我不知道怎么获得当前选中的checkbox。用循环的话,在listview的onclick事件中:

    for(   int   i   =   0;   i   <   3;   i++)
    {
            //从头开始检查是否有一行的checkbox被勾选,若有则取消其它行的checkbox
            if(ListView1-> Items-> Item[i]-> Checked)
            {
                      for(int   j   =   0;   j   <   3;   j++)
                      {
                                if(j   !=   i)
                                        ListView1-> Items-> Item[j]-> Checked   =   false;
                      }
            }
    }

    T.T   只会这样写,如果先选了第二行再想改选第三行就不能选了,请问该怎么写呢?ListView1-> Selected   应该是你点击的ITEM,先确定如何处理,然后把所有的都处理了再把这个处理一下。Selected只响应item的caption点击,如果只是在checkbox里打勾好像ListView1-> Selected无法得到哪一行被勾选阿。int   c;     //c+1为你要选中的行数
    for(int   i=0;i <ListView1-> Items-> Count;i++)
    {
        ListView1-> Items-> Item[i]-> Checked=false;
    }
    ListView1-> Items-> Item[c]-> Checked=true;谢谢!为什么需要循环,太浪费时间了吧,用一个变量保存选中的CHECK,选择新的行的时候,把这个保存起来的行设为FALSE,就可以了,

  • Filed under: C++ Builder
  • 如题..自己继承该控件,然后编写相应功能到底是要拖动多个呢?
    还是要排序什么的?
    没有看懂比如原来是1.2.3.4.5.6.7.8.9.10

    如果拖动5.6.7移动到2的位置,顺序就变成1.2.5.6.7.3.4.8.9.10

    如果拖动5.7.9移动到2的位置,顺序就变成1.2.5.7.9.3.4.6.8.10

    先delete(),再insert()

    用4楼方法也行
    http://topic.csdn.net/t/20040817/10/3281700.html
    也行,方法多种 自己选择

  • Filed under: C++ Builder
  • 我想要存储持续传输进来的数据流(每两次数据流间有一定时间间隔),请问SaveDialog能实现持续自动存储文件(每次数据流希存储为一个文件)吗?自动保存数据用SaveDialog干嘛?
    你直接用数据流的SaveToFile()函数即可SaveDialog仅仅是提供一个选择文件的功能而已,说白了就是只提供一个文件名。至于保存什么内容,以及写入文件等等,需要你自己来操作。那请问用SaveToFile()怎样怎么实现连续存储多个文件(要求能自动生成文件名)?“我想要存储持续传输进来的数据流(每两次数据流间有一定时间间隔)”
    你不是收到数据流了吗?
    有了数据流直接保存就可以了
    <
    <
    <

    谢谢大哥,非常感谢!

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档