初歩的な質問です。
bitmapを2枚用意してボタンを押すごとに交互に表示するにはにはどうしたらよいですか?
もしA.bmpが表示されてるなら、B.bmpを読み込み、そうでないなら、A.bmpを読み込む。こう考えましたが、A.bmpが表示されてるなら、という判定の仕方がよくわかりません。
教えてください。
Boolean 型の変数を用意して、切り替える。
たとえば
var
flag:Boolean;
...
if flag then Disp(bmpA) else Disp(bmpB);
flag := not flag;
という感じ
試しに、こんなことしてみました(^^;
procedure TForm1.Button1Click(Sender: TObject);
var
FileName: string;
begin
if Image1.Hint='A.bmp'
then FileName := 'B.bmp'
else FileName := 'A.bmp';
Image1.Picture.LoadFromFile(FileName);
Image1.Hint := FileName;
Image1.ShowHint := True;
end;
失礼しました。
jokさん、回答ありがとうございます。
教えていただいたのをそのまま使ってみたのですが、
procedure TForm1.BitBtn1Click(Sender: TObject);
var flag : boolean;
begin
if flag then Image1.Picture.LoadFromFile('A.bmp')
else Image1.Picture.LoadFromFile('B.bmp');
flag := not flag;
end;
ボタンを押すとA.bmpが表示されますが、もう一度押しても
何もおきません。そのままじゃダメなのですか?
お手数ですが、もうちょっと教えてください。
var flag : boolean;
の部分をハンドラの外に出してグローバル変数か Form1 のフィールドにしてください。この場合、初期値は false です。
var flag : boolean;
は、ローカル変数ですので、前回呼ばれた状態を保持していません。
グローバル変数にするか、TFormのメンバ変数に変更しましょう。
通りすがりさん、回答ありがとうございます。jokさんへの返信を書いている間に回答をもらっていたみたいです。今教えていただいたのをそのまま(こればっかで恥ずかしい)試してみました。素晴らしい。なんでうまくいくのか、これから読み返して勉強します。
あと10分待って書き込みすべきでした。私の恥ずかしい余計な書き込みが残ってしまった。
と書き込もうとしている間にさらに回答が… 確認してよかった。
jokさん、にしのさん、回答ありがとうございます。変数をグローバル変数に変えてみました。無事実行できました。これも素晴らしい。
jokさん、通りすがりさん、にしのさん、迅速な回答ありがとうございます!またよろしくお願いします。
ツイート | ![]() |