複数Formの表示

解決


イルカ  2007-11-08 02:43:54  No: 28287

複数のFormを表示して,自由に切り替えしたいです.
で,色々検索して見ましたが,良い方法が見つかりません.
例えば,今For1において,
    Form1.Visible := False;
    Form2.Show;
にして,For2を表示し;
Form2では,
    Form2.Visible := False;
    Form1.Show;
でForm1を表示していますが,ちらつきがひどく,スムーズに切り替えできません.
何か良い方法ないでしょうか.
Form2.ShowModalでもそれほど早くないし,なぜがエラーが出ます.


うんと  2007-11-08 03:21:56  No: 28288

>ちらつきがひどく,スムーズに切り替えできません.

ご自分の書いたコードを見ると、どうしてちらつくのか分かりますよ。

いろんなところで質問されていますが、とても基礎的な部分を理解されてない
ようです。回答に応答しないで放置しているのもありますね。

厳しいようですが、入門サイトでじっくり勉強された方が結局早道に
なるでしょう。


イルカ  2007-11-08 04:05:41  No: 28289

うんとさん

>ご自分の書いたコードを見ると、どうしてちらつくのか分かりますよ。
自分としては本当に分かりません.
ご指摘の通り,基礎的な部分をしっかり勉強しなおさないと迷惑ですね.
すいません!


イルカ  2007-11-09 00:00:01  No: 28290

Form1.Visible := False;を
Form1.Hideにしても効果ないし...
困りました.どなたか教えてくれませんか.


めじな  2007-11-09 00:19:32  No: 28291

情報がこれだけでは判断が難しいです。
せめてソースを載せるなどして頂かないと。
とりあえず簡単なサンプルを作ってみてもちらつきますか?


イルカ  2007-11-09 00:53:01  No: 28292

下記のようなものです.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  With Form1 do
  begin
    Width := 1024;    Height := 768;
    Left := 50;       Top  := 50;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Visible := False;
  Form2.Show;
end;
end.

なお,Unit2でも上記と同じく,uses Unit1を使ってます.
以上,よろしくお願いします.


えっとね  2007-11-09 01:18:47  No: 28293

Form2.Visible := False;
Form1.Show;

Form1.Show;
Form2.Visible := False;

にしてごらん


イルカ  2007-11-09 01:43:02  No: 28294

えっとねさん

ありがとうございます.表示を先に,ですね.気づきませんでした.
それと,
    Form2 := TForm2.Create(nil);
    Form2.Show;
にしても,ちらつかないですね.同じ理屈ですかね.


えっとね  2007-11-09 04:00:24  No: 28295

Form1.Visible := False;
Form2.Show 

とやると何故ちらついて見えるのか?
Form1 と Form2 が重なっていると Form1 が一瞬消えて、Form2 が表示されます
この Form1 が一瞬消え、Form2が表示されるまでの間の時間が
これがちらついて見える原因です。(一瞬何も表示されない)

Form1 と Form2 が離れていればちらついて見えません。

Form2.Show 
Form1.Visible := False; 

こうする事により一瞬何も表示されない時間がなくなります。
(Form1 を消す時点で Form2 が表示されています)

フォームが完全に離れている場合にはあまり差は感じないでしょう

    Form1.Visible := False;
    Form2 := TForm2.Create(nil);
    Form2.Show;

でも当然ちらつきますよ


イルカ  2007-11-09 08:09:00  No: 28296

えっとねさん

よく理解できました.ありがとうございます.
ただ,
    Form1.Visible := False;
    Form2 := TForm2.Create(nil);
    Form2.Show;
で,Form1.Visible := False;をなくし,下の2行のみだとちらつかないですね.


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

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






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