社区
VCL组件使用和开发
帖子详情
如何根据条件改变C++Builder 的DBGrid的每行颜色以及在第一列增加一个多选框
deshun205
2006-08-30 09:21:08
问题1:如何根据条件改变C++Builder 的DBGrid的每行颜色.不要找Delphi的。因为DrawDataCell不同
问题2:如何在DBGrid第一列增加一个多选框,然后根据多选框的选择来选择数据进行打印,使用的是QReprot.
谢谢大家了!
...全文
1163
23
打赏
收藏
如何根据条件改变C++Builder 的DBGrid的每行颜色以及在第一列增加一个多选框
问题1:如何根据条件改变C++Builder 的DBGrid的每行颜色.不要找Delphi的。因为DrawDataCell不同 问题2:如何在DBGrid第一列增加一个多选框,然后根据多选框的选择来选择数据进行打印,使用的是QReprot. 谢谢大家了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
raulLW
2006-09-14
打赏
举报
回复
BlueDeepOcean(蓝色·深海) :
我重新提问了
http://community.csdn.net/Expert/topic/5021/5021739.xml?temp=.1894953
谢谢大家了!
谁知道?
raulLW
2006-09-14
打赏
举报
回复
这样是不好,我知道,下次一定注意。
刚碰上这样的问题,解决不了,就来这查查,结果有人问相同的问题,就......
BlueDeepOcean
2006-09-14
打赏
举报
回复
怎么都是借着别人的帖子问自己的问题?这样不好,做人要厚道哦。
楼上的判断Table的RecNo即可。
raulLW
2006-09-14
打赏
举报
回复
第一个问题怎么解决的呢?
问题1:如何根据条件改变C++Builder 的DBGrid的每行颜色.不要找Delphi的。因为DrawDataCell不同
BlueDeepOcean
2006-09-13
打赏
举报
回复
DBGrid->Options << dgRowSelect;
wuqiu217
2006-09-13
打赏
举报
回复
怎么选中一行呢?谢谢...
jaffy
2006-09-05
打赏
举报
回复
LS的说的对,第3方控件有的时候就是简单,快,不过兰色的精神更好.^_^
netliuming
2006-09-05
打赏
举报
回复
是的,如果没有第3方控件替换,按兰色的方法应该可行。
flowercity
2006-09-04
打赏
举报
回复
ehlib控件可以实现这个功能
deshun205
2006-08-31
打赏
举报
回复
To BlueDeepOcean(蓝色·深海) :如何把这个TCheckBox放在第一列呢?能不能给出具体的例子?
谢谢大家的参与!
BlueDeepOcean
2006-08-31
打赏
举报
回复
就是选择哪一行就打印哪一行,不选择的不打印。
嗯……算法比较简单,但是具体实现就比较麻烦了:
1、确定记录条数,这个应该可以得到的,利用Count属性;
2、根据Count,进行一个for循环,动态生成TCheckBox,需要注意的,这些TCheckBox的实例的
索引号一定要连续的,否则对后续操作有影响;
3、书写一个公共函数完成对选择的索引号的记录,比如:
int __fastcall TForm1::WhichCheckBoxChecked(TObject *Sender)
{
if (Sender->InheritsForm(__classid(TCheckBox)))
return ((TCheckBox*)Sender)->Components->Index; //好像这么写,记不清了
}
4、通过一个TStringList或者一个二维数组保存DBGrid中选择了CheckBox的记录。由于DBGrid
是二维表,因此需要用到一个循环;
5、打印。
deshun205
2006-08-31
打赏
举报
回复
To BlueDeepOcean :第一列的每一行均存在一个CheckBox .
deshun205
2006-08-31
打赏
举报
回复
不是ComboBox。CheckBox,就是把所有选中的记录进行打印。
netliuming
2006-08-31
打赏
举报
回复
LZ是要ComboBox的效果吧?
BlueDeepOcean
2006-08-31
打赏
举报
回复
第二个问题说的不是很清楚。在DBGrid的第一列生成CheckBox很简单,但是你所说的第一列增加一个多选框,
我的理解是放在Top-Left的位置,也就是单元格的(0,0)位置上是吗?
还是说第一列的每一行均存在一个CheckBox?
BlueDeepOcean
2006-08-31
打赏
举报
回复
在默认所有的表格行可见的情况下,给出你可以取出所选行的字段值的代码,这个代码我以ShowMessage显示的,你可以将他保存在TStringList中,之后利用两次循环的方式变为二维表:
.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TCheckBox *cb[MAX_PATH];
TStringList *sl; //用于保存为二维表
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
sl = new TStringList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i = 0;i < ADOTable1->RecordCount;i ++)
{
cb[i] = new TCheckBox(this);
cb[i]->Parent = this;
cb[i]->Name = "cb" + AnsiString(i + 1);
cb[i]->Left = DBGrid1->Left + 2;
cb[i]->Top = DBGrid1->Top + 19 * (i + 1);
cb[i]->Width = 10;
cb[i]->Height = 18;
cb[i]->Caption = "";
cb[i]->Visible = true;
cb[i]->BringToFront();
cb[i]->OnClick = WhichRecordNOChecked;
}
}
//---------------------------------------------------------------------------
.h
private: // User declarations
void __fastcall TForm1::WhichRecordNOChecked(TObject *Sender)
{
if (Sender->InheritsFrom(__classid(TCheckBox)))
{
if (((TCheckBox*)Sender)->Checked)
{
/* for testing
((TCheckBox*)Sender)->Name.SubString(((TCheckBox*)Sender)->Name.Pos("b") + 1,MAX_PATH).ToInt()
*/
ADOTable1->First();
if ((((TCheckBox*)Sender)->Name.SubString(((TCheckBox*)Sender)->Name.Pos("b") + 1,MAX_PATH).ToInt()) != ADOTable1->RecNo)
{
for (int i = 1;i < (((TCheckBox*)Sender)->Name.SubString(((TCheckBox*)Sender)->Name.Pos("b") + 1,MAX_PATH).ToInt());i ++)
ADOTable1->Next();
}
/*
ShowMessage(ADOTable1->RecNo); //for testing
*/
for (int c = 0;c < DBGrid1->Columns->Count;c ++)
ShowMessage(DBGrid1->Fields[c]->AsString);
}
}
}
BlueDeepOcean
2006-08-31
打赏
举报
回复
当然会出问题了,我这是默认所有行均显示的情况。
deshun205
2006-08-31
打赏
举报
回复
我拖拉右边的拖拉条,不会出问题吗?因为cb[i]不会移动的
BlueDeepOcean
2006-08-31
打赏
举报
回复
啊,忘了一句,就是
cb[i]->OnClick = WhichCheckBoxChecked; //上面定义的那个函数。
BlueDeepOcean
2006-08-31
打赏
举报
回复
根据记录条数,动态生成TCheckBox类的实例。打印的时候,可以在点击“打印”后,触发这个事件。
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TCheckBox *cb[MAX_PATH];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i = 0;i < ADOTable1->RecordCount;i ++)
{
cb[i] = new TCheckBox(this);
cb[i]->Parent = this;
cb[i]->Left = DBGrid1->Left + 2; //调整系数
cb[i]->Top = DBGrid1->Top + 18 * (i + 1); //调整系数
cb[i]->Width = 10; //调整系数
cb[i]->Height = 18; //调整系数
cb[i]->Caption = "";
cb[i]->Visible = true;
cb[i]->BringToFront();
}
}
//---------------------------------------------------------------------------
加载更多回复(3)
c++builder
中
db
grid
控件排序_甘特图控件VARCHART XGantt,解读活动组布局的“单独行中的节点”选项!...
VARCHART XGantt是
一个
交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序。(我们领先的甘特图控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET应用程序。)本文主要解释了VARCHART XGantt中的分组,包括交互式创建组、交互式重新组合节点、空组、摘要栏等内容~点击下载VARCHART XGantt免费版通常需要将活动划分...
自动焊接和攻螺纹工作机械设备.rar
自动焊接和攻螺纹工作机械设备.rar
【数字预失真(DPD)】静态DPD设计扩展为自适应设计及评估两种自适应DPD设计:基于(最小均方)LMS算法、使用递归预测误差方法(RPEM)算法研究(Matlab&Simulink实现)
内容概要:本文详细研究了数字预失真(DPD)技术的自适应设计,重点探讨了基于最小均方(LMS)算法和递归预测误差方法(RPEM)算法的两种自适应DPD设计方案,并通过Matlab与Simulink平台实现了仿真与评估。研究旨在提升DPD系统对非线性失真的补偿能力,增强其在动态环境下的适应性和实时性。文中不仅介绍了两种算法的理论基础,还对比分析了它们在不同场景下的性能表现,包括收敛速度、稳定性、计算复杂度等方面的差异,为通信系统中功放线性化提供了有效的技术路径和技术选型依据。; 适合人群:具备通信工程、信号处理或电子信息技术背景的研究生、科研人员及从事射频与通信系统开发的工程师。; 使用场景及目标:①用于研究和开发高性能的自适应数字预失真系统;②为通信系统中的功率放大器线性化提供算法选型与仿真依据;③适用于高校教学与科研项目中的先进信号处理技术实践。; 阅读建议:建议读者结合Matlab/Simulink代码实例进行仿真实践,重点关注LMS与RPEM算法在收敛速度、稳定性和计算复杂度方面的差异,以便在实际工程中做出合理选择。
Multiplayer-Ai-Work-Readiness-Scorecard-v1.0-原创源码与文档.zip
原创 JavaScript 工具源码,包含完整 README、MIT LICENSE、原创与授权声明、自动化测试、真实运行截图和示例数据。解压后无需安装第三方依赖,按 README 使用 Node.js 运行并执行 npm test,适合开发者做质量校验、故障定位与离线复盘。
VCL组件使用和开发
604
社区成员
13,456
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章