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

解決


alt  2008-09-30 02:12:48  No: 32075

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-30 04:11:56  No: 32076

>Form2.CBox(BlankCheck); 

これは

frmSetup.CBox(BlankCheck); 

じゃないですか?

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

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


alt  2008-10-01 02:18:47  No: 32077

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


alt  2008-10-01 22:15:04  No: 32078

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加