|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ヘルプファイルの位置合わせ"
わーい。 かとちんです。\(^0^)/
自作アプリに紐付けたヘルプファイルの表示ウィンドウを動的に座標変更する
ユニットです。
nifty:FDELPHI/MES/08/11961 では複数ウィンドウ(Delphiヘルプで言えば
「プロパティ」や「例」などの別ウィンドウ)存在する場合に最後にアクティ
ブだったウィンドウに対しての操作しかできませんでした。
ここにアップしたユニットではウィンドウ名指定ができます。
【ユニット】
HelpSetWindPos.pas という名前でイカを保存してください。
───────────────────────────────────
unit HelpSetWinPos;
interface
uses
Windows, SysUtils, Forms;
// ピクセル単位で座標指定
procedure HelpSetBounds(ALeft, ATop, AWidth, AHeight: Integer;
WinName: string);
// パーセントで座標指定
procedure HelpSetBoundsPercentage(ALeft, ATop, AWidth, AHeight:
Integer; WinName: string);
implementation
procedure HelpSetBoundsPer1024(ALeft, ATop, AWidth, AHeight: Integer;
WinName: string);
var
Size: Integer;
PosInfo: PHelpWinInfo;
begin
Size := Sizeof(THelpWinInfo) + Length(WinName);
GetMem(PosInfo, Size);
try
FillChar(PosInfo^, Size, 0); // 構造体内容の初期化
PosInfo^.wStructSize := Size; // 構造体サイズの指定
PosInfo^.x := ALeft; // Left 1/1024ピクセル単位
PosInfo^.y := ATop; // Top 1/1024ピクセル単位
PosInfo^.dx := AWidth; // Width 1/1024ピクセル単位
PosInfo^.dy := AHeight; // Height 1/1024ピクセル単位
PosInfo^.wMax := SW_SHOW; // 表示方法(通常の表示)
StrCopy(@PosInfo^.rgchMember, PChar(WinName));
Application.HelpCommand(HELP_SETWINPOS, Integer(PosInfo));
finally
FreeMem(PosInfo);
end;
end;
procedure HelpSetBoundsPercentage(ALeft, ATop, AWidth, AHeight:
Integer; WinName: string);
begin
HelpSetBoundsPer1024(
Round(1024 * (ALeft / 100)),
Round(1024 * (ATop / 100)),
Round(1024 * (AWidth / 100)),
Round(1024 * (AHeight / 100)),
WinName
);
end;
procedure HelpSetBounds(ALeft, ATop, AWidth, AHeight: Integer;
WinName: string);
begin
HelpSetBoundsPer1024(
Round(ALeft / (Screen.Width / 1024)),
Round(ATop / (Screen.Height / 1024)),
Round(AWidth / (Screen.Width / 1024)),
Round(AHeight / (Screen.Height / 1024)),
WinName
);
end;
end.
───────────────────────────────────
【使用例】
uses HelpSetWinPos;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Object Pascal 言語ガイドヘルプを表示する。
HelpFile := 'D:\Program Files\Delphi4\Help\Del4OP.hlp';
Application.HelpCommand(HELP_CONTENTS, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// メインウィンドウの名称 = main
HelpSetBoundsPercentage(50, 25, 50, 50, 'main');
//「このセクションのトピック」ウィンドウの名称 = pme
HelpSetBounds(50, 50, 200, 200, 'pme');
end;
▲● 2000/08/29 13:23 JDX06162(とんちんかんちんかとちん)
■ Inprise Delphi ... The Great Development Kit
uses D2Desktop, D3CSS, D4CSS, D5ENT;
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/09/10 -
Original document by かとちん 氏 ID:(JDX06162)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|