我想把数据库表中[表结构是:id(int),name(char)两个字段]的name字段的所有内容,动态用checkbox显示在窗体上。同时每个checkbox前加一个combobox用来选择数量。
我要求,点一个按钮,就能把checkbox打钩了的项的名称及对应的数量能写到数据库的一张表中保存!比如:足球 3个,篮球 4个,羽毛球:8个.....请问这个功能可否实现?怎么实现?
我要求,点一个按钮,就能把checkbox打钩了的项的名称及对应的数量能写到数据库的一张表中保存!比如:足球 3个,篮球 4个,羽毛球:8个.....请问这个功能可否实现?怎么实现?
解决方案 »
- delphi2007终于灵魂附体了
- 关于向一个表中插入数据的问题
- 如何在动态库中获取调用他的可执行文件的路径
- 在datagrid控件中插入一条记录。针对于一个单元格的录入如何做数据校验 ?
- 剛入門,請教一下下!
- Devexpress公司 应用于Delphi8 完美最新控件
- 求教,SQL超时已过期,用查询分析器执行时间很长很长。
- 關於Adoconnection的Timeout問題
- 一共给出398分了,就是要电视剧《寻秦记》的下载地址。为什么还是没有人能够告诉我?
- 我的bde坏了如何安装在哪里找安装程序
- 关于的Delphi 7.0 中带的 ModelMaker,你有在开发中应用吗?
- 大家都学了几门语言?
vCheckBox:TCheckBox;
vComboBox:TComboBox;
I,J:Integer;
begin
with ADOQuery1 do
begin
//打开表,取全部内容
for I:=0 to RecordCount-1 do
begin
vCheckBox:=TCheckBox.Create(Self);
with vCheckBox do
begin
Name:=IntToStr(I);
Caption:=FieldValues['Name'];
Left:=20;
Top:=(I+1)*32;
Checked:=False;
end;
vComboBox:=TComboBox.Create(Self);
with vComboBox do
begin
vComboBox.Hint:=vCheckBox.Name;
for J:=1 to FieldValues['ID'] do
Items.Add(IntToStr(J));
ItemIndex:=0;
Left:=50;
Top:=(I+1)*32;
OnClick:=SDOnClick;
end;
end;
end;
end;程序启动时候调用上面代码
然后按钮代码如下:
var
I:Integer;
begin
for I:=0 to Self.ControlCount-1 do
if Self.Controls[I] is TCheckBox then
if (Self.Controls[I] as TCheckBox).Checked then
with ADOQuery1 do
begin
Close;
Edit;
FieldValues['ID']:=(Self.Controls[I] as TCheckBox).Tag;
FieldValues['Name']:=(Self.Controls[I] as TCheckBox).Caption;
Post;
end;
end;
这里当选择了vComboBox的内容后,自动把对应vCheckBox.Tag设置成此值内容。为了在对某一个vComboBox进行操作后能找到相对应的vCheckBox,可以使用如下方法:
预先定义一个SDOnClick,类型和TComboBox的OnClick一致,内容为
var
I:Integer;
begin
for I:=0 to Self.ControlCount-1 do
if Self.Controls[I] is TCheckBox then
if CompareStr((Self.Controls[I] as TCheckBox).Name,(Sender as TComboBox).Hint)=0 then
(Self.Controls[I] as TCheckBox).Tag:=(Sender as TComboBox).ItemIndex+1;
end;这样,上面建立vComboBox的时候指定的OnClick才会生效!
var
I:Integer;
begin
for I:=0 to Self.ControlCount-1 do
if Self.Controls[I] is TCheckBox then
if (Self.Controls[I] as TCheckBox).Checked then
with ADOQuery1 do
begin
Close;
Edit;
FieldValues['ID']:=(Self.Controls[I] as TCheckBox).Tag;
FieldValues['Name']:=(Self.Controls[I] as TCheckBox).Caption;
Post;
end;
end;
这里有问题,应该是在点击CHECKBOX时候是QUERY定位到这条记录上来。
只是EDIT;在选择combobox时候在写入数据并且提交
比如:在足球的checkbox打钩,点选combobox选择数量(比如选5),点按钮提交!足球作为name,5作为count,添加到数据库!
var
a: string;
b: string;
begin
if checkbox.value then
a := checkbox.text;
b := combox.text;
else
if checkbox1.value then
...自己写ado.commandtext := "insert ...自己写
请问有没有更好的办法?
begin
vCheckBox:=TCheckBox.Create(Self);
with vCheckBox do
begin
Name:=IntToStr(I);
Caption:=FieldValues['Name'];
Left:=20;
Top:=(I+1)*32;
Checked:=False;
end;
也创建不了checkbox控件!这是为什么呀???????
begin
Check:=TCheckbox.Create(panel1);
Check.Parent:=panel1;
Check.Name:='C'+inttostr(i);
Check.Top:=(I+1)*32;
Check.Left:=10;
Check.Visible:=true;
end;