MessageDlgのMsgセクションのフォントを大きくする方法はありますか?

解決


電解コンデンサ  2004-04-20 19:22:24  No: 8441

タイトルの通りですが、方法はあるのでしょうか?
このような要件の時は、別にフォームを作ったほうが良いでしょうか?
あまりに簡潔な文で申し訳ありませんが、どなたかよろしくお願いします。


jok  2004-04-20 19:54:21  No: 8442

> タイトルの通りですが、方法はあるのでしょうか?

MessageDlg 関数を実行すると、動的に TForm の派生クラス TMessageForm を作成し
それにボタン類とラベルとImage(アイコン用)を作成します。ですから、動的に作成さ
れる前に、Label のフォントを設定できません。しかし、作成された後なら、設定できます。こんな感じです。

  public
    procedure WMApp(var Msg:TMessage);message WM_APP;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Handle,WM_APP,0,0);
  MessageDlg('あいうえお',mtInformation,[mbOk],0);
end;

procedure TForm1.WMApp(var Msg: TMessage);
var
  i:integer;
begin
  for i := 0 to Screen.ActiveForm.ComponentCount-1 do
    if Screen.ActiveForm.Components[i] is TLabel then
    begin
      TLabel(Screen.ActiveForm.Components[i]).Font.Size := 12;
      exit;
    end;
end;

しかし、このメッセージフォームの幅は、フォントサイズの変更前の長さをもとに
計算され
ていますので、フォントを大きくすると折り返してしまいます。動的に  ClientWidth を
変更できますが、ボタンの位置が左に片寄りますし幅の計算が面倒です。結論として

> 別にフォームを作ったほうが良いでしょうか?

のほうがいいようです。


電解コンデンサ  2004-04-20 20:14:31  No: 8443

ご返答ありがとうございます。
この件は、ご指摘いただいたように別にフォームを作って対処しようと思います。

ちょっと、話がそれるんですが、今回のjokさんの書かれたコードについて質問させてください。
「PostMessage」は、WindowsのAPI関数ですよね?
実は、まだMessageとかHandleとかThreadなど、Windowsプログラムに関わるところに疎いので、このコード自体よく理解できないのです…
Delphiのヘルプにも載っていないものが多いので、APIに関しては、Delphiから離れてAPI自体の仕組、Windowsプログラミングの仕組?を勉強していくのが良いでしょうか

質問で書いている文自体が、あべこべなことを書いているかもしれませんが、少しでもご教授していただけたら幸いです。


jok  2004-04-20 20:33:14  No: 8444

> 「PostMessage」は、WindowsのAPI関数ですよね?

はいそうです。

> Delphiのヘルプにも載っていないものが多いので、

Delphi にも \Borland Shared\MSHelp\Win32.hlp に
英語版のヘルプがあります。コードエディタで

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage
end;

と書いて、 PostMessage のところにキャレットがある状態で
F1 を押すとこのヘルプが表示されます。

> APIに関しては、Delphiから離れてAPI自体の仕組、Windowsプログ
>ラミングの仕組?を勉強していくのが良いでしょうか?

Delphi は、Win32API を勉強するのに最適です。google で
「Delphi CreateWindowEx」をキーワードに日本語ページを検索する
といろいろ参考になるHPがありますね。あらゆる API を知る必要は
ないと思いますが、ウィンドウの作り方、メッセージの処理の仕方
などの基本を覚えておくことはウィンドウズプログラマとしては
重要なことであり、決して無駄にはならないと思います。


take  2004-04-20 21:33:42  No: 8445

ここに来られているMr_XRAYさんが保存されているHalbowさんの資料が
役に立つかと思います。

http://homepage2.nifty.com/Mr_XRAY/

ここからHalbow資料館->Win32 API for Delphiをクリックするとたどり着きます。


電解コンデンサ  2004-04-20 23:24:55  No: 8446

jokさん、takeさん、ありがとうございました。
なんでもない質問を、違う方向へ逸らせてしまったことをまずお詫びします。

>jokさんへ
少し、APIに関するサイトを見て周っていました。
そうしたら、「APIを使うにはCがよい」という風評が多くて、少し戸惑ったのですが、決してそうではないですね。
一層、Delphiを深く知りたいと思いました。

>takeさんへ
そんな矢先に、このサイトを見させていただきましたが…最初の入りの所から脱帽しました(笑)
1冊の本にできるような資料を残しておられる方がいるとは、とてもありがたいことです。
全部読んで、理解するのは時間がかかりそうですが、必ず全部読みます。
やっぱり、プログラミングは奥が深いというか…
これを見て、「コンピュータに詳しくなりたい」と思って勉強してきた時の、初心に帰ることができたように思います。

遅くなりましたが、これにて解決といたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加