Sign in Join
Wiki copytemporary

Dialog Examples/sk

Deutsch · English · Español · Français · Polski · Slovenčina · Suomi · Русский · 中文(中国) · 日本語

Niektoré užitočné dialógy

Toto sú niektoré užitočné dialógy, ktoré nenájdete v Palete komonentov:

Každý z týchto komponentov zobrazuje malé vyskakovacie dialógové okno, ktoré obsahuje nejaké informácie a vyžaduje odozvu používateľa: stlačenie tlačítka, zadanie textu alebo oboje. Programátor má minimálnu kontrolu nad formátom, veľkosťou alebo pozíciou týchto vyskakovacích okien, ale môže ovplyvňovať ich textový obsah.
Dôvodom prečo často existujú veľmi podobné alternatívy, je umožniť rôzne spôsoby volania komponentu, a získavania dát, z procedúr a funkcií.

Správové dialógy

Správové dialógy zobrazujú správu a čakajú na stlačenie klávesy alebo kliknutie myšou.

ShowMessage

pascal
 Procedure ShowMessage (const Msg: string);
 
 { Defined in Dialogs.pp }

Najjednoduchší správový dialóg: prijíma jednoduchý textový prarmeter, zobrazí ho v stereotypnom okne a pred vrátením, do volajúcej rutiny alebo programu, čaká na kliknutie myšou alebo kláves enter.
Toto je modálne volanie procedúry, ktoré zobrazí okno, získa zameranie a tohoto sa nevzdá, pokiaľ nie je stlačené OK.

Príklad:

pascal
 Program LazMessage;
 Uses Dialogs;
 begin
   ShowMessage ('Toto je správa z Lazarusu!')
 end.

MessageBox

pascal
 Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;
 
 { Defined in Forms.pp as part of TApplication; hence must be called as Application.Messagebox () 
   or using the 'with Application do ...' construct }

Parametre:

Funkcia vracia hodnotu integer, ktorá zodpovedá stlačenému tlačítku; jej hodnota je daná odkazom na konštanty [IDOK..IDHELP]

Môže byť volaná ako procedúra (tj. formulácia 'MessageBox()' namiesto volania funkcie 'Variable := MessageBox()' – viz. príklad nižšie)

Príklad:

pascal
 Uses Forms, Dialogs, LCLType;
 
 Procedure DisplayMessageBox;
   var reply, boxstyle: integer;
   begin
     with application do begin
       boxstyle :=  MB_ICONQUESTION + MB_YESNO;
       reply :=  MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);
       if reply = IDYES then MessageBox ('Yes       ', 'Reply',MB_ICONINFORMATION)
       else MessageBox ('No         ', 'Reply', MB_ICONHAND);
   end;

Všimnite si, že v tomto príklade sú reťazce 'Yes' a 'No' doplnené medzerami; inak by okno nebolo dosť široké na správne zobrazenie titulku.

MessageDLG

pascal
 function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; 
                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; 
                    Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;

Táto funkcia má dve verzie, teda prvý parameter 'Caption' je voliteľný, ak je vynechaný nie je zobrazený Titulok.

Toto je najkomplexnejší a najprepracovanejší správový dialóg, ktorý poskytuje programátorovi značnú kontrolu nad vzhľadom dialógového okna. Parametre definujúce typ okna a jeho ikonu sú typy, namiesto konštánt a tlačítka môžu byť zadané ako množina v lomených zátvorkách, napr. [mbRetry, mbIgnore, mbAbort, mbCancel]. Parameter HelpCtx aktuálne nie je implementovaný a musí bať nastavený na nulu. Návratová hodnota funkcie je identická ako stlačené tlačítko, reprezentovaná ako integer (viz nasledujúcu definície, [mrNone..mrAll]).

Príklad:

pascal
 Uses forms, dialogs, lcltype, controls;
 
 procedure TryMessageDlg;
 begin
   if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation, 
                  [mbYes, mbNo, mbIgnore], 0) = mrYes
   then 
     { Execute rest of Program };
  end;

Dialógy textového vstupu

Dialógy textového vstupu, zobrazujú správu a dovoľujú používateľovi zadať požadovanú textovú hodnotu.

InputBox

pascal
Function InputBox(const ACaption, APrompt, ADefault : String) : String;

Zobrazuje okno s definovaným nadpisom, otázku a čaká na používateľský vstup v textovom poli. Voliteľne môže byť pre textové pole definovaný aj predvolený reťazec. Používateľom zadaný text alebo predvolený reťazec je vrátený ako výsledok funkcie.

Príklad:

pascal
 Uses forms, lcltype, dialogs, controls;
 
 procedure TryInputBox;
 var userstring: string;
 begin
   userstring := InputBox ('Get some text input', 
                          'Please type in some   information', 'Some sample text');
   ShowMessage (userstring)
 end;

InputQuery

pascal
 Function InputQuery(const ACaption, APrompt : String;
                     MaskInput : Boolean; var Value : String) : Boolean;
 Function InputQuery(const ACaption, APrompt : String;
                     var Value : String) : Boolean;

