タイトルの通りですが、方法はあるのでしょうか?
このような要件の時は、別にフォームを作ったほうが良いでしょうか?
あまりに簡潔な文で申し訳ありませんが、どなたかよろしくお願いします。
> タイトルの通りですが、方法はあるのでしょうか?
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 を
変更できますが、ボタンの位置が左に片寄りますし幅の計算が面倒です。結論として
> 別にフォームを作ったほうが良いでしょうか?
のほうがいいようです。
ご返答ありがとうございます。
この件は、ご指摘いただいたように別にフォームを作って対処しようと思います。
ちょっと、話がそれるんですが、今回のjokさんの書かれたコードについて質問させてください。
「PostMessage」は、WindowsのAPI関数ですよね?
実は、まだMessageとかHandleとかThreadなど、Windowsプログラムに関わるところに疎いので、このコード自体よく理解できないのです…
Delphiのヘルプにも載っていないものが多いので、APIに関しては、Delphiから離れてAPI自体の仕組、Windowsプログラミングの仕組?を勉強していくのが良いでしょうか
?
質問で書いている文自体が、あべこべなことを書いているかもしれませんが、少しでもご教授していただけたら幸いです。
> 「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 を知る必要は
ないと思いますが、ウィンドウの作り方、メッセージの処理の仕方
などの基本を覚えておくことはウィンドウズプログラマとしては
重要なことであり、決して無駄にはならないと思います。
ここに来られているMr_XRAYさんが保存されているHalbowさんの資料が
役に立つかと思います。
http://homepage2.nifty.com/Mr_XRAY/
ここからHalbow資料館->Win32 API for Delphiをクリックするとたどり着きます。
jokさん、takeさん、ありがとうございました。
なんでもない質問を、違う方向へ逸らせてしまったことをまずお詫びします。
>jokさんへ
少し、APIに関するサイトを見て周っていました。
そうしたら、「APIを使うにはCがよい」という風評が多くて、少し戸惑ったのですが、決してそうではないですね。
一層、Delphiを深く知りたいと思いました。
>takeさんへ
そんな矢先に、このサイトを見させていただきましたが…最初の入りの所から脱帽しました(笑)
1冊の本にできるような資料を残しておられる方がいるとは、とてもありがたいことです。
全部読んで、理解するのは時間がかかりそうですが、必ず全部読みます。
やっぱり、プログラミングは奥が深いというか…
これを見て、「コンピュータに詳しくなりたい」と思って勉強してきた時の、初心に帰ることができたように思います。
遅くなりましたが、これにて解決といたします。
ツイート | ![]() |