喫茶XRAYトップページ

[スレッド全体
]

[3369] 710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 12:49:26 Mr.XRAY
次のような問い合わせがありました.

>サンプルをそのまま(ウィンドウサイズは300x300に変更)
>Delphi2009でコンパイル実行しますと
>ウィンドウサイズが設計時サイズにならず大きくなります。
>画面と同じ比率?で画面全体の60%か70%くらい縮小
>したサイズになります。
>どうして設計時のウィンドウサイズにならないのでしょうか?


このサンプルでは,実際に表示するフォームは,
SDISubFormというフォームです.
このフォームのPositionプロパティをpoDesignedにしてください.
すると,IDEでの設計時の位置とサイズになると思います.

動作確認は,Windows XP(SP3) + Delphi 2010(UP5)です.

[3371] Re:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 14:59:34 Mr.XRAY
> 次のような問い合わせがありました.

失礼しました.
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201005/10050019.txt

に書き込みがありました.
私目の見落としでした.
板橋のおばあちゃんに叱られるので,謝っておきます.


[3373] Re2:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 16:07:14 ishimizu
ありがとうございました。
新規作成に関しては、poDesignedで解決しました。
が、「重ねて表示」を実行するとやはりウィンドウサイズは
大きくなりますね。これは、しかたがないのでしょうか?
解決策があるようでしたらお教えください。
よろしくお願いします。

同じ内容の返信をを間違えて新規で投稿してしまいました。
削除キーを登録しなかったので削除できません。
申し訳ありませんが、削除できるようでしたら削除してください。

[3374] Re3:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 18:25:23 Mr.XRAY
▼ ishimizuさん.こんにちは.

> 大きくなりますね。これは、しかたがないのでしょうか?
> 解決策があるようでしたらお教えください。


しかたないと言うか,Windowsの仕様ですね.
下のコードは「重ねて表示」の実行部ですが,
CascadeWindows関数は,NSDNによると元に戻ることになります.
http://msdn.microsoft.com/ja-jp/library/cc410624.aspx

やるとすれば,この後に各ウィンドウの位置とサイズを希望の位置とサイズ
に設定しなおすことになると思います.
その設定の前に,現在のサイズ(位置は各フォームで少しずらすこと
になるので - 重ねて表示なので)をどこかに記憶しておくとか,ですね.

procedure TSDISubForm.menuCascadeWindowClick(Sender: TObject);
var
    WndHandleList : array of HWND;
    i             : Integer;
begin
    SetLength(WndHandleList, Screen.FormCount);
    for i:=0 to Screen.FormCount-1 do begin
      WndHandleList[i] := Screen.Forms[i].Handle;
      SetForegroundWindow(WndHandleList[i]);
    end;
    CascadeWindows(0,
                   0,{MDITILE_SKIPDISABLED,}
                   nil,
                   Screen.FormCount,
                   Addr(WndHandleList[0]));
    SetForegroundWindow(Handle);
end;

[3375] Re4:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 18:35:46 Mr.XRAY
> やるとすれば,この後に各ウィンドウの位置とサイズを希望の位置とサイズ
> に設定しなおすことになると思います.


あるいは,最初からCascadeWindows関数を使わないで,
自前でコードを書くかですね.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82