我有一个页面上已经有一些checkbox组件了,我现在想实现 在打开页面的时候,自动选中一些我需要的checkbox组件.我的思路是,我先把我需要选中的checkbox组件的名字放在一个数组里面,然后,在打开页面的时候从数组中读出需选中的checkbox组件,使它们的checked 为 TRUE . 请各位高人指教该如何实现.

解决方案 »

  1.   

    当然可以不过也可以把这些需要选中的checkbox的名字写在ini文件中,每次打开的时候读一下ini,这样方便好使
    With TINIFile.Create(ExtractFilePath(application.ExeName)+'\chis.ini') do
    begin
    if readstring('setting','autoload','')='1' then
    checkbox1.Checked:=true else
    checkbox1.Checked:=false;
    if readstring('setting','update','')='1' then
    checkbox2.Checked:=true else
    checkbox2.Checked:=false;
    if readstring('setting','checktime','')='0' then
    begin
    checkbox3.Checked:=false;
    trackbar1.Position:=0;
    end else
    begin
    checkbox3.Checked:=true;
    trackbar1.Position:=strtoint(readstring('setting','checktime',''));
    end;
    ini文件
    [setting]
    autoload=1
    update=1
    checktime=2
    datelog=1
      

  2.   

    谢谢楼上
    不过我希望是 不要用到INI文件,我想通过取出数组中值来选中CHECKBOX,因为我的数组的值是从数据库中取出来的,动态的.
      

  3.   

    谢谢楼上
    我是不会 做到对应名字的checkbox的被选中
    我在数据库相关里面发了个更好说明的,
    http://topic.csdn.net/u/20070824/14/79c32228-e11a-424b-9212-a2a4094d671c.html
    谢谢
      

  4.   

    TCheckBox(FindComponent('CheckBox1')).Checked:=True;
      

  5.   

    1.直接用DBCheckBox 连,  这样省事,但数据库类型要匹配。2.自己读数据库,然后根据结果值来 写checkbox的值。
      

  6.   

    按5楼的方法我试了下,可是运行时报错,代码如下:
    //sql语句
    sql:='select rightName from  rightList where userID = ''1''';//赋值循环
    while not query1.eof do
    for i := 0 to query1.RecordCount do
    begin
    UA[i] := datamodule1.Q1.Fields[0].AsString;//数据库中rightName的值和页面上checkbox的name一致,UA是一个足够大的string数组
    TCheckBox(FindComponent('''+UA[i]+''')).Checked:=True;//运行到这里出错
    datamodule1.Q1.Next;
    end请帮忙
    谢谢
      

  7.   

    TCheckBox(FindComponent( " " "+UA[i]+ " " ")).Checked:=True;//运行到这里出错 
    //括号里面是checkbox的的名称,你那当然不对啦
      

  8.   

    按5楼的方法解决了
    原来是我的代码有问题,应该是
    //sql语句 
    sql:= "select   rightName   from     rightList   where   userID   =   ''1 '';while not Q1.eof do
    for i := 0 to Q1.RecordCount -1  do
    begin
    UA[i] := Q1.Fields[0].AsString;
    TCheckBox(FindComponent(''+UA[i]+'')).Checked:=True;
    Q1.Next;
    end谢谢各位