喫茶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で解決しました。
が、「重ねて表示」を実行するとやはりウィンドウサイズは
大きくなりますね。これは、しかたがないのでしょうか?
解決策があるようでしたらお教えください。
よろしくお願いします。

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

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

> 同じ内容の返信をを間違えて新規で投稿してしまいました。

ここは雑談系ですから,あまり気にすることはないです.
別に別のスレッドもいいですよん.
Delphi MLのスレッドなんかズダズダですから.
まっ,気軽に...

[3377] Re4:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 19:31:25 ishimizu
▼ Mr.XRAYさん

回答ありがとうございました。結局以下のようにしてみました。
SetForegroundWindow, SetForegroundWindowがあると
ウィンドウの表示がおかしいのではずしています。
FWHeight、FWWidthは、重ねて表示を実行したWindowのサイズです。
まだ、修正の余地がありますが、実際に実装するときに検討します。
以上 また、よろしくお願いします。

FWHeight := Screen.Forms[0].Height;
FWWidth := Screen.Forms[0].Width;

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
    Screen.Forms[i].Height := SDIMainForm.FWHeight;
    Screen.Forms[i].Width  := SDIMainForm.FWWidth;
    Screen.Forms[i].BorderStyle := bsSingle;
    WndHandleList[i] := Screen.Forms[i].Handle;
    //SetForegroundWindow(WndHandleList[i]);
  end;
  CascadeWindows(0,
                 0,  {MDITILE_SKIPDISABLED,}
                 nil,
                 Screen.FormCount,
                 Addr(WndHandleList[0]));

  for i := 0 to Screen.FormCount - 1 do begin
    Screen.Forms[i].BorderStyle := bsSizeable;
  end;
  //SetForegroundWindow(Handle);
end;



[3378] Re5:710_SDIスタイルアのプリケーション返信 削除
2010/5/19 (水) 21:02:27 Mr.XRAY
▼ ishimizuさん.どうも

お疲れ様です.
こんなもんじゃないでしょうか.
CascadeWindowの前でも設定できるんですね.

でも,このコードは他の方にも参考になりますね.
最近はワイドな画面が増えてきて,「あれっ?」
という人もいると思います.

Delphi 2010も,新規フォームが,このWindowsのデフォルトサイズ
になりますね.

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