我爱builder

C++Builder 程序员博客

有点类似于qq面板上的那种,按钮可以上下滑动,点击按钮之后和其下边的按钮之间会有一片空白区域,在这个区域可以使用按钮,文本,标签等等控件,这个空白区域就相当于一个面板,作为控件的容器
有没有现成的控件,如果没有,应该如何实现?希望实现能够方便使用的,不要说画个按钮再画个面板,这样会很麻烦的吧!

bcb本身没有这样的控件。
可以找一些第三方的,比如outlookbar.

用pagecontrl吧。

这就是用pagecontrl实现的效果,当然加上皮肤后,效果会更好。值得注意的是一个重要的属性。multiline=true

  • Filed under: C++ Builder
  • 如题,有一个16进制的字符串(如:0xFF,0xDD,0×00,0×11,0×22),发送到0×00时,后面的就不发送了,不知什么原因,请帮忙了

    以字节方式发送 比如:unsigned char buf[]={0xFF,0xDD,0×00,0×11,0×22};
    SendBuffer(buf);

    不要以字符串方式,用二进方式

    用字符串的话,0×00即\0标志着字符串结束,它还怎么发以后的东西呢??、

    用字符串的话,0×00即\0标志着字符串结束,它还怎么发以后的东西呢??

    用字符串的话,发送同样用二进制发送api即可发以后的东西

    引用 4 楼 luoshupeng 的回复:
    用字符串的话,0×00即\0标志着字符串结束,它还怎么发以后的东西呢??、

    这个是正解

    unsigned char buf[]={0xFF,0xDD,0×00,0×11,0×22};
    SendBuffer(buf,5);

    unsigned char这个呢

  • Filed under: C++ Builder
  • 如,有四个combobox
    combobox1
    combobox2
    combobox3
    combobox4
    int i = random(4);

    if(i=0)
    {
    combobox->Items->AddStrings(comboxbox1->Items);
    }else if(i=1)
    {
    combobox->Items->AddStrings(comboxbox2->Items);

    能不能这样,(伪代码)
    TCompnent *myControl;
    AnsiString strComboBox = "combobox"+IntToStr(i+1);
    myControl->SetName("strComboBox ");
    combobox->Items->AddStrings((TComboBox *)myControl->Items);

    这段代码是放在一个button里面的,所以这个sender估计是用不上了

    for(int i = 0; i < this->ComponentCount; i++)
        {
            if(this->Components[i]->ClassType() == __classid(TComboBox))
            {
                TComboBox *p = (TComboBox *)(this->Components[i]);
              ShowMessage(p->Name);
            }
        }

    其实这种方法在罗斌那本书上也讲过,控件遍历,他用的是TControl,
    看来是不能直接用控件名控制了.

    (TCombobox *)(this->FindComponent("comboxbox1"));

    引用 5 楼 Ring_Pt 的回复:
    (TCombobox *)(this->FindComponent("comboxbox1"));

    高人,就是这个

    玩儿魔兽老是随机打随机,老出那几个英雄,打腻了,就编了个随机种族,但在打之前就知道对方是什么族,有利于判断出什么兵种,随机英雄,这样更有看点.昨天编的是用笨办法if else一大堆,今天把这个用名字访问控件的方法贴出来,供以后人学习.
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Button1->Enabled = false;
        for(int i = 0; i < this->ComponentCount; i++)
        {
            if(this->Components[i]->ClassType() == __classid(TEdit))
            {
                TEdit *p = (TEdit *)(this->Components[i]);
                p->Text = "";
            }
        }

        randomize();
        int i = random(4);
        TEdit *MyEdit = new TEdit(this);
        MyEdit = (TEdit *)(this->FindComponent("Edit"+IntToStr(i+1)));
        MyEdit->Text = "I'm Here";

        Button1->Enabled = true;
    }

  • Filed under: C++ Builder
  • 在网页图片上点右键,选择我安装的一个菜单项,即可得到此图片在本机零时目录中的位置

    请问如何实现,bcb能够实现吗?我只见过vc实现的这种例子………

    引用 1 楼 jiangsheng 的回复:
    都是C++,有什么区别?

    在COM/DCOM支持方面区别很大……….

    类库支持是不同,不过脱离类库自己写COM调用也不是很难

    建立COM DLL,这是不用说了

    建立一个过程或函数
    在里面调用GetUrlCacheEntryInfoA API可获取对应URL的缓存信息

    建立一个GetUrl.htm,类似 网际快车中的GetUrl.htm,
    HTM的内容例如
        <script language="VBScript">
        Set objNetSamp=CreateObject("IEContextMenu.IEMenu1")//创建COM DLL对象
        userURL=external.menuArguments.location.href//获取URL
        Call objNetSamp.AddUrl(userURL) //AddUrl为你DLL中的过程或函数
        </script>

    Htm中创建你的COM DLL对象,然后获取当前右键下的URL信息,在HTM中传递该URL到DLL中这个过程或函数

    可查阅“如何在IE右键菜单中添加菜单项以及如何添加IE任务栏按钮 ”一文

    引用 4 楼 laihongbo524 的回复:
    建立COM DLL,这是不用说了

    建立一个过程或函数
    在里面调用GetUrlCacheEntryInfoA API可获取对应URL的缓存信息

    建立一个GetUrl.htm,类似 网际快车中的GetUrl.htm,
    HTM的内容例如
    <script language="VBScript">
    Set objNetSamp=CreateObject("IEContextMenu.IEMenu1")//创建COM DLL对象
    userURL=external.menuArguments.location.href//获取URL
    Call objNetSamp.AddUrl(userURL) //AddUrl为你DLL中的过程或函数
    </sc…

    thanks,节后再验证,但还是先给分

  • Filed under: C++ Builder
  • 大鸟老鸟都进来帮帮菜鸟我吧

    FileListBox1只是显示文件. 具体的操作还是要写代码.

    用ADO可以连接到EXCEL文件. 在网上搜下一大把.

    我的目的是知识想把EXCEL的数据导到DBGrid中去,有没有其他方式实现

    FileListBox只能得到文件名路径列表。

    你可以写个读取Excel文件到DBGrid的函数(ccrun好像有的(OLE),另外用ADO把Excel当作数据源也很方便的)

    然后调用这个通用的

    循环读就可以了!

  • Filed under: C++ Builder
  • 望高手说的详细点,在下只是菜鸟一个。

    请恕在下愚昧,在下不懂利用OLE,因为在下只是初学者,能不能说的详细点。如果觉得分数不够可以加的……

    在C++ Builder中用Ole控制Excel表请见http://www.qqread.com/bcb/e312774500.html

    当然没有任何问题的。

    如果是在BCB下,用Office Server控件就可以读取Excel了。

    有多个方法:
    1.用ole,如楼上所说
    2.用XLSReadWriteII控件
    3.在程序中直接用sql,参考:
    http://www.delphibbs.com/keylife/iblog_show.asp?xid=24640
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966

    能不能说的详细点

    引用 3 楼 songhtao 的回复:
    在C++ Builder中用Ole控制Excel表请见http://www.qqread.com/bcb/e312774500.html

    能不能说的详细点

    引用 4 楼 TR@SOE 的回复:
    当然没有任何问题的。

    如果是在BCB下,用Office Server控件就可以读取Excel了。

    也可以把Excel当作数据源。然后用ADO方式连接Excel数据源,将数据读取到Query或者Table里面

    然后把数据插入到你要插入的数据库中!

  • Filed under: C++ Builder
  • 公司给了道笔试题,是这么说的:
    “请写一个小程序,能够检查出所有本机当前打开的所有文件的信息。”

    我目前正在尝试使用ZwQuerySystemInformation方法获得所有句柄,然后从中筛选出文件句柄;
    然而我得到文件句柄之后,却不知道如何通过句柄访问句柄所指向的文件对象了!
    我的问题就在这里,不知道有没有API能够达到“通过句柄访问句柄所指向的文件对象”,我要读取出文件对象的一些基本信息,至少要知道目录和文件名。
    谢谢!

    学习一下

    感谢一楼的回答,可是我查了你给的API,是VISTA才能用的,我想知道有没有XP能用的呢?

    typedef struct _BY_HANDLE_FILE_INFORMATION {
      DWORD dwFileAttributes;
      FILETIME ftCreationTime;
      FILETIME ftLastAccessTime;
      FILETIME ftLastWriteTime;
      DWORD dwVolumeSerialNumber;
      DWORD nFileSizeHigh;
      DWORD nFileSizeLow;
      DWORD nNumberOfLinks;
      DWORD nFileIndexHigh;
      DWORD nFileIndexLow;
    } BY_HANDLE_FILE_INFORMATION,
      *PBY_HANDLE_FILE_INFORMATION;

    BOOL WINAPI GetFileInformationByHandle(
      __in  HANDLE hFile,
      __out  LPBY_HANDLE_FILE_INFORMATION lpFileInformation
    );

    学习

  • Filed under: C++ Builder
  • 请问:如何通过控制键盘上的方向键让界面上多个Edit获得焦点?现在只能用Tab键控制,但上下移动焦点不好实现?多谢!!!!!!!

    参考这个http://topic.csdn.net/u/20080614/11/45fa61c1-10e3-4799-8506-51e18fabe0dd.html

    我记得前不久有这么个贴子的,还比你复杂一点点你自己找一下。

    引用 1 楼 loveshell 的回复:
    在KEYDOWN里面判断按的哪个方向键然后再改变焦点

  • Filed under: C++ Builder
  • 如何动态获取电子磅数据 要思路??

    主要是没有说明书的情况下 咋办??

    有没有什么通用的东西

    没说明书就不好办了,用串口调试工具先连接上了,挨个更换波特率先试试吧,如果能读回数据来,就好办,一般情况下电子磅有主动发送和被动发送数据两种(要在电子磅的控制面板上调一下),设成主动发送模式就行了,然后电子磅就不停的向串口发回数据,我记的以前用过上海一家电子磅的,具体牌子忘了,他发回来的数据就是类似=123456790=123456790=123456790这样的序列,大意就是=是开始,后面的数字表示重量,而且还有精度等等,不同的厂家定义的不一样。建议你先看看电子磅的品牌,再上网搜索一下。一般官方网站都有说明书可以下载。

    谢谢了 我先找找

  • Filed under: C++ Builder
  • 手头上有个程序,用的是borland写的,有个TMGrid类,我现在想通过sendmessage取出TMGrid的行,列,应该怎么弄?

    试过用lvm类的message,好像不行。

    没有头文件啊。只有一个单独的程序。

    文件大不大?不大传上来如何?

    文件不大,但是需要连上设备,没有设备不能运行

    我用OllyICE看了一下,好像是TStringGrid继承过来的。

    0040E537  &brvbar.  E8 D83E0400  call    <jmp.&VCL50.Grids::TStringGrid::SetCells>

    :(
    以前的代码找不到了. 只记得大概了.

    先获得TMGrid的Handle, 然后通过发送 RM_GetObjectInstance 消息, 然后把转换了TStringGrid 直接读取行,列的值. 还用到了一个EnumProps.

    当时是取DBGrid中的数据, D7,BCB6 写的程序肯定没有问题. 其它的未测试.

    好像没那么简单,呵呵.

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档