Dve verzie tejto funkcie, ktoré zobrazujú otázku a čakajú používateľský vstup textových dát; prvá verzia zahŕňa logický parameter MaskInput, ktorý určuje, či má byť používateľský vstup v textovom poli maskovaný hviezdičkami (ako pri zadávaní hesla), zatiaľ čo druhá túto vlastnosť vynecháva. Používateľom zadaný text je vrátený v parametri 'Value'; výsledkom funkcie je logická hodnota, ktorá vracia TRUE, ak bolo stlačené tlačítko OK alebo FALSE, ak bolo okno zatvorené iným spôsobom (napríklad kliknutím na ikonu 'Zatvoriť' v lište okna). Vynechanie parametra MaskInput má rovnaký výsledok ako jeho nastavenie na FALSE.

Príklad:

pascal
 Uses forms, lcltype, dialogs, controls;
 
 procedure TryInputQuery;
 var QueryResult: boolean;
   userstring: string;
 begin
   if InputQuery ('Question', 'Type in some data', TRUE, userstring)
   then ShowMessage (userstring)
   else 
   begin
     InputQuery ('Don''t be silly', 'Please try again', userstring);
     ShowMessage (userstring);
   end
 end;

PasswordBox

pascal
 Function PasswordBox(const ACaption, APrompt : String) : String;

Správa sa veľmi podobne ako funkcia InputQuery s MaskInput = TRUE; rozdiel je, že heslo, ktoré bolo zadané je vrátené ako výsledok funkcie (ako InputBox).

Konštanty a Typy v správových dialógoch

Niektoré konštanty a typy, ktoré majú vzťah k použitiu v dialógových oknách a sú preddefinované v knižnici LCL:

pascal
 const { Defined in LCLType.pp }

Celočíslené konštanty pre definovanie typov tlačítiek a ikon pre zobrazenie v MessageBox

pascal
 MB_OK = $00000000;
 MB_OKCANCEL = $00000001;
 MB_ABORTRETRYIGNORE = $00000002;
 MB_YESNOCANCEL = $00000003;
 MB_YESNO = $00000004;
 MB_RETRYCANCEL = $00000005;
 
 MB_ICONHAND = $00000010;
 MB_ICONQUESTION = $00000020;
 MB_ICONEXCLAMATION = $00000030;
 MB_ICONASTERICK = $00000040;
 MB_ICONWARNING = MB_ICONEXCLAMATION;
 MB_ICONERROR = MB_ICONHAND;
 MB_ICONINFORMATION = MB_ICONASTERICK;

Celočíselné konštanty definujúce návratovú hodnotu z MessageBox, v závislosti na stlačenom tlačítku

pascal
 IDOK = 1;     ID_OK = IDOK;
 IDCANCEL = 2;  ID_CANCEL = IDCANCEL;
 IDABORT = 3;   ID_ABORT = IDABORT;
 IDRETRY = 4;   ID_RETRY = IDRETRY;
 IDIGNORE = 5;  ID_IGNORE = IDIGNORE;
 IDYES = 6; ID_YES = IDYES;
 IDNO = 7;  ID_NO = IDNO;
 IDCLOSE = 8;   ID_CLOSE = IDCLOSE;
 IDHELP = 9;    ID_HELP = IDHELP;

Definuje, či je predvolené prvé, druhé alebo tretie tlačítko

pascal
 MB_DEFBUTTON1 = $00000000;
 MB_DEFBUTTON2 = $00000100;
 MB_DEFBUTTON3 = $00000200;
 MB_DEFBUTTON4 = $00000300;

Parameter Flags funkcie MessageBox je vytvorený pomocou súčtu konštánt tlačítiek [MB_OK..MB_RETRYCANCEL], voliteľnej konštanty ikony [MB_ICONHAND..MB_ICONINFORMATION] a voliteľnej konštanty predvoleného tlačítka [MB_DEFBUTTON1..MB_DEFBUTTON3]

Typy prepoužitie v MessageDlg, ktorý potrebuje parametre AType typu TMsgDlgType a AButtons typu TMSgDlgButtons

pascal
 { Defined in Dialogs.pp }
 type
  TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
                    mtCustom);
  TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
                   mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
  TMsgDlgButtons = set of TMsgDlgBtn;
  
 const
  mbYesNoCancel = [mbYes, mbNo, mbCancel];
  mbOKCancel = [mbOK, mbCancel];
  mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
  
  MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
   bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
    bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
   );
 
  BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
    mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
    mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
    );
pascal
 { Defined in Controls.pp }
 const
  mrNone = 0;
  mrOK = mrNone + 1;
  mrCancel = mrNone + 2;
  mrAbort = mrNone + 3;
  mrRetry = mrNone + 4;
  mrIgnore = mrNone + 5;
  mrYes = mrNone + 6;
  mrNo = mrNone + 7;
  mrAll = mrNone + 8;
  mrNoToAll = mrNone + 9;
  mrYesToAll = mrNone + 10;
  mrLast = mrYesToAll;


From the Free Pascal wiki, page "Dialog Examples/sk", as it stood on 2020-02-13 after a change by Trev, 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.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.