Dialog Examples/fi
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
日本語 (ja) │
polski (pl) │
русский (ru) │
slovenčina (sk) │
中文(中国大陆) (zh_CN) │
Joitakin Hyödyllisiä dialogeja
Lista joistakin hyödyllistä dialogeista joita ei löydy komponenttipaletista:
- procedure ShowMessage (const Msg: string);
- function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
- function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
- function InputBox (const ACaption, APrompt, ADefault: string); string;
- function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
- function PasswordBox(const ACaption, APrompt : String) : String;
Kukin funktio tai aliohjelma tekee pienen ikkunan näytölle joka sisältää jotain tietoa ja vaatii käyttäjän vastausta: joko painonapin painamista tai tekstin kirjoittamista taikka molempia.
Ohjelmoijalla on hyvin vähän säädettävää formaattia, koko tai paikkaa näissä dialogeissa, mutta voi vaikuttaa tekstimuotoiseen sisältöön.
Syy miksi on tarjolla useita hyvin samantapaisia vaihtoehtoja on sallia useita tapoka kutsua näitä ja palauttaa dataa takaisin siihen kohtaan missä näitä kutsuttiin.
Viestinvälitys dialogit
Viestinvälitys dialogitnäyttävät viestin ja odottavat että painetaan näppäintä tai napsautetaan (klikataan) hiirtä vastaukseksi.
ShowMessage
Procedure ShowMessage (const Msg: string); { Määritelty tiedostossa Dialogs.pp }
Yksinkertaisin viestinvälitys dialogi: ottaa yksinkertaisesti merkkijonon (string) parametriksi, näyttää sen vakiolaatikon sisällä, ja odottaa hiiren tai enter-näppäimen painallusta ennenkuin palaa takaisin kutsukohtaansa.
Tämä on (modal) aliohjelmakutsu, joka näyttää "laatikon", ottaa hallinnan, eikä vapauta hallintaa ennenkuin
sen OK-painonappia on painettu tai muulla tavalla valittu.
Esimerkki:
Program LazMessage; Uses Dialogs; begin ShowMessage ('This is a message from Lazarus') end.
MessageBox
Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer; { Määrittely on tiedostossa Forms.pp osana luokkaa TApplication; siksi sitä täytyy kutsua Application.Messagebox () tai käyttämällä 'with Application do ...' rakennetta }
Funktion kutsussa parametreihin sisältyy (katso yllä olevaa esittelyä)
- Text: (PChar tyyppinen) merkkijono joka näytetään ohjeena tai vihjeenä laatikossa
- Caption:(PChar tyyppinen) merkkijono joka näytetään laatikon otsikkona;
- Flags: (longint tyyppinen)- kokonaisluku joka muodostetaan lisäämällä eri vakioita toisiinsa määrittelemään
näytettävän laatikon sisältöä ja painikkeita. Esimerkiksi MB_ABORTRETRYIGNORE + MR_ICONQUESTION tekee sen että sovellus näyttää kysymysmerkki-kuvakkeen laatikossa ja kolme painiketta: ABORT RETRY IGNORE.
Funktio palauttaa kokonaisluvun (integer) joka vastaa nappia jota oli painettu. Sen arvo määräytyy vakioiden [IDOK..IDHELP] mukaan
Sitä voidaan myös kutsua kuin aliohjemaa (kun käytetään pelkkää 'MessageBox()' -lausetta funktiokutsutavan 'Variable := MessageBox()' tilalla - katso esimerkki alla)
Esimerkki
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;
Huomaa että tässä esimerkissä 'Yes' ja 'No' merkkijonoihin on sisälletty välilyöntejä. Muutoin laatikossa ei välttämättä olisi kylliksi tilaa näyttää koko otsikkoa.
MessageDLG
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ästä funktiosta on kaksi versiota. Ensimmäinen parametri 'Caption' voidaan jättää pois.
Tämä on monipuolisin viestinvälitys dialogi ja sallii ohjelmoijalla eniten säätömahdollisuuksia
Parametreillä määritellään minkälainen laatikko on . Sen kuvakkeen tyyppi valitaan kokonaislukuvakiolla ja painikkeet määritellään hakasulkujen sisällä kuten esim. [mbRetry, mbIgnore, mbAbort, mbCancel]
HelpCtx parametriä ei ole vielä toteutettu ja se pitäisi asettaa nollaksi. Funktion paluuarvo kertoo mitä näppäintä on painettu. Se kerrotaan kokonaislukuna (integer) (Katso tämän sivun lopussa olevia määrittelyä [mrNone..mrAll]).
Esimerkki
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;
Tekstinluku dialogit
InputBox
Tekstinluku dialogi joka näyttää viestin ja odottaa käyttäjän antamaa tekstiä.
Function InputBox(const ACaption, APrompt, ADefault : String) : String;
Näytettävässä laatikossa on määritelty otsikko, kehoite ja käyttäjälle oletuksena annettu merkkijono. Käyttäjän kirjoittama teksti tai oletusmerkkijono palautetaan funktion tuloksena. Esimerkki
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
Function InputQuery(const ACaption, APrompt : String; MaskInput : Boolean; var Value : String) : Boolean; Function InputQuery(const ACaption, APrompt : String; var Value : String) : Boolean;
Nämä kaksi versiota näyttää kehoitustekstin ja odottaa käyttäjän kirjoittamaa tekstiä. Ensimmäinen sisältää boolean tyypinä annettavan MaskInput parametrin mikä määrittää kirjoitetaanko käyttäjän antamat merkit tähtinä (niinkuin salasanat yleensäkin) kun toisesta puuttuu tämä ominaisuus. Funktion muuttujaparametrissä Value palautetaan käyttäjän antama teksti. Funktion paluuarvona on true jos ok-painiketta on painettu tai false jos laatikko on lopettu jollain muulla tavalla (kuten napsauttamalla otsikkorivillä olevaa sulje-kuvaketta) Puuttuva MaskInput parametri toimii samalla tavalla kuin jos se olisi asetettu false:ksi.
Esimerkki
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 ('Dont be silly', 'Please try again', userstring); ShowMessage (userstring) end end;
PasswordBox
Function PasswordBox(const ACaption, APrompt : String) : String;
Funktion käyttäytyminen on hyvin samanlaista kuin InputQuery funktion kun MaskInputparameri on asetettu TRUE:ksi. Erona on että funktio palauttaa saadun merkkijonon (Siis vähän samanlailla kuin funktio InputBox).
Viestinvälitys-dialogeissa käytetyt tyypit ja vakiot
Several constants and types relevant for use with the dialog boxes are pre-defined in the LCL library:
const { Määritelty tiedostossa LCLType.pp }
Kokonaislukuvakioiden määrittely painikkeista ja kuvakkeista jotka näytetään MessageBox -funktiossa
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;
Kokonaislukuvakioiden määrittely arvosta joka palautetaan MessageBox -funktiosta kun vastaavaa painiketta on painettu
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;
Määrittää mikä painike on oletuspainike (ensimmäinen, toinen, kolmas)
MB_DEFBUTTON1 = $00000000; MB_DEFBUTTON2 = $00000100; MB_DEFBUTTON3 = $00000200; MB_DEFBUTTON4 = $00000300;
Flags-parametri muodostetaan funktiossa MessageBox lisäämällä painiketta vastaava vakio [MB_OK..MB_RETRYCANCEL], optiona näytettävään kuvakkeen vakioon [MB_ICONHAND..MB_ICONINFORMATION] ja optiona olevaan oletuspainikkeen vakioon [MB_DEFBUTTON1..MB_DEFBUTTON3]
Types for use in MessageDlg, which needs parameters AType of TMsgDlgType and AButtons of TMSgDlgButtons
{ Määritelty tiedostossa 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 ); { Määritelty tiedostossa 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;