C++Builder 程序员博客
有点类似于qq面板上的那种,按钮可以上下滑动,点击按钮之后和其下边的按钮之间会有一片空白区域,在这个区域可以使用按钮,文本,标签等等控件,这个空白区域就相当于一个面板,作为控件的容器
有没有现成的控件,如果没有,应该如何实现?希望实现能够方便使用的,不要说画个按钮再画个面板,这样会很麻烦的吧!
bcb本身没有这样的控件。
可以找一些第三方的,比如outlookbar.
用pagecontrl吧。
这就是用pagecontrl实现的效果,当然加上皮肤后,效果会更好。值得注意的是一个重要的属性。multiline=true
26 Oct
如题,有一个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即可发以后的东西
unsigned char buf[]={0xFF,0xDD,0×00,0×11,0×22};
SendBuffer(buf,5);
unsigned char这个呢
22 Oct
如,有四个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"));
玩儿魔兽老是随机打随机,老出那几个英雄,打腻了,就编了个随机种族,但在打之前就知道对方是什么族,有利于判断出什么兵种,随机英雄,这样更有看点.昨天编的是用笨办法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;
}
4 Oct
在网页图片上点右键,选择我安装的一个菜单项,即可得到此图片在本机零时目录中的位置
请问如何实现,bcb能够实现吗?我只见过vc实现的这种例子………
在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任务栏按钮 ”一文
thanks,节后再验证,但还是先给分
大鸟老鸟都进来帮帮菜鸟我吧
FileListBox1只是显示文件. 具体的操作还是要写代码.
用ADO可以连接到EXCEL文件. 在网上搜下一大把.
我的目的是知识想把EXCEL的数据导到DBGrid中去,有没有其他方式实现
FileListBox只能得到文件名路径列表。
你可以写个读取Excel文件到DBGrid的函数(ccrun好像有的(OLE),另外用ADO把Excel当作数据源也很方便的)
然后调用这个通用的
循环读就可以了!
21 Aug
望高手说的详细点,在下只是菜鸟一个。
请恕在下愚昧,在下不懂利用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
能不能说的详细点
能不能说的详细点
也可以把Excel当作数据源。然后用ADO方式连接Excel数据源,将数据读取到Query或者Table里面
然后把数据插入到你要插入的数据库中!
7 Aug
公司给了道笔试题,是这么说的:
“请写一个小程序,能够检查出所有本机当前打开的所有文件的信息。”
我目前正在尝试使用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
);
学习
请问:如何通过控制键盘上的方向键让界面上多个Edit获得焦点?现在只能用Tab键控制,但上下移动焦点不好实现?多谢!!!!!!!
参考这个http://topic.csdn.net/u/20080614/11/45fa61c1-10e3-4799-8506-51e18fabe0dd.html
我记得前不久有这么个贴子的,还比你复杂一点点你自己找一下。
22 Jul
如何动态获取电子磅数据 要思路??
主要是没有说明书的情况下 咋办??
有没有什么通用的东西
没说明书就不好办了,用串口调试工具先连接上了,挨个更换波特率先试试吧,如果能读回数据来,就好办,一般情况下电子磅有主动发送和被动发送数据两种(要在电子磅的控制面板上调一下),设成主动发送模式就行了,然后电子磅就不停的向串口发回数据,我记的以前用过上海一家电子磅的,具体牌子忘了,他发回来的数据就是类似=123456790=123456790=123456790这样的序列,大意就是=是开始,后面的数字表示重量,而且还有精度等等,不同的厂家定义的不一样。建议你先看看电子磅的品牌,再上网搜索一下。一般官方网站都有说明书可以下载。
谢谢了 我先找找
手头上有个程序,用的是borland写的,有个TMGrid类,我现在想通过sendmessage取出TMGrid的行,列,应该怎么弄?
试过用lvm类的message,好像不行。
没有头文件啊。只有一个单独的程序。
文件大不大?不大传上来如何?
文件不大,但是需要连上设备,没有设备不能运行
我用OllyICE看了一下,好像是TStringGrid继承过来的。
0040E537 ¦. E8 D83E0400 call <jmp.&VCL50.Grids::TStringGrid::SetCells>
以前的代码找不到了. 只记得大概了.
先获得TMGrid的Handle, 然后通过发送 RM_GetObjectInstance 消息, 然后把转换了TStringGrid 直接读取行,列的值. 还用到了一个EnumProps.
当时是取DBGrid中的数据, D7,BCB6 写的程序肯定没有问题. 其它的未测试.
好像没那么简单,呵呵.