C++Builder 程序员博客
3 Sep
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;
}
1 Sep
想用cb6中的web services控件读取网页的源文件(http://money.finance.sina.com.cn/quotes_service/view/vMS_tradedetail.php?symbol=sh600980&date=2010-08-31&page=1),但是只需要源文件中的一部分,然后将指定的数据导入到数据库中。首先这些个控件俺不会用,再就是我想写2个类,一个是应付不同的网页进行读取,另一个是对应相应的数据库将数据导入。
请高手指点!
菜鸟来也,职业顶帖
这个里面的数据是动态生成的,估计你读不出来
29 Aug
void __fastcall TForm1::DrawGrid()
{
for(int i=0;i<19;i++)
for(int j=0;j<19;j++)
DrawCell(i,j,Cell[i][j],0);
}
void __fastcall TForm1::DrawCell(int i,int j,int cell,int t)
{
TRect MyRect;
MyRect=DrawGrid1->CellRect(j,i);
if(cell==0)
{
DrawGrid1->Canvas->Draw(MyRect.Left,MyRect.Top,a);
}
else if(cell==1)
{
DrawGrid1->Canvas->Draw(MyRect.Left,MyRect.Top,b);
}
else if(cell==2)
DrawGrid1->Canvas->Draw(MyRect.Left,MyRect.Top,c);
}a,b,c都是bmp
初始化for(int i=0;i<19;i++)
for(int j=0;j<19;j++)
Cell[i][j]=0;
Cell[9][9]=1;
在调用DrawGrid,可是不能显示图片
没看到你调用DrawGrid函数地方啊。
在程序开始的时候就调用了,在FormCreate的时候就调用了,就是不能在DrawGrid显示图片,不知怎么回事
<
Image1->Canvas->Draw(MyRect.Left,MyRect.Top,c);
用Image就能载入图片,不知道DrawGrid咋就不能…
在FormCreate中调用是没有意义的。窗口一刷新就没有了。
将你的代码改一改,然后在DrawGrid的OnDrawCell事件中调用。
<
<
Timage自己处理了刷新,DrawGrid需要在刷新事件处理,你试着在Form的OnPait事件里写上那段代码看看。
27 Aug
JVCL是个不错的控件包,它是MPL开源协议。
请问能够在商业软件中使用JVCL控件包中的组件吗?有什么限制?
没有限制的 你直接用吧
没问题的
[编辑本段]MPL许可证
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处: ◆ MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。 ◆ MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。 ◆ 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。 ◆ 对源代码的定义 而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。” ◆ MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。
如果修改了JVCL的源码(比如增加了一个自己的函数),那么需要做些什么?
要向JVCL汇报吗?
<
随便用吧,别想那么多,那是你老板考虑的,楼主如果是老板,那就更不用考虑了,没人会找你的
<
在天朝无需考虑那么多。直接用在你的项目中就可以了。
<
那你需要在软件中注明使用了JVCL的组件。其他的参考2楼转贴的文章。
不过说实话,国内对版权意识很模糊的,好多知名的大公司(不点名了)直接拿了开源的代码,修改了版权就当商业软件了,被上了黑名单还是不知悔改的。洋人也拿他们没办法。
BCB6应该装哪个版本合适点,我看3.38要多装一个软件,感觉不舒服
21 Aug
JVCL是个不错的控件包,它是MPL开源协议。
请问能够在商业软件中使用JVCL控件包中的组件吗?有什么限制?
没有限制的 你直接用吧
没问题的
[编辑本段]MPL许可证
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处: ◆ MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。 ◆ MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。 ◆ 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。 ◆ 对源代码的定义 而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。” ◆ MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。
如果修改了JVCL的源码(比如增加了一个自己的函数),那么需要做些什么?
要向JVCL汇报吗?
<
随便用吧,别想那么多,那是你老板考虑的,楼主如果是老板,那就更不用考虑了,没人会找你的
<
在天朝无需考虑那么多。直接用在你的项目中就可以了。
<
那你需要在软件中注明使用了JVCL的组件。其他的参考2楼转贴的文章。
不过说实话,国内对版权意识很模糊的,好多知名的大公司(不点名了)直接拿了开源的代码,修改了版权就当商业软件了,被上了黑名单还是不知悔改的。洋人也拿他们没办法。
BCB6应该装哪个版本合适点,我看3.38要多装一个软件,感觉不舒服
19 Aug
各位大虾,请教一个小问题。我得到频谱仪返回的包络数组,想在软件上将其画出来。我用Tchart控件的Series->addarray()函数画出来了,可是我想在得到第二组数组时,将其画出,并将第二个数组大于第一个数组的部分用另外的颜色画出来,可是Series->addarray(x,y)的Y不能是一个变量,怎么办啊??
没有用过这个,纯帮顶
没有看懂你的意思
来学习,没有用过TChart
<
“我想把这些点用另外的颜色画出来”
增加一条另外颜色的线就可以了,
Series[0]->addarray(x,y)
Series[1]->addarray(x,y)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a[100],b[100];
randomize();
for(int i=0;i<100;i++)
{
a[i]=random(100);
b[i]=random(100);
if((b[i]-a[i])>0)
{Series1->AddArray((b[i]-a[i]),i); }
}
Series2->AddArray(a,100);
}
就是类似这样一个过程,我产生两个有100个元素的随即数组a[i]和b[i],用Series2画数组a,用Series2画b大于a的部分,可是Series1->AddArray(const double *,const int),其第二个参数不能变量啊,有没有别的什么函数能实现呢??
AddArray第二个参数为什么不能变?
“Series1->AddArray((b[i]-a[i]),i)”
你这里i难道不是变量吗?
<
不错,谢谢楼上,我知道了!!结题
俺一般用:Series[0]->AddXY( x, y, "", clTeeColor );
19 Aug
在面板中找不到,需要另外安装吗?
FastNet页
我的BCB6没有FastNet页?怎样添加?
转【老妖】:
Component–>Install Packages–>看看列表中有没有NetMasters Fastnet Tools,如果有,将前面的对钩选中,如果没有,按“Add”键将$(BCB)indclnmf60.bpl添加进来就可以了。
http://www.ccrun.com/forum/forum_posts.asp?TID=2463
谢谢,问题解决,给分了。
结果是:没有找到dclnmf60.bpl,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题
还有别的方法吗?
23 Jul
1、在使用ShellTreeView控件时就算AutoRefresh属性设为True,但是在做文件的添加或删除时还是无法更新???
3、当运行时,点击DVD驱动器那一个结点时会死机???
2、在ShellTreeView中对文件重命名时若是重名不会有重命名错误提示,系统老是会报错,这要怎么编程啊???
这该死的控件一大堆的问题来解决啊?还望各位高手真情相助!!!
等待回复的第一天…
怎么都没人会吗??看来是真的很难啊!
这个控件的问题是很多的,没有办法
本来看看是什么问题?
但看了一下没有找打ShellTreeView 控件 
lz哪里找到的?
<
<
楼主你高人,不要耍我们了。
既然是example里的控件,就不是正式发行版的控件,有BUG或不完善是完全有可能的。
自己完善一下吧。
example里的例子仅是供我们学习参考的,并不在软件质量保证的范围之内。
BCB6和2009里的ShellListView和ShellTreeView控件BUG多的要命,
为了用这两个控件,我把代码从头过了N遍,修改了N个地方
但是在碰到AutoRefresh问题后,彻底崩溃,不知道怎么改才好了
只得自行改写TListView和TTreeView实现资源管理器功能
其实AutoRefresh这个功能用api很容易实现,不知道这俩Shell控件怎么搞出那么多BUG
如果只是写程序自己娱乐,用用无妨
如果写商业软件,还是自己从头写吧,千万别用这俩东西
<
哈哈,确实着两个控件,很多人是自己用api写的。
sorry,代码属于公司财产,不能公布
一个崭新的"准无满意结帖"的帖子诞生了.
<
<
23 Jul
各位兄弟,有人用过微软的msrdp,或者说是mstsc的activex控件么,我想用这个控件来做远程桌面,但是要配合ssl vpn来使用,也就是mstsc控件需要通过加密通道到vpn然后由vpn解密后发送到terminal service上去,有人知道怎么做么,或者有个思路也可以啊,谢谢了!呵呵!
http://www.pudn.com/downloads49/sourcecode/windows/csharp/detail168961.html用于远程桌面调用,用于C++
23 Jul
1、在使用ShellTreeView控件时就算AutoRefresh属性设为True,但是在做文件的添加或删除时还是无法更新???
3、当运行时,点击DVD驱动器那一个结点时会死机???
2、在ShellTreeView中对文件重命名时若是重名不会有重命名错误提示,系统老是会报错,这要怎么编程啊???
这该死的控件一大堆的问题来解决啊?还望各位高手真情相助!!!
等待回复的第一天…
怎么都没人会吗??看来是真的很难啊!
这个控件的问题是很多的,没有办法
本来看看是什么问题?
但看了一下没有找打ShellTreeView 控件 
lz哪里找到的?
<
<
楼主你高人,不要耍我们了。
既然是example里的控件,就不是正式发行版的控件,有BUG或不完善是完全有可能的。
自己完善一下吧。
example里的例子仅是供我们学习参考的,并不在软件质量保证的范围之内。
BCB6和2009里的ShellListView和ShellTreeView控件BUG多的要命,
为了用这两个控件,我把代码从头过了N遍,修改了N个地方
但是在碰到AutoRefresh问题后,彻底崩溃,不知道怎么改才好了
只得自行改写TListView和TTreeView实现资源管理器功能
其实AutoRefresh这个功能用api很容易实现,不知道这俩Shell控件怎么搞出那么多BUG
如果只是写程序自己娱乐,用用无妨
如果写商业软件,还是自己从头写吧,千万别用这俩东西
<
哈哈,确实着两个控件,很多人是自己用api写的。
sorry,代码属于公司财产,不能公布
一个崭新的"准无满意结帖"的帖子诞生了.
<
<