掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームのサイズを変更するには? (ID:19502)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あけおめことよろ。 こんな感じでどーでしょう。 すみませんが上のソースは見てません。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Menus; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private 宣言 } FTME:TTRACKMOUSEEVENT; TrackLeave:boolean; TrackHover:boolean; procedure NewWndProc(var AMsg:TMessage); public { Public 宣言 } end; var Form1: TForm1; OldWndProc:TWndMethod; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin TrackLeave:= false; TrackHover:= true; FTME.cbSize := sizeof(TTRACKMOUSEEVENT); FTME.dwFlags := TME_LEAVE; FTME.dwHoverTime := HOVER_DEFAULT; FTME.hwndTrack := Application.Handle; TrackMouseEvent(FTME); OldWndProc := WindowProc; WindowProc := NewWndProc; end; procedure TForm1.NewWndProc(var AMsg:TMessage); procedure leaveCheck; var cPos:TPoint; begin cpos:=Point(0,0); GetCursorPos(cpos); if ((cpos.X <= Left) or (cPos.X >= Left+Width )) or ((cpos.Y <= Top ) or (cPos.Y >= Top +Height)) then begin Width :=200; Height:=100; end; TrackLeave := false; TrackHover := true; end; begin case AMsg.Msg of WM_NCMOUSELEAVE :leaveCheck; WM_MOUSELEAVE :leaveCheck; WM_MOUSEMOVE : begin if not TrackLeave then begin TrackLeave := true; FTME.cbSize := sizeof(TTRACKMOUSEEVENT); FTME.dwFlags := TME_LEAVE; FTME.dwHoverTime:= HOVER_DEFAULT; FTME.hwndTrack := Handle; TrackMouseEvent(FTME); end; if TrackHover then begin Width :=300; Height:=300; TrackHover := false; end; end; end; OldWndProc(AMsg); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.