フォームの右下にフォームのサイズを変更するための
グリップを表示するにはWin32APIでどうすれば良いですか?
実現したいことは、ExcelのVBAで作成したフォームを
サイズ変更可能にしたいのです。
それはDelphiの質問でしょうか?
> Win32APIでどうすれば良いですか?
サイズグリップはステータスバーの一部なので
MSDNで該当するスタイルを調べてください。
ウィンドウに水平・垂直両方のスクロールバーを付けるのでも良かったかも。
もっとも、グリップは単に見かけ上の手がかりを与えるもので
実際にウィンドウがサイズ可変かどうかとは無関係ですが。
>それはDelphiの質問でしょうか?
実現したいのはDelphiではないのですが、
Delphiのフォームで可能であれば、Delphiのソースを参考にして
何か分かるかと思って質問いたしました。
>もっとも、グリップは単に見かけ上の手がかりを与えるもので
>実際にウィンドウがサイズ可変かどうかとは無関係ですが。
ウィンドウサイズを可変にする方法は分かっています。
Excelの「ファイルを開く」ダイアログのように、ステータスバーを
使わずに、直接フォームにグリップをつけることは出来ないので
しょうか?
DelphiだとVCLライブラリり便利なコンポーネントTStatusBarがあるのでそれを使用します。
クラスから作成するならmsctls_statusbar32ですが、
Delphiユーザーは先ずやらないと思います。
VBAについてはわかりません。
レスついてたんですね
ExcelのダイアログをSpy++でみると
クラス名 ScrollBar
クラススタイル 0000408B
ウィンドウスタイル 56020014
拡張スタイル 00000000
だそうです。ちょっと試してみます
確認しました。
procedure TForm1.Button1Click(Sender: TObject);
var
hScroll:HWND;
begin
hScroll :=CreateWindow('SCROLLBAR',
'',
$56020014,
0,0,20,20,
Handle,
1001,
hInstance,
nil);
end;
やりたいことは、EXCELのアドインで以下のようなツールを作成しようとしています。
セルに長文を入力する時に、ツールを呼び出すと入力支援のエディタが起動して
セルに入力したい文字列をそのエディタを使用して入力させようとしています。
上で述べた入力支援のエディタをVBAのフォームで作成し、VBAのテキストボックスで
入力させようとしています。
つまり、すべてVBAで記述したいのです。
そこで調べた結果フォームのサイズ変更をさせるには、以下のコードで可能だと分かりました。
Private Sub UserForm_Initialize()
Dim hwnd As Long
Dim lngOffset As Long
hwnd = FindWindow("ThunderDFrame", Me.Caption)
lngOffset = GetWindowLong(hwnd, GWL_STYLE)
Call SetWindowLong(hwnd, GWL_STYLE, lngOffset Xor WS_THICKFRAME Xor &H30000)
End Sub
その延長で、SetWindowLong()関数の第3引数に何らかのスタイルを渡すと、グリップが出たりは
しないかなぁ?とか思ったのですが。
やりたかったのはこんな感じです
http://www.geocities.jp/teamhasebe/download/compnent/thsizgrp/index.htm
サイトのソースを見るかぎり、無理そうです。。
ここはDelphiQ&Aなんだけど?
場違いな質問だってわかってる?
上でもちょっと触れましたが、リサイズ可能なオーバーラップウィンドウの場合
水平・垂直両方のスクロールバーがあれば自動的にグリップが付きます。
WS_HSCROLL+WS_VSCROLLは試してみましたか?
スクロールバーは欲しくないということだったら、
後はDrawFrameControlで自前で描くくらいですね。
(引用したソースでやっているのがそれ)
スクロールバーもステータスバーもなしで、フォームに直接
やりたかったのですが、自前で描かなきゃならないとなるとお手上げです。
どうもありがとうございました。
書いてみました。
元質問とはだいぶ違うんですが
たぶんDelphiの普通の質問なら、これで解決すると思う。
Formにサイズグリップを描画する
http://delfusa.main.jp/delfusafloor/technic/technic/092_FormSizeGrip.html
ツイート | ![]() |