フォームのリサイズ完了後に処理を行うには

解決


るるとん@K  2004-05-16 00:43:44  No: 8992

APIかなにかで出来るのでしょうか?
宜しくお願いします


sss  2004-05-16 00:49:14  No: 8993

OnResize じゃだめなの? ヘルプより

OnResize イベントは,コントロールのサイズが変更された直後に発生します


るるとん@K  2004-05-16 01:01:29  No: 8994

onResizeはフォームサイズ変更中、マウスが移動する度に発生します


sss  2004-05-16 01:09:58  No: 8995

> onResizeはフォームサイズ変更中、マウスが移動する度に発生します

procedure TForm1.FormResize(Sender: TObject);
begin
  Memo1.Lines.Add('OnResize');
end;

これで確認したけど、そんなことはないぞ。ヘルプどおり。


るるとん@K  2004-05-16 01:16:44  No: 8996

>procedure TForm1.FormResize(Sender: TObject);
>begin
>  Memo1.Lines.Add('OnResize');
>end;
大量にAddされますよ


るるとん@K  2004-05-16 01:18:38  No: 8997

Win98だからですか?


sss  2004-05-16 01:25:43  No: 8998

ふーん、そうなの?

type
  TForm1 = class(TForm)
    Memo1: TMemo;
  private
    { Private 宣言 }
  public
    procedure WMSize(var Msg:TWMSize);message WM_SIZE;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.WMSize(var Msg: TWMSize);
begin
  inherited;
  if Msg.SizeType = SIZE_RESTORED then
    Memo1.Lines.Add('Sized!');
end;

これではどう?


るるとん@K  2004-05-16 01:30:38  No: 8999

onResizeと同じ事になります


sss  2004-05-16 01:35:47  No: 9000

そう、じゃ、そっちの環境では、サイズ完了が頻繁に起こっている、という
ことで、<ほんと>の完了と区別するのは難しそう。マウスが押されている
かどうかを判断するくらいですかね。


るるとん@K  2004-05-16 01:43:02  No: 9001

onResizeって環境によって違うんですね!知りませんでした。
>マウスが押されているかどうかを判断するくらいですかね。
Form1のonMouseDownで
 ReleaseCapture;
 Self.Perform(WM_NCLBUTTONDOWN,HTCAPTION,0); 
というようにしてサイズ変更を開始した場合
>ReleaseCapture;
があるのでonMouseUpが利用できないのです
それからそちらのOSは何ですか?


sss  2004-05-16 03:52:52  No: 9002

Form の端は、クライアント領域じゃないので OnMouseDown/Up イベントは
利用できない。GetAsyncKeyState(VK_LBUTTON) の戻り値の最上位ビット
を調べるくらいかな。


Mark  2004-05-16 04:24:45  No: 9003

Windows、画面のプロパティ、効果
「ウィンドウの内容を表示したままドラッグする」
これ有効にしてるとOnResizeが大量に実行される。


るるとん@K  2004-05-16 04:59:28  No: 9004

>Windows、画面のプロパティ、効果「ウィンドウの内容を表示したままドラッグする」これ有効にしてるとOnResizeが大量に実行される。
そうなんですか。
サイズ変更中、内容を隠そうとしたのですが、
これをチェックしている人は、画面がちらつくのを覚悟の上なわけですね。
解決とします。ありがとうございました。


sss  2004-05-16 07:04:42  No: 9005

> 解決とします。

解決してないよー。
マウスボタンの押し下げを検出する件はどうなったのよ?


るるとん@K  2004-05-16 19:09:37  No: 9006

>マウスボタンの押し下げを検出する件はどうなったのよ?
マウスボタンの押し下げを検出する必要は無くなりました。
有り難うございました


sss  2004-05-16 21:34:37  No: 9007

> マウスボタンの押し下げを検出する必要は無くなりました。

そうですか。で、どうやって、

> フォームのリサイズ完了後に処理を行うには

この問題を可決したのか、今後の参考のために教えてください。


るるとん@K  2004-05-16 22:11:46  No: 9008

>フォームのリサイズ完了後に処理を行うには
onResizeメソッドを使用します
設定によりリサイズ中動かすたびに呼び出され、
画面がちらつくことがありますが、
これは、ユーザーが任意に設定したものであり、
画面のちらつきは承知していると考え、
リサイズ中に頻繁に呼び出されてもよい
と、考えました


sss  2004-05-17 01:32:27  No: 9009

> これは、ユーザーが任意に設定したものであり、

しかし、開発者である るるとん@K さんでさえ、最初は知らなかったのでは?
ユーザがどうして「承知している」と考えられますか?


るるとん@K  2004-05-17 02:04:01  No: 9010

私がonResizeで行おうとしていた処理は、パネル等の位置の修正などであり、
途中で頻繁に呼び出されても、特に支障はありません。


sss  2004-05-17 04:00:27  No: 9011

> 特に支障はありません。

つまり、どうでもいいことをわざわざ質問したのですね。
分かりました。答える方がバカでした。


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

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






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