Sign in Join
Wiki copytemporary

Dialog Examples/ja: what changed

Revision 1 to 2. 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
2121`Procedure ShowMessage (const Msg: string);`\
22-\
22+
2323`{ Defined in Dialogs.pp }`
2424
2525もっともシンプルなメッセージダイアログです: シンプルな文字をパラメータとして指定し、所定の形状のダイアログを表示します。ランタイムやプログラムから呼び出され、マウスクリックもしくは Enter キーが押されるまで待機します。\
2626これは呼び出しの例です。ダイアログを表示し、フォーカスを受け取ります。なお、OK ボタンをクリックされるまでフォーカスを放棄しません。
2727
2828例:
2929
3030`Program LazMessage;`\
3131`Uses Dialogs;`\
3232`begin`\
3333`  ShowMessage ('これは Lazarus からのメッセージです')`\
3434`end.`
3535
3636### MessageBox
3737
3838`Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;`\
39-\
39+
4040`{ Forms.pp 内の TApplication で定義されています; よって Application.Messagebox () と記述するか、 'with Application do ...end'  の中でコールする必要があります}`
4141
4242パラメータは次の通りです。
4343
4444- Text: ボックス内に表示される指示や紹介用の文字列;
4545- Caption: メッセージボックスの上にあるラベル文字列;
4646- Flags: longint 型 - メッセージボックスの内容と振る舞いを定義するため様々な定数を、必要に応じて加算して指定します。例えば MB_ABORTRETRYIGNORE + MR_ICONQUESTION とすれば、メッセージボックス内には ABORT RETRY IGNORE の3つのボタンと問い合わせ(?)アイコンの付いたメッセージボックスを表示させることになります。
4747
4848この関数は押されたボタンに応じて整数値を返します。この数値は\[IDOK..IDHELP\] といった定数値を参照して値が決定されます。
4949
5050これは procedure コールのように呼び出すこともできます(ただ'MessageBox()'という記述よりも'Variable := MessageBox()' というファンクションコールで使用します - 下の例を見て下さい)
5151
5252例
5353
5454`Uses Forms, Dialogs, LCLType;`\
55-\
55+
5656`Procedure DisplayMessageBox;`\
5757`  var reply, boxstyle: integer;`\
5858`  begin`\
5959`    with application do begin`\
6060`      boxstyle :=  MB_ICONQUESTION + MB_YESNO;`\
6161`      reply :=  MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);`\
6262`      if reply = IDYES then MessageBox ('Yes       ', 'Reply',MB_ICONINFORMATION)`\
6363`      else MessageBox ('No         ', 'Reply', MB_ICONHAND)`\
6464`  end;`
6565
6666この例での 'Yes' と 'No' の文字列ですが、後ろに空白文字を追加して文字長を長くしています。というのも、キャプションをちゃんと表示するのに十分な幅にならない為です。
6767
68-<center>
69-
7068<http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png> <http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png>
7169
72-</center>
73-
7470### MessageDLG
7571
7672`function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; `\
7773`                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;`\
7874`function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; `\
7975`                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;`
8076
8177この関数には二つのバージョンがあります。最初のキャプション(Caption)パラメータが任意です。もし省略した場合、キャプションは表示されません。
8278
8379MessageDLGは、メッセージダイアログの中で最も完全で詳細なもので、プログラマーは様々なこれを使って様々なダイアログボックスを作成できます。 ボックスやアイコンの種類を定義するパラメータは整数の定数値よりも、むしろ定義の方を使用します。ボタンで言えば \[mbRetry, mbIgnore, mbAbort,mbCancel\] といったコの字括弧を使って定義されています。 HelpCtx パラメータは現在使われておらず、0 をセットしておく必要があります。 関数から返された値は、押されたボタンの識別番号であり、Integer 型の扱いになります。(下に述べる\[mrNone..mrAll\]を参照して下さい)
8480
8581例
8682
8783`Uses forms, dialogs, lcltype, controls;`\
88-\
84+
8985`procedure TryMessageDlg;`\
9086`begin`\
9187`  if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation, `\
9288`                 [mbYes, mbNo, mbIgnore],0) = mrYes`\
9389`  then { Execute rest of Program };`\
9490` end;`
9591
96-<center>
97-
9892<http://lazarus-ccr.sourceforge.net/kbdata/Question.png>
9993
100-</center>
101-
10294## 文字入力ダイアログ
10395
10496### InputBox
10597
10698テキスト入力ダイアログ: ダイアログを表示し、ユーザにテキスト入力を促します。
10799
108100`Function InputBox(const ACaption, APrompt, ADefault : String) : String;`
109101
110102タイトルとプロンプトのある四角いフォームを表示して、ユーザーにテキストボックスに入力を促します。オプションとしてデフォルトの文字列を表示させることができます。ユーザーが入力したり、あるいはデフォルトのままの文字列が関数の戻り値として返されます。
111103
112104例
113105
114106`Uses forms, lcltype, dialogs, controls;`\
115-\
107+
116108`procedure TryInputBox;`\
117109`var userstring: string;`\
118110`begin`\
119111`  userstring := InputBox ('Get some text input', `\
120112`                         'Please type in some   information', 'Some sample text');`\
121113`  ShowMessage (userstring)`\
122114`end;`
123115
124116### InputQuery
125117
126118`Function InputQuery(const ACaption, APrompt : String;`\
127119`                    MaskInput : Boolean; var Value : String) : Boolean;`\
128120`Function InputQuery(const ACaption, APrompt : String;`\
129121`                    var Value : String) : Boolean;`
130122
131123この関数には、2つのバージョンがあり、どちらもプロンプトを表示して、ユーザーにテキストデータの入力をもとめます。最初のものは、MascInputという論理値のパラメータがあり、ユーザーの入力が、(パスワード入力中のように)入力ボックス内でアスタリスクでマスクされるかどうかを決めることができます。2番目のものは、このプロパティはありません。ユーザーが入力したテキストは、'Value'という変数パラメータで返されます。この関数の戻り値は、'OK'が押されたときはTRUEを、その他の方法(たとえば、タイトルバーの'閉じる'アイコンをクリックされたときなど)で入力フォームが閉じられたときは、FALSEを返します。MaskInputパラメータを省略することは、MaskInputパラメータにFALSEを指定することと同じです。
132124
133125例:
134126
135127`Uses forms, lcltype, dialogs, controls;`\
136-\
128+
137129`procedure TryInputQuery;`\
138130`var QueryResult: boolean;`\
139131`  userstring: string;`\
140132`begin`\
141133`  if InputQuery ('Question', 'Type in some data', TRUE, userstring)`\
142134`  then ShowMessage (userstring)`\
143135`  else `\
144136`  begin`\
145137`    InputQuery ('Don''t be silly', 'Please try again', userstring);`\
146138`    ShowMessage (userstring)`\
147139`  end`\
148140`end;`
149141
150-<center>
151-
152142<http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png>
153143
154-</center>
155-
156-<center>
157-
158144<http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png>
159145
160-</center>
161-
162146### PasswordBox
163147
164148`Function PasswordBox(const ACaption, APrompt : String) : String;`
165149
166150MaskInput を TRUE にした状態の InputQuery 関数とよく似た動作です。違いは、関数(InputBox のように)の返し値にパスワードがセットされる点です。
167151
168152## メッセージダイアログで使用される定数値と型
169153
170154幾つかのメッセージダイアログで使用される定数値と型は LCL ライブラリの中で予め定義されています:
171155
172156const { Defined in LCLType.pp }
173157
174158メッセージボックスの外観にあるアイコンとボタンの型を定義する定数値
175159
176160`MB_OK = $00000000;`\
177161`MB_OKCANCEL = $00000001;`\
178162`MB_ABORTRETRYIGNORE = $00000002;`\
179163`MB_YESNOCANCEL = $00000003;`\
180164`MB_YESNO = $00000004;`\
181165`MB_RETRYCANCEL = $00000005;`\
182-\
183-\
166+
184167`MB_ICONHAND = $00000010;`\
185168`MB_ICONQUESTION = $00000020;`\
186169`MB_ICONEXCLAMATION = $00000030;`\
187170`MB_ICONASTERICK = $00000040;`\
188171`MB_ICONWARNING = MB_ICONEXCLAMATION;`\
189172`MB_ICONERROR = MB_ICONHAND;`\
190173`MB_ICONINFORMATION = MB_ICONASTERICK;`
191174
192175ボタンが押された時に、MessageBox から送られる一致するボタンの種類の定数値
193176
194177`IDOK = 1;  ID_OK = IDOK;`\
195178`IDCANCEL = 2;  ID_CANCEL = IDCANCEL;`\
196179`IDABORT = 3;   ID_ABORT = IDABORT;`\
197180`IDRETRY = 4;   ID_RETRY = IDRETRY;`\
198181`IDIGNORE = 5;  ID_IGNORE = IDIGNORE;`\
199182`IDYES = 6; ID_YES = IDYES;`\
200183`IDNO = 7;  ID_NO = IDNO;`\
201184`IDCLOSE = 8;   ID_CLOSE = IDCLOSE;`\
202185`IDHELP = 9;    ID_HELP = IDHELP;`
203186
2041871番目のボタン、2番目のボタン、3番目のボタン...のどれがデフォルトかを定義します。
205188
206189`MB_DEFBUTTON1 = $00000000;`\
207190`MB_DEFBUTTON2 = $00000100;`\
208191`MB_DEFBUTTON3 = $00000200;`\
209192`MB_DEFBUTTON4 = $00000300;`
210193
211194MessageBoxのFlagsパラメータは、ボタン定数を加えることで指定します。 \[MB_OK..MB_RETRYCANCEL\], オプションとしてアイコン定数があります。 \[MB_ICONHAND..MB_ICONINFORMATION\] さらにオプションとして、デフォルトボタン定数があります。 \[MB_DEFBUTTON1..MB_DEFBUTTON3\]
212195
213196MessageDlgを使う型は、次のようなパラメータを必要とします。 TMsgDlgTypeのAType, TMsgDlgButtonsのAButtons
214197
215198`{ Defined in Dialogs.pp }`\
216199`type`\
217200` TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,`\
218201`                   mtCustom);`\
219202` TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,`\
220203`                  mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);`\
221204` TMsgDlgButtons = set of TMsgDlgBtn;`\
222205` `\
223-\
206+
224207`const`\
225208` mbYesNoCancel = [mbYes, mbNo, mbCancel];`\
226209` mbOKCancel = [mbOK, mbCancel];`\
227210` mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];`\
228211` `\
229-\
212+
230213` MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (`\
231214`  bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,`\
232215`   bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose`\
233216`  );`\
234-\
235-\
217+
236218` BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (`\
237219`   mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,`\
238220`   mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll`\
239221`   );`\
240-\
241-\
222+
242223`{ Defined in Controls.pp }`\
243224`const`\
244225` mrNone = 0;`\
245226` mrOK = mrNone + 1;`\
246227` mrCancel = mrNone + 2;`\
247228` mrAbort = mrNone + 3;`\
248229` mrRetry = mrNone + 4;`\
249230` mrIgnore = mrNone + 5;`\
250231` mrYes = mrNone + 6;`\
251232` mrNo = mrNone + 7;`\
252233` mrAll = mrNone + 8;`\
253234` mrNoToAll = mrNone + 9;`\
254235` mrYesToAll = mrNone + 10;`\
255236` mrLast = mrYesToAll;`
256237
257238------------------------------------------------------------------------
258239
259240このページはepikwiki [バージョン](http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples)からインポートされました。
260241
261242---
262243*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