サブフォーム上のTCheckBoxを操作したい

解決


alt  2008-09-29 17:12:48  No: 32075  IP: 192.*.*.*

Delphi6のEnterpriseを使っています。

■メインフォーム
ボタン1(サブフォーム起動)

■サブフォーム
TCheckBox
ボタン1(TCheckBoxのStateをTStringListに書き込んで、Formを閉じる)
ボタン2(TCheckBoxのStateをTStringListに書き込まず、Formを閉じる)

[ 問題 ]
メインフォームのボタン1押下でサブフォームを起動し、任意のチェックボタンを選択します。
サブフォームのボタン1を押下してフォームを閉じた後、メインフォームのボタン1押下により、再度サブフォームを起動します。
このとき、TStringListに記録しておいたデータをもとにTCheckBoxのStateを変更したいのですが、私のコードでは、TCheckBoxは空のままです…。


[ コード ]
// Unit1 メインフォームのボタン1
procedure TForm1.E1Click(Sender: TObject);
var
  frmSetup: TForm2;
begin
  if(NumLines = 0) then
    ShowMessage('CSVファイルを読み込んでください。')
  else
  begin
    frmSetup := TForm2.Create(Self);
    if(BlankCheck.Count <> 0) then
      Form2.CBox(BlankCheck); // ここで、stateを変更します。
    frmSetup.ShowModal;
    frmSetup.Release;
  end;
end;

// Unit2 state変更用procedure
procedure TForm2.CBox(Check: TStringList);
begin
  if(Check[0] = 'cbChecked') then
    CheckBox1.State := cbChecked;
  if(Check[1] = 'cbChecked') then
    CheckBox2.State := cbChecked;
  if(Check[2] = 'cbChecked') then
    CheckBox3.State := cbChecked;
end;

// Unit2 サブフォームのボタン1
procedure TForm2.Button1Click(Sender: TObject);
begin
  if(CheckBox1.State = cbChecked) then
    BlankCheck.Add('cbChecked')
  else
    BlankCheck.Add('cbUnchecked');
  if(CheckBox2.State = cbChecked) then
    BlankCheck.Add('cbChecked')
  else
    BlankCheck.Add('cbUnchecked');
  if(CheckBox3.State = cbChecked) then
    BlankCheck.Add('cbChecked')
  else
    BlankCheck.Add('cbUnchecked');
   ModalResult := mrOK;
end;


恐れ入りますが、お知恵を貸してください。
宜しくお願いします。

編集 削除
うんと  2008-09-29 19:11:56  No: 32076  IP: 192.*.*.*

>Form2.CBox(BlankCheck); 

これは

frmSetup.CBox(BlankCheck); 

じゃないですか?

あと、記録するときは Add で参照する時は [0] などでは二回以降はだめですね。

普通に Boolean の配列に記録しては? 簡単ですし。

編集 削除
alt  2008-09-30 17:18:47  No: 32077  IP: 192.*.*.*

ご回答くださりありがとうございます。
試してみます。

編集 削除
alt  2008-10-01 13:15:04  No: 32078  IP: 192.*.*.*

期待通りの動きをさせることができました。
誠にありがとうございます。

編集 削除