如何根据checkbox的选中状态,同步在EDIT中显示相应的数值(50分)

  • 主题发起人 hedana1977
  • 开始时间
H

hedana1977

Unregistered / Unconfirmed
GUEST, unregistred user!
如有几个checkbox控件,根据需要选中其中几个后,选中的表示为1,没有选中的为0,
同步的显示在edit中,以及dbgrid显示的数据表中。如:11001
 
很简单呀。如下代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox10: TCheckBox;
Edit1: TEdit;
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
var i:integer;
begin
edit1.Text :='';
for i:=0 to ComponentCount-1 do
if (Components is tcheckbox) then
if (Components as tcheckbox).Checked then
edit1.text:=edit1.text+'1'
else
edit1.text:=edit1.text+'0';
end;

end.

一个窗口,10个checkbox1-checkbox10,一个edit1,
建立checkbox1的onclick事件,其它checkbox2-checkbox10的onclinck全指向checkbox1的onclick事件。
试试上面的代码吧,完全符合你的要求。
 
procedure TForm1.CheckBox1Click(Sender: TObject);
var
j,i:integer;
contemp:tcontrol;
begin
edit1.Text:='';
for i:=0 to form1.ControlCount-1 do
begin
contemp:=form1.Controls;
if contemp is tcheckbox then
begin
if tcheckbox(contemp).Checked then
j:=1
else
j:=0;
edit1.Text:=edit1.Text+inttostr(j);
end;


end;
end;

win2000+D6通过
 
呵呵,谢谢那,我试试,我会给你送分的
 
for i:=0 to ComponentCount-1 do
if (Components is tcheckbox) then
if (Components as tcheckbox).Checked then
edit1.text:=edit1.text+'1'
else
edit1.text:=edit1.text+'0';
给我解释一下这个代码的思路好吗!我有点看不懂
 
for i:=0 to ComponentCount-1 do //在所有控件中查找
if (Components is tcheckbox) then //如果此控件是tcheckbox类控件
if (Components as tcheckbox).Checked then //判断此控件的checked属性
edit1.text:=edit1.text+'1' //若此控件的checked属性为真
else
edit1.text:=edit1.text+'0'; //若此控件的checked属性为假
很简单吧。:)

 
呵呵,不客气,有什么需要帮忙的,尽管开口,只要我能帮你。
QQ:584740
 
接受答案了.
 
顶部