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;
恐れ入りますが、お知恵を貸してください。
宜しくお願いします。
>Form2.CBox(BlankCheck);
これは
frmSetup.CBox(BlankCheck);
じゃないですか?
あと、記録するときは Add で参照する時は [0] などでは二回以降はだめですね。
普通に Boolean の配列に記録しては? 簡単ですし。
ご回答くださりありがとうございます。
試してみます。
期待通りの動きをさせることができました。
誠にありがとうございます。
ツイート | ![]() |