掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Edit.Widthの算出方法 (ID:30960)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちゃんとやろうとすると面倒です。 しかもTCanvas使わないとなるとWin32APIの直叩きですよ。 やってることは同じですがこんな感じになります。 procedure TForm1.Button1Click(Sender: TObject); var wRect,cRect:TRect; wmgn,hmgn:Integer; aSize:TSize; fString:String; fhBuffer,fhdc:HWND; apos:TPoint; begin fString:=Edit1.Text; Windows.GetWindowRect(Edit1.Handle,wRect); Windows.GetClientRect(Edit1.Handle,cRect); wmgn:= (wRect.Right-wRect.Left)-(cRect.Right-cRect.Left); hmgn:= (wRect.Bottom-wRect.Top)-(cRect.Bottom-cRect.Top); fhdc:= GetDC(Handle); fhBuffer := CreateCompatibleDC(fhdc); SelectObject(fhBuffer, Edit1.Font.Handle); Windows.GetTextExtentPoint32(fhBuffer, PChar(fString), Length(fString), aSize); DeleteDC(fhdc); DeleteDC(fhBuffer); apos:=Point(wRect.Left,wRect.Top); apos:=ScreenToClient(apos); SetWindowPos(Edit1.Handle,0,apos.X,apos.Y,aSize.cx+wmgn,aSize.cy+hmgn, SWP_NOMOVE or SWP_NOACTIVATE or SWP_NOZORDER); Caption:=IntToStr(aSize.cx+wmgn); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.