2つの画像を交互に表示するには?

解決


Zton  2004-01-24 01:20:48  No: 6888

初歩的な質問です。
bitmapを2枚用意してボタンを押すごとに交互に表示するにはにはどうしたらよいですか?
  もしA.bmpが表示されてるなら、B.bmpを読み込み、そうでないなら、A.bmpを読み込む。こう考えましたが、A.bmpが表示されてるなら、という判定の仕方がよくわかりません。
教えてください。


jok  2004-01-24 01:59:13  No: 6889

Boolean 型の変数を用意して、切り替える。

たとえば

var
  flag:Boolean;

...

  if flag then Disp(bmpA) else Disp(bmpB);
  flag := not flag;

という感じ


通りすがり  2004-01-24 04:01:45  No: 6890

試しに、こんなことしてみました(^^;
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;
失礼しました。


Zton  2004-01-24 04:09:03  No: 6891

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が表示されますが、もう一度押しても
何もおきません。そのままじゃダメなのですか?
お手数ですが、もうちょっと教えてください。


jok  2004-01-24 04:14:29  No: 6892

var flag : boolean;

の部分をハンドラの外に出してグローバル変数か Form1 のフィールドにしてください。この場合、初期値は false です。


にしの  2004-01-24 04:15:30  No: 6893

var flag : boolean;
は、ローカル変数ですので、前回呼ばれた状態を保持していません。
グローバル変数にするか、TFormのメンバ変数に変更しましょう。


Zton  2004-01-24 04:43:56  No: 6894

通りすがりさん、回答ありがとうございます。jokさんへの返信を書いている間に回答をもらっていたみたいです。今教えていただいたのをそのまま(こればっかで恥ずかしい)試してみました。素晴らしい。なんでうまくいくのか、これから読み返して勉強します。
あと10分待って書き込みすべきでした。私の恥ずかしい余計な書き込みが残ってしまった。

と書き込もうとしている間にさらに回答が…  確認してよかった。

jokさん、にしのさん、回答ありがとうございます。変数をグローバル変数に変えてみました。無事実行できました。これも素晴らしい。

jokさん、通りすがりさん、にしのさん、迅速な回答ありがとうございます!またよろしくお願いします。


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

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






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