お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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