複数のFormを表示して,自由に切り替えしたいです.
で,色々検索して見ましたが,良い方法が見つかりません.
例えば,今For1において,
Form1.Visible := False;
Form2.Show;
にして,For2を表示し;
Form2では,
Form2.Visible := False;
Form1.Show;
でForm1を表示していますが,ちらつきがひどく,スムーズに切り替えできません.
何か良い方法ないでしょうか.
Form2.ShowModalでもそれほど早くないし,なぜがエラーが出ます.
>ちらつきがひどく,スムーズに切り替えできません.
ご自分の書いたコードを見ると、どうしてちらつくのか分かりますよ。
いろんなところで質問されていますが、とても基礎的な部分を理解されてない
ようです。回答に応答しないで放置しているのもありますね。
厳しいようですが、入門サイトでじっくり勉強された方が結局早道に
なるでしょう。
うんとさん
>ご自分の書いたコードを見ると、どうしてちらつくのか分かりますよ。
自分としては本当に分かりません.
ご指摘の通り,基礎的な部分をしっかり勉強しなおさないと迷惑ですね.
すいません!
Form1.Visible := False;を
Form1.Hideにしても効果ないし...
困りました.どなたか教えてくれませんか.
情報がこれだけでは判断が難しいです。
せめてソースを載せるなどして頂かないと。
とりあえず簡単なサンプルを作ってみてもちらつきますか?
下記のようなものです.
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を使ってます.
以上,よろしくお願いします.
Form2.Visible := False;
Form1.Show;
を
Form1.Show;
Form2.Visible := False;
にしてごらん
えっとねさん
ありがとうございます.表示を先に,ですね.気づきませんでした.
それと,
Form2 := TForm2.Create(nil);
Form2.Show;
にしても,ちらつかないですね.同じ理屈ですかね.
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;
でも当然ちらつきますよ
えっとねさん
よく理解できました.ありがとうございます.
ただ,
Form1.Visible := False;
Form2 := TForm2.Create(nil);
Form2.Show;
で,Form1.Visible := False;をなくし,下の2行のみだとちらつかないですね.
ツイート | ![]() |