Sign in Join
Wiki copytemporary

Dialog Examples/ja: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11# 便利なダイアログ
22
33ここでは、コンポーネントパレットにはない、便利なダイアログを紹介します:
44
55- procedure [[Dialog Examples/ja|ShowMessage]] (const Msg: string);
66- function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
77- function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
88- function InputBox (const ACaption, APrompt, ADefault: string); string;
99- function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
1010- function PasswordBox(const ACaption, APrompt : String) : String;
1111
1212どのコンポーネントも、幾つかの情報とユーザのレスポンスを求める小さなポップアップを表示します: ボタンを押すか何かテキストを入力するか、もしくはその両方の種類があります。プログラマーはフォーマットやサイズ、ポップアップの場所をある程度制御することが出来ます。また、テキストの内容を変更することもできます。\
1313このように幾つかのとてもよく似た選択がある理由は、コンポーネントの呼び出し方や、procedure や function から返されたデータの受け取りに異なる手法できるようにするためです。
1414
1515## メッセージダイアログ
1616
1717メッセージダイアログは、メッセージを表示したり、キー入力やマウスクリックを待つといった際に使用します。
1818
1919### ShowMessage
2020
21-`Procedure ShowMessage (const Msg: string);`\
21+``` pascal
22+Procedure ShowMessage (const Msg: string);
2223
23-`{ Defined in Dialogs.pp }`
24+{ Defined in Dialogs.pp }
25+```
2426
2527もっともシンプルなメッセージダイアログです: シンプルな文字をパラメータとして指定し、所定の形状のダイアログを表示します。ランタイムやプログラムから呼び出され、マウスクリックもしくは Enter キーが押されるまで待機します。\
2628これは呼び出しの例です。ダイアログを表示し、フォーカスを受け取ります。なお、OK ボタンをクリックされるまでフォーカスを放棄しません。
2729
2830例:
2931
30-`Program LazMessage;`\
31-`Uses Dialogs;`\
32-`begin`\
33-`  ShowMessage ('これは Lazarus からのメッセージです')`\
34-`end.`
32+``` pascal
33+Program LazMessage;
34+Uses Dialogs;
35+begin
36+ ShowMessage ('これは Lazarus からのメッセージです')
37+end.
38+```
3539
3640### MessageBox
3741
38-`Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;`\
42+``` pascal
43+Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;
3944
40-`{ Forms.pp 内の TApplication で定義されています; よって Application.Messagebox () と記述するか、 'with Application do ...end'  の中でコールする必要があります}`
45+{ Forms.pp 内の TApplication で定義されています; よって Application.Messagebox () と記述するか、 'with Application do ...end' の中でコールする必要があります}
46+```
4147
4248パラメータは次の通りです。
4349
4450- Text: ボックス内に表示される指示や紹介用の文字列;
4551- Caption: メッセージボックスの上にあるラベル文字列;
4652- Flags: longint 型 - メッセージボックスの内容と振る舞いを定義するため様々な定数を、必要に応じて加算して指定します。例えば MB_ABORTRETRYIGNORE + MR_ICONQUESTION とすれば、メッセージボックス内には ABORT RETRY IGNORE の3つのボタンと問い合わせ(?)アイコンの付いたメッセージボックスを表示させることになります。
4753
4854この関数は押されたボタンに応じて整数値を返します。この数値は\[IDOK..IDHELP\] といった定数値を参照して値が決定されます。
4955
5056これは procedure コールのように呼び出すこともできます(ただ'MessageBox()'という記述よりも'Variable := MessageBox()' というファンクションコールで使用します - 下の例を見て下さい)
5157
5258例
5359
54-`Uses Forms, Dialogs, LCLType;`\
60+``` pascal
61+Uses Forms, Dialogs, LCLType;
5562
56-`Procedure DisplayMessageBox;`\
57-`  var reply, boxstyle: integer;`\
58-`  begin`\
59-`    with application do begin`\
60-`      boxstyle :=  MB_ICONQUESTION + MB_YESNO;`\
61-`      reply :=  MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);`\
62-`      if reply = IDYES then MessageBox ('Yes       ', 'Reply',MB_ICONINFORMATION)`\
63-`      else MessageBox ('No         ', 'Reply', MB_ICONHAND)`\
64-`  end;`
63+Procedure DisplayMessageBox;
64+ var reply, boxstyle: integer;
65+ begin
66+ with application do begin
67+ boxstyle := MB_ICONQUESTION + MB_YESNO;
68+ reply := MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);
69+ if reply = IDYES then MessageBox ('Yes ', 'Reply',MB_ICONINFORMATION)
70+ else MessageBox ('No ', 'Reply', MB_ICONHAND)
71+ end;
72+```
6573
6674この例での 'Yes' と 'No' の文字列ですが、後ろに空白文字を追加して文字長を長くしています。というのも、キャプションをちゃんと表示するのに十分な幅にならない為です。
6775
6876<http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png> <http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png>
6977
7078### MessageDLG
7179
72-`function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; `\
73-`                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;`\
74-`function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; `\
75-`                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;`
80+``` pascal
81+function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
82+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
83+function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;
84+ Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
85+```
7686
7787この関数には二つのバージョンがあります。最初のキャプション(Caption)パラメータが任意です。もし省略した場合、キャプションは表示されません。
7888
7989MessageDLGは、メッセージダイアログの中で最も完全で詳細なもので、プログラマーは様々なこれを使って様々なダイアログボックスを作成できます。 ボックスやアイコンの種類を定義するパラメータは整数の定数値よりも、むしろ定義の方を使用します。ボタンで言えば \[mbRetry, mbIgnore, mbAbort,mbCancel\] といったコの字括弧を使って定義されています。 HelpCtx パラメータは現在使われておらず、0 をセットしておく必要があります。 関数から返された値は、押されたボタンの識別番号であり、Integer 型の扱いになります。(下に述べる\[mrNone..mrAll\]を参照して下さい)
8090
8191例
8292
83-`Uses forms, dialogs, lcltype, controls;`\
93+``` pascal
94+Uses forms, dialogs, lcltype, controls;
8495
85-`procedure TryMessageDlg;`\
86-`begin`\
87-`  if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation, `\
88-`                 [mbYes, mbNo, mbIgnore],0) = mrYes`\
89-`  then { Execute rest of Program };`\
90-` end;`
96+procedure TryMessageDlg;
97+begin
98+ if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation,
99+ [mbYes, mbNo, mbIgnore],0) = mrYes
100+ then { Execute rest of Program };
101+ end;
102+```
91103
92104<http://lazarus-ccr.sourceforge.net/kbdata/Question.png>
93105
94106## 文字入力ダイアログ
95107
96108### InputBox
97109
98110テキスト入力ダイアログ: ダイアログを表示し、ユーザにテキスト入力を促します。
99111
100-`Function InputBox(const ACaption, APrompt, ADefault : String) : String;`
112+``` pascal
113+Function InputBox(const ACaption, APrompt, ADefault : String) : String;
114+```
101115
102116タイトルとプロンプトのある四角いフォームを表示して、ユーザーにテキストボックスに入力を促します。オプションとしてデフォルトの文字列を表示させることができます。ユーザーが入力したり、あるいはデフォルトのままの文字列が関数の戻り値として返されます。
103117
104118例
105119
106-`Uses forms, lcltype, dialogs, controls;`\
120+``` pascal
121+Uses forms, lcltype, dialogs, controls;
107122
108-`procedure TryInputBox;`\
109-`var userstring: string;`\
110-`begin`\
111-`  userstring := InputBox ('Get some text input', `\
112-`                         'Please type in some   information', 'Some sample text');`\
113-`  ShowMessage (userstring)`\
114-`end;`
123+procedure TryInputBox;
124+var userstring: string;
125+begin
126+ userstring := InputBox ('Get some text input',
127+ 'Please type in some information', 'Some sample text');
128+ ShowMessage (userstring)
129+end;
130+```
115131
116132### InputQuery
117133
118-`Function InputQuery(const ACaption, APrompt : String;`\
119-`                    MaskInput : Boolean; var Value : String) : Boolean;`\
120-`Function InputQuery(const ACaption, APrompt : String;`\
121-`                    var Value : String) : Boolean;`
134+``` pascal
135+Function InputQuery(const ACaption, APrompt : String;
136+ MaskInput : Boolean; var Value : String) : Boolean;
137+Function InputQuery(const ACaption, APrompt : String;
138+ var Value : String) : Boolean;
139+```
122140
123141この関数には、2つのバージョンがあり、どちらもプロンプトを表示して、ユーザーにテキストデータの入力をもとめます。最初のものは、MascInputという論理値のパラメータがあり、ユーザーの入力が、(パスワード入力中のように)入力ボックス内でアスタリスクでマスクされるかどうかを決めることができます。2番目のものは、このプロパティはありません。ユーザーが入力したテキストは、'Value'という変数パラメータで返されます。この関数の戻り値は、'OK'が押されたときはTRUEを、その他の方法(たとえば、タイトルバーの'閉じる'アイコンをクリックされたときなど)で入力フォームが閉じられたときは、FALSEを返します。MaskInputパラメータを省略することは、MaskInputパラメータにFALSEを指定することと同じです。
124142
125143例:
126144
127-`Uses forms, lcltype, dialogs, controls;`\
145+``` pascal
146+Uses forms, lcltype, dialogs, controls;
128147
129-`procedure TryInputQuery;`\
130-`var QueryResult: boolean;`\
131-`  userstring: string;`\
132-`begin`\
133-`  if InputQuery ('Question', 'Type in some data', TRUE, userstring)`\
134-`  then ShowMessage (userstring)`\
135-`  else `\
136-`  begin`\
137-`    InputQuery ('Don''t be silly', 'Please try again', userstring);`\
138-`    ShowMessage (userstring)`\
139-`  end`\
140-`end;`
148+procedure TryInputQuery;
149+var QueryResult: boolean;
150+ userstring: string;
151+begin
152+ if InputQuery ('Question', 'Type in some data', TRUE, userstring)
153+ then ShowMessage (userstring)
154+ else
155+ begin
156+ InputQuery ('Don''t be silly', 'Please try again', userstring);
157+ ShowMessage (userstring)
158+ end
159+end;
160+```
141161
142162<http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png>
143163
144164<http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png>
145165
146166### PasswordBox
147167
148-`Function PasswordBox(const ACaption, APrompt : String) : String;`
168+``` pascal
169+Function PasswordBox(const ACaption, APrompt : String) : String;
170+```
149171
150172MaskInput を TRUE にした状態の InputQuery 関数とよく似た動作です。違いは、関数(InputBox のように)の返し値にパスワードがセットされる点です。
151173
152174## メッセージダイアログで使用される定数値と型
153175
154176幾つかのメッセージダイアログで使用される定数値と型は LCL ライブラリの中で予め定義されています:
155177
156178const { Defined in LCLType.pp }
157179
158180メッセージボックスの外観にあるアイコンとボタンの型を定義する定数値
159181
160-`MB_OK = $00000000;`\
161-`MB_OKCANCEL = $00000001;`\
162-`MB_ABORTRETRYIGNORE = $00000002;`\
163-`MB_YESNOCANCEL = $00000003;`\
164-`MB_YESNO = $00000004;`\
165-`MB_RETRYCANCEL = $00000005;`\
182+```text
183+MB_OK = $00000000;
184+MB_OKCANCEL = $00000001;
185+MB_ABORTRETRYIGNORE = $00000002;
186+MB_YESNOCANCEL = $00000003;
187+MB_YESNO = $00000004;
188+MB_RETRYCANCEL = $00000005;
166189
167-`MB_ICONHAND = $00000010;`\
168-`MB_ICONQUESTION = $00000020;`\
169-`MB_ICONEXCLAMATION = $00000030;`\
170-`MB_ICONASTERICK = $00000040;`\
171-`MB_ICONWARNING = MB_ICONEXCLAMATION;`\
172-`MB_ICONERROR = MB_ICONHAND;`\
173-`MB_ICONINFORMATION = MB_ICONASTERICK;`
190+MB_ICONHAND = $00000010;
191+MB_ICONQUESTION = $00000020;
192+MB_ICONEXCLAMATION = $00000030;
193+MB_ICONASTERICK = $00000040;
194+MB_ICONWARNING = MB_ICONEXCLAMATION;
195+MB_ICONERROR = MB_ICONHAND;
196+MB_ICONINFORMATION = MB_ICONASTERICK;
197+```
174198
175199ボタンが押された時に、MessageBox から送られる一致するボタンの種類の定数値
176200
177-`IDOK = 1;  ID_OK = IDOK;`\
178-`IDCANCEL = 2;  ID_CANCEL = IDCANCEL;`\
179-`IDABORT = 3;   ID_ABORT = IDABORT;`\
180-`IDRETRY = 4;   ID_RETRY = IDRETRY;`\
181-`IDIGNORE = 5;  ID_IGNORE = IDIGNORE;`\
182-`IDYES = 6; ID_YES = IDYES;`\
183-`IDNO = 7;  ID_NO = IDNO;`\
184-`IDCLOSE = 8;   ID_CLOSE = IDCLOSE;`\
185-`IDHELP = 9;    ID_HELP = IDHELP;`
201+```text
202+IDOK = 1; ID_OK = IDOK;
203+IDCANCEL = 2; ID_CANCEL = IDCANCEL;
204+IDABORT = 3; ID_ABORT = IDABORT;
205+IDRETRY = 4; ID_RETRY = IDRETRY;
206+IDIGNORE = 5; ID_IGNORE = IDIGNORE;
207+IDYES = 6; ID_YES = IDYES;
208+IDNO = 7; ID_NO = IDNO;
209+IDCLOSE = 8; ID_CLOSE = IDCLOSE;
210+IDHELP = 9; ID_HELP = IDHELP;
211+```
186212
1872131番目のボタン、2番目のボタン、3番目のボタン...のどれがデフォルトかを定義します。
188214
189-`MB_DEFBUTTON1 = $00000000;`\
190-`MB_DEFBUTTON2 = $00000100;`\
191-`MB_DEFBUTTON3 = $00000200;`\
192-`MB_DEFBUTTON4 = $00000300;`
215+```text
216+MB_DEFBUTTON1 = $00000000;
217+MB_DEFBUTTON2 = $00000100;
218+MB_DEFBUTTON3 = $00000200;
219+MB_DEFBUTTON4 = $00000300;
220+```
193221
194222MessageBoxのFlagsパラメータは、ボタン定数を加えることで指定します。 \[MB_OK..MB_RETRYCANCEL\], オプションとしてアイコン定数があります。 \[MB_ICONHAND..MB_ICONINFORMATION\] さらにオプションとして、デフォルトボタン定数があります。 \[MB_DEFBUTTON1..MB_DEFBUTTON3\]
195223
196224MessageDlgを使う型は、次のようなパラメータを必要とします。 TMsgDlgTypeのAType, TMsgDlgButtonsのAButtons
197225
198-`{ Defined in Dialogs.pp }`\
199-`type`\
200-` TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,`\
201-`                   mtCustom);`\
202-` TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,`\
203-`                  mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);`\
204-` TMsgDlgButtons = set of TMsgDlgBtn;`\
205-` `\
226+``` pascal
227+{ Defined in Dialogs.pp }
228+type
229+ TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation,
230+ mtCustom);
231+ TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
232+ mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
233+ TMsgDlgButtons = set of TMsgDlgBtn;
234+
206235
207-`const`\
208-` mbYesNoCancel = [mbYes, mbNo, mbCancel];`\
209-` mbOKCancel = [mbOK, mbCancel];`\
210-` mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];`\
211-` `\
236+const
237+ mbYesNoCancel = [mbYes, mbNo, mbCancel];
238+ mbOKCancel = [mbOK, mbCancel];
239+ mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
240+
212241
213-` MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (`\
214-`  bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,`\
215-`   bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose`\
216-`  );`\
242+ MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
243+ bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
244+ bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
245+ );
217246
218-` BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (`\
219-`   mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,`\
220-`   mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll`\
221-`   );`\
247+ BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
248+ mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
249+ mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
250+ );
222251
223-`{ Defined in Controls.pp }`\
224-`const`\
225-` mrNone = 0;`\
226-` mrOK = mrNone + 1;`\
227-` mrCancel = mrNone + 2;`\
228-` mrAbort = mrNone + 3;`\
229-` mrRetry = mrNone + 4;`\
230-` mrIgnore = mrNone + 5;`\
231-` mrYes = mrNone + 6;`\
232-` mrNo = mrNone + 7;`\
233-` mrAll = mrNone + 8;`\
234-` mrNoToAll = mrNone + 9;`\
235-` mrYesToAll = mrNone + 10;`\
236-` mrLast = mrYesToAll;`
252+{ Defined in Controls.pp }
253+const
254+ mrNone = 0;
255+ mrOK = mrNone + 1;
256+ mrCancel = mrNone + 2;
257+ mrAbort = mrNone + 3;
258+ mrRetry = mrNone + 4;
259+ mrIgnore = mrNone + 5;
260+ mrYes = mrNone + 6;
261+ mrNo = mrNone + 7;
262+ mrAll = mrNone + 8;
263+ mrNoToAll = mrNone + 9;
264+ mrYesToAll = mrNone + 10;
265+ mrLast = mrYesToAll;
266+```
237267
238268------------------------------------------------------------------------
239269
240270このページはepikwiki [バージョン](http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples)からインポートされました。
241271
242272---
243273*From the Free Pascal wiki, page "Dialog Examples/ja", as it stood on 2006-10-28 after a change by Saeka-jp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history