APIかなにかで出来るのでしょうか?
宜しくお願いします
OnResize じゃだめなの? ヘルプより
OnResize イベントは,コントロールのサイズが変更された直後に発生します
onResizeはフォームサイズ変更中、マウスが移動する度に発生します
> onResizeはフォームサイズ変更中、マウスが移動する度に発生します
procedure TForm1.FormResize(Sender: TObject);
begin
Memo1.Lines.Add('OnResize');
end;
これで確認したけど、そんなことはないぞ。ヘルプどおり。
>procedure TForm1.FormResize(Sender: TObject);
>begin
> Memo1.Lines.Add('OnResize');
>end;
大量にAddされますよ
Win98だからですか?
ふーん、そうなの?
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;
これではどう?
onResizeと同じ事になります
そう、じゃ、そっちの環境では、サイズ完了が頻繁に起こっている、という
ことで、<ほんと>の完了と区別するのは難しそう。マウスが押されている
かどうかを判断するくらいですかね。
onResizeって環境によって違うんですね!知りませんでした。
>マウスが押されているかどうかを判断するくらいですかね。
Form1のonMouseDownで
ReleaseCapture;
Self.Perform(WM_NCLBUTTONDOWN,HTCAPTION,0);
というようにしてサイズ変更を開始した場合
>ReleaseCapture;
があるのでonMouseUpが利用できないのです
それからそちらのOSは何ですか?
Form の端は、クライアント領域じゃないので OnMouseDown/Up イベントは
利用できない。GetAsyncKeyState(VK_LBUTTON) の戻り値の最上位ビット
を調べるくらいかな。
Windows、画面のプロパティ、効果
「ウィンドウの内容を表示したままドラッグする」
これ有効にしてるとOnResizeが大量に実行される。
>Windows、画面のプロパティ、効果「ウィンドウの内容を表示したままドラッグする」これ有効にしてるとOnResizeが大量に実行される。
そうなんですか。
サイズ変更中、内容を隠そうとしたのですが、
これをチェックしている人は、画面がちらつくのを覚悟の上なわけですね。
解決とします。ありがとうございました。
> 解決とします。
解決してないよー。
マウスボタンの押し下げを検出する件はどうなったのよ?
>マウスボタンの押し下げを検出する件はどうなったのよ?
マウスボタンの押し下げを検出する必要は無くなりました。
有り難うございました
> マウスボタンの押し下げを検出する必要は無くなりました。
そうですか。で、どうやって、
> フォームのリサイズ完了後に処理を行うには
この問題を可決したのか、今後の参考のために教えてください。
>フォームのリサイズ完了後に処理を行うには
onResizeメソッドを使用します
設定によりリサイズ中動かすたびに呼び出され、
画面がちらつくことがありますが、
これは、ユーザーが任意に設定したものであり、
画面のちらつきは承知していると考え、
リサイズ中に頻繁に呼び出されてもよい
と、考えました
> これは、ユーザーが任意に設定したものであり、
しかし、開発者である るるとん@K さんでさえ、最初は知らなかったのでは?
ユーザがどうして「承知している」と考えられますか?
私がonResizeで行おうとしていた処理は、パネル等の位置の修正などであり、
途中で頻繁に呼び出されても、特に支障はありません。
> 特に支障はありません。
つまり、どうでもいいことをわざわざ質問したのですね。
分かりました。答える方がバカでした。
ツイート | ![]() |