Difference between revisions of "Dialog Examples/fi"

From Lazarus wiki
Jump to navigationJump to search
(New page: {{Dialog Examples}} = Joitakin Hyödyllisiä dialogeja= Lista joistakin hyödyllistä dialogeista joita ei löydy komponenttipaletista: * procedure ShowMessage (const Msg: string); * fu...)
 
 
Line 1: Line 1:
 
{{Dialog Examples}}
 
{{Dialog Examples}}
  
= Joitakin Hyödyllisiä dialogeja=
+
= Joitakin hyödyllisiä dialogeja=
 +
Lista joistakin hyödyllistä dialogeista joita ei löydy [[Component Palette/fi|komponenttipaletista]]:
  
Lista joistakin hyödyllistä dialogeista joita ei löydy komponenttipaletista:
+
* <syntaxhighlight lang="pascal" inline>procedure ShowMessage (const Msg: string);</syntaxhighlight>
 +
* <syntaxhighlight lang="pascal" inline>function MessageBox (Text, Caption : PChar; Flags: Word): Integer;</syntaxhighlight>
 +
* <syntaxhighlight lang="pascal" inline>function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;</syntaxhighlight>
 +
* <syntaxhighlight lang="pascal" inline>function InputBox (const ACaption, APrompt, ADefault: string); string;</syntaxhighlight>
 +
* <syntaxhighlight lang="pascal" inline>function InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;</syntaxhighlight>
 +
* <syntaxhighlight lang="pascal" inline>function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
  
* procedure ShowMessage (const Msg: string);
+
Jokainen näistä komponenteista aiheuttaa sen, että näyttöön tulee pieni ponnahdusikkuna, joka sisältää joitain tietoja ja vaatii käyttäjän vastauksen: joko painikkeen painaminen tai jokin tekstin kirjoittamisen tai molemmat. Ohjelmoijalla on vain vähän hallintaa näiden ponnahdusikkunoiden muodosta, koosta tai sijainnista, mutta hän voi vaikuttaa niiden tekstisisältöön.
* function MessageBox (Text, Caption : PChar; Flags: Word): Integer;
+
Syy, miksi usein on useita hyvin samankaltaisia vaihtoehtoja, on sallia erilaisia menetelmiä komponentin kutsumiseen ja datan vastaanottamiseen
* function MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
+
[[Procedure/fi|aliohjelmasta (procedure)]] tai [[Function/fi|funktiosta]]. Nämä valintaikkunat saattavat olla alustasta riippuvaisia, ts. Ne voidaan näyttää eri tavalla. Esimerkiksi merkkijonot, jotka näkyvät kokonaan Windows XP: ssä, voivat olla katkaistu Windows 7: ssä.
* 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. <br/>
 
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 dialogit==
  
Viestinvälitys dialogitnäyttävät viestin ja odottavat että painetaan näppäintä tai napsautetaan (klikataan) hiirtä vastaukseksi.
+
Viestinvälitys dialogit näyttävät viestin ja odottavat että painetaan näppäintä tai napsautetaan (klikataan) hiirtä vastaukseksi.
  
 
===ShowMessage===
 
===ShowMessage===
Procedure ShowMessage (const Msg: string);
+
<syntaxhighlight lang="pascal">procedure ShowMessage(const Msg: string);</syntaxhighlight>
 
   
 
   
{ Määritelty tiedostossa Dialogs.pp }
+
{ 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. <br/>
+
Yksinkertaisin viestinvälitys dialogi: ottaa yksinkertaisesti [[String/fi|merkkijonon (string)]] parametriksi, näyttää sen vakiolaatikon sisällä, ja odottaa hiiren tai {{keypress|Enter}}-näppäimen painallusta  
Tämä on (modal) aliohjelmakutsu, joka näyttää "laatikon", ottaa hallinnan, eikä vapauta hallintaa ennenkuin
+
ennen paluuta kutsuvaan [[Routine/fi|rutiiniin]] tai [[Program/fi|ohjelmaan]].
sen OK-painonappia on painettu tai muulla tavalla valittu.
+
Tämä on modaalinen (modal) aliohjelmakutsu, joka näyttää "laatikon", ottaa hallinnan, eikä vapauta hallintaa ennenkuin
 +
sen OK-painonappia on painettu tai muulla tavalla valittu, ennenkuin palaa takaisin kutsukohtaansa.
  
 
Esimerkki:
 
Esimerkki:
  
Program LazMessage;
+
<syntaxhighlight lang="pascal">
Uses Dialogs;
+
program LazMessage;
begin
+
uses
  ShowMessage ('This is a message from Lazarus')
+
  Dialogs;
end.
+
begin
 +
  ShowMessage('This is a message from Lazarus');
 +
end.
 +
</syntaxhighlight>
 +
 
 +
On myös mahdollista luoda monirivinen viesti seuraavien rivierottimien avulla, ne kaikki toimivat:
 +
*<syntaxhighlight lang="pascal" inline>sLineBreak</syntaxhighlight>
 +
*[[End_of_Line/fi|<syntaxhighlight lang="pascal" inline>LineEnding</syntaxhighlight>]]
 +
*tai merkkikoodilla: #13#10
 +
 
 +
'''monirivinen viestiesimerkki:'''
 +
 
 +
<syntaxhighlight lang="pascal">
 +
program LazMessage;
 +
uses
 +
  Dialogs;
 +
begin
 +
  ShowMessage('This is a multilines' + sLineBreak + 'message!' );
 +
end.
 +
</syntaxhighlight>
  
 
===MessageBox===
 
===MessageBox===
 +
<syntaxhighlight lang="pascal">function Application.MessageBox(Text, Caption: PChar; Flags: LongInt): Integer;</syntaxhighlight>
 +
 +
{ Määrittely on tiedostossa Forms.pp osana luokkaa TApplication; siksi sitä täytyy kutsua Application.Messagebox () tai käyttämällä '[[With/fi|<syntaxhighlight lang="pascal" inline>with</syntaxhighlight>]] <syntaxhighlight lang="pascal" inline>Application</syntaxhighlight> [[Do/fi|<syntaxhighlight lang="pascal" inline>do</syntaxhighlight>]] ...' rakennetta }
 +
 +
Funktion kutsussa parametreihin sisältyy (katso yllä olevaa esittelyä)
 +
* Text: merkkijono, joka näytetään kehotteena tai ohjeena laatikossa.
 +
* Caption: merkkijono, joka näytetään viestikentän yläosassa.
 +
* Flags: [[Longint/fi|longint]] - [[Integer/fi|integer]] jotka on rakennettu lisäämällä yhteen eri [[Constant/fi|vakiot]] laatikon sisällön ja käyttäytymisen määrittelemiseksi, esimerkiksi <syntaxhighlight lang="pascal" inline> MB_ABORTRETRYIGNORE + MR_ICONQUESTION </syntaxhighlight> saa sovelluksen näyttämään kysely (?) -kuvakkeen laatikossa, jossa on kolme painiketta: ABORT RETRY IGNORE.
 +
 +
Funktio palauttaa kokonaisluvun arvon, joka vastaa painettua painiketta. Sen arvo voidaan määrittää vakioiden [IDOK..IDHELP] perusteella
 +
Sitä voidaan kutsua kuin aliohjelmakutsuna (kuten 'MessageBox()' [[statement/fi|käskynä]]
 +
tai 'Variable := MessageBox()' funktiokutsuna - katso esimerkki alla)
 +
 +
Esimerkki:
  
Function Application.MessageBox (Text, Caption: PChar; Flags: longint) : Integer;
+
<syntaxhighlight lang="pascal">
 +
uses
 +
  Forms, Dialogs, LCLType;
 
   
 
   
{ 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 }
+
procedure DisplayMessageBox;
 +
var
 +
  Reply, BoxStyle: Integer;
 +
begin
 +
  BoxStyle := MB_ICONQUESTION + MB_YESNO;
 +
  Reply := Application.MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
 +
  if Reply = IDYES then Application.MessageBox('Yes      ', 'Reply',MB_ICONINFORMATION)
 +
    else Application.MessageBox('No        ', 'Reply', MB_ICONHAND);
 +
end;
 +
</syntaxhighlight>
 +
 
 +
Huomaa, että tässä esimerkissä 'Yes' ja 'No' merkkijonot on täytetty välilyönneillä; muuten laatikko ei olisi riittävän leveä kuvatekstin näyttämiseksi oikein
 +
 
 +
<center> [[image:MessageBoxDemo.png]]  [[image:ReplyYes.png]]</center>
  
Funktion kutsussa parametreihin sisältyy (katso yllä olevaa esittelyä)
+
===MessageDLG===
  
* Text: (PChar tyyppinen) merkkijono joka näytetään ohjeena tai vihjeenä laatikossa
+
<syntaxhighlight lang="pascal">
* Caption:(PChar tyyppinen) merkkijono joka näytetään laatikon otsikkona;
+
function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
* Flags: (longint tyyppinen)- kokonaisluku joka muodostetaan lisäämällä eri vakioita toisiinsa määrittelemään
+
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
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.
+
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;  
 +
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 +
</syntaxhighlight>
  
Funktio palauttaa kokonaisluvun (integer) joka vastaa nappia jota oli painettu. Sen arvo määräytyy vakioiden  [IDOK..IDHELP] mukaan
+
Tämän funktion kaksi versiota, esim. Ensimmäinen 'Caption' -parametri on valinnainen; jos se jätetään pois, otsikkotekstitys puuttuu ruudusta
  
Sitä voidaan myös kutsua kuin aliohjemaa (kun käytetään pelkkää 'MessageBox()'
+
Tämä on kaikkein täydellisin ja yksityiskohtaisin viestien valintaikkunoista, ja antaa ohjelmoijalle huomattavan mahdollisuuden hallita valintaikkunan ulkoasua.
-lausetta funktiokutsutavan 'Variable := MessageBox()' tilalla - katso esimerkki alla)
+
Laatikon tyyppiä ja sen kuvaketta määrittelevät parametrit ovat pikemminkin [[Set/fi|set]] tyyppisiä kuin kokonaislukuja. Painikkeet voidaan määrittää [[square brackets/fi|hakasulkeissa]] esim.
 +
<syntaxhighlight lang="pascal" inline>[mbRetry, mbIgnore, mbAbort, mbCancel]</syntaxhighlight>. HelpCtx-parametria ei ole tällä hetkellä toteutettu, sen tulisi olla nolla. Funktion paluuarvo on painetun painikkeen tunnus, ilmaistuna kokonaislukuna (katso alla olevat määritelmät, [mrNone..mrAll]).
  
Esimerkki
+
Esimerkki:
  
Uses Forms, Dialogs, LCLType;
+
<syntaxhighlight lang="pascal">
 +
uses
 +
  Forms, Dialogs, LCLType, Controls;
 
   
 
   
Procedure DisplayMessageBox;
+
procedure TryMessageDlg;
  var reply, boxstyle: integer;
+
begin
  begin
+
  if MessageDlg('Question', 'Do you wish to Execute?', mtConfirmation,
    with application do begin
+
  [mbYes, mbNo, mbIgnore],0) = mrYes
      boxstyle :=  MB_ICONQUESTION + MB_YESNO;
+
  then { Execute rest of Program };
      reply :=  MessageBox ('Press either button', 'MessageBoxDemo', boxstyle);
+
end;
      if reply = IDYES then MessageBox ('Yes      ', 'Reply',MB_ICONINFORMATION)
+
</syntaxhighlight>
      else MessageBox ('No        ', 'Reply', MB_ICONHAND)
 
  end;
 
  
Huomaa että tässä esimerkissä 'Yes' ja 'No' merkkijonoihin on sisälletty välilyöntejä. Muutoin laatikossa
+
<center> [[image:Question.png]]</center>
ei välttämättä olisi kylliksi tilaa näyttää koko otsikkoa.
 
  
<center> http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png  http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png
 
</center>
 
  
===MessageDLG===
+
=== QuestionDlg ===
 +
 
 +
Kysymysvalintaikkunassa voidaan muuttaa painikkeiden kuvatekstejä ja asettaa oletus- ja peruutuspainikkeita
 +
 
 +
Esimerkki:
 +
 
 +
<syntaxhighlight lang="pascal">
 +
    case QuestionDlg ('Caption','Message',mtCustom,[mrYes,'Positive', mrNo, 'Negative', 'IsDefault'],'') of
 +
        mrYes: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrOK,'That is right'],'');
 +
        mrNo:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrOK,'Exactly'],'');
 +
        mrCancel: QuestionDlg ('Caption','You canceled the dialog with ESC or close button.',mtCustom,[mrOK,'Exactly'],'');
 +
    end;
 +
</syntaxhighlight>
  
function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;
+
<center> [[image:QuestionDlg.png]]</center>
                    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.
+
{{Note|Jos käyttäjä peruuttaa valintaikkunan eikä 'IsCancel' -painiketta ole määritetty, mrCancel palautetaan! Jos haluat ohjata ESC/close määritettyä painiketta, käytä 'IsCancel' -parametria heti peruutuspainikkeen jälkeen.}}
 +
{{Note|Paikallisten aakkosten kirjainten käyttäminen UnicodeString-tyyppisinä painikkeina voi aiheuttaa virheitä (löytyi v1.6.4).}}
  
Tämä on monipuolisin viestinvälitys dialogi ja sallii ohjelmoijalla eniten säätömahdollisuuksia
+
Edistyksellinen esimerkki painikkeille (promptdialog.inc)
  
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]
+
<syntaxhighlight lang="pascal">
 +
    [mrOk,mrCancel,'Cancel now',mrIgnore,300,'Do it','IsDefault']
 +
</syntaxhighlight>
  
HelpCtx parametriä ei ole vielä toteutettu ja se pitäisi asettaa nollaksi.
+
Tämän tuloksena saadaan 4 painonappia:
Funktion paluuarvo kertoo mitä näppäintä on painettu. Se kerrotaan kokonaislukuna (integer) (Katso tämän sivun lopussa olevia määrittelyä [mrNone..mrAll]).
+
* 'Ok' palauttaa mrOk
 +
* 'Cancel now' palauttaa mrCancel
 +
* 'Ignore' palauttaa mrIgnore
 +
* 'Do it' palauttaa 300. Tämä on oletuspainike.
  
Esimerkki
+
Yleensä Lazarus-valintaikkunoiden painikkeissa on kuvakkeet. Kuvakkeiden näkymisen estämiseksi voidaan käyttää viestien tulosten standardoimattomia arvoja. Tällä hetkellä korkein standardoitu arvo on 11. Esimerkiksi:
  
Uses forms, dialogs, lcltype, controls;
+
<syntaxhighlight lang="pascal">
   
+
  case QuestionDlg ('Caption','Message',mtCustom,[20,'Positive', 21, 'Negative',22,'I do not know','IsCancel'],'') of
procedure TryMessageDlg;
+
    20: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[20,'That is right'],'');
  begin
+
    21: QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[21,'Exactly'],'');
  if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation,  
+
    22: QuestionDlg ('Caption','So, please find out!',mtCustom,[22,'Maybe'],'');
                  [mbYes, mbNo, mbIgnore],0) = mrYes
 
  then { Execute rest of Program };
 
 
   end;
 
   end;
 +
</syntaxhighlight>
 +
 +
Työn helpottamiseksi vakiot voidaan määritellä. Esimerkiksi:
 +
 +
<syntaxhighlight lang="pascal">
 +
const
 +
  mrNoneNI=      20;
 +
  mrOkNI=        mrNoneNI+1;
 +
  mrCancelNI=    mrNoneNI+2;
 +
  mrAbortNI=    mrNoneNI+3;
 +
  mrRetryNI=    mrNoneNI+4;
 +
  mrIgnoreNI=    mrNoneNI+5;
 +
  mrYesNI=      mrNoneNI+6;
 +
  mrNoNI=        mrNoneNI+7;
 +
  mrAllNI=      mrNoneNI+8;
 +
  mrYesToAllNI=  mrNoneNI+10;
 +
  mrCloseNI=    mrNoneNI+11;
 +
  mrLastNI=      mrCloseNI;
 +
begin
 +
  case QuestionDlg ('Caption','Message',mtCustom,[mrYesNI,'Positive', mrNoNI, 'Negative',mrCancelNI,'I do not know','IsCancel'],'') of
 +
    mrYesNI: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrYesNI,'That is right'],'');
 +
    mrNoNI:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrNoNI,'Exactly'],'');
 +
    mrCancelNI:  QuestionDlg ('Caption','So, please find out!',mtCustom,[mrCancelNI,'Maybe'],'');
 +
  end; //case
 +
end;
 +
</syntaxhighlight>
  
 +
<center> [[File:QuestionDlgNoButIcons.png]] </center>
  
<center> http://lazarus-ccr.sourceforge.net/kbdata/Question.png
+
== Tekstinluku dialogit ==
</center>
 
  
== Tekstinluku dialogit==
 
 
===InputBox===
 
===InputBox===
Tekstinluku dialogi joka näyttää viestin ja odottaa käyttäjän antamaa tekstiä.
+
Tekstinluku dialogi: näyttää viestin ja odottaa käyttäjän tekstinsyöttöä
  
Function InputBox(const ACaption, APrompt, ADefault : String) : String;
+
<syntaxhighlight lang="pascal">function InputBox(const ACaption, APrompt, ADefault: String): String;</syntaxhighlight>
  
Näytettävässä laatikossa on määritelty otsikko, kehoite ja käyttäjälle oletuksena annettu merkkijono.
+
Näyttää laatikon, jossa on määritetty otsikko ja kehote, ja odottaa käyttäjän syöttämää tekstiä tekstikenttään. Oletusmerkkijono voidaan valinnaisesti näyttää tekstiruudussa. Käyttäjän syöttämä tai oletusmerkkijono palautetaan funktion tuloksena.
Käyttäjän kirjoittama teksti tai oletusmerkkijono palautetaan funktion tuloksena.
 
Esimerkki
 
  
Uses forms, lcltype, dialogs, controls;
+
Esimerkki:
 +
 
 +
<syntaxhighlight lang="pascal">
 +
uses
 +
  Forms, LCLType, Dialogs, Controls;
 
   
 
   
procedure TryInputBox;
+
procedure TryInputBox;
var userstring: string;
+
var  
begin
+
  UserString: string;
  userstring := InputBox ('Get some text input',  
+
begin
                          'Please type in some   information', 'Some sample text');
+
  UserString := InputBox('Get some text input',  
  ShowMessage (userstring)
+
    'Please type in some information', 'Some sample text');
end;
+
  ShowMessage(UserString)
 +
end;
 +
</syntaxhighlight>
  
 
===InputQuery===
 
===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)  
+
<syntaxhighlight lang="pascal">
Puuttuva MaskInput parametri toimii samalla tavalla kuin jos se olisi asetettu false:ksi.
+
function InputQuery(const ACaption, APrompt : String;
 +
  MaskInput : Boolean; var Value : String) : Boolean;
 +
function InputQuery(const ACaption, APrompt : String;
 +
  var Value : String) : Boolean;
 +
</syntaxhighlight>
 +
 
 +
Kaksi tämän funktion erilaista versiota, joka näyttää kehotteen ja odottaa käyttäjän syöttämää tekstitietoa; Ensimmäinen sisältää MaskInput-[[Boolean/fi|boolean]]-parametrin, joka määrittää, onko käyttäjän syöttämät tekstitulokentässä [[*/fi|asteriskimerkki (*)]] peittämässä tekstiä (kuten salasanan syöttämisen aikana), kun taas toinen jättää tämän ominaisuuden pois
 +
Käyttäjän syöttämä teksti palautetaan muuttujan parametriin 'Value'; function tulos on boolean arvo, joka paluuarvo on [[True/fi|<syntaxhighlight lang="pascal" inline>true</syntaxhighlight>]], jos OK-painiketta painetaan, tai [[False|<syntaxhighlight lang="pascal" inline>false</syntaxhighlight>]], jos ikkuna suljettiin jollain muulla mekanismilla (kuten klikkaamalla 'Sulje'/'close' -kuvaketta yläotsikkopalkissa).
 +
MaskInput-parametrin ohittaminen vastaa sen <syntaxhighlight lang="pascal" inline>false</syntaxhighlight> arvon asettamista.
  
Esimerkki
+
Esimerkki:
  
Uses forms, lcltype, dialogs, controls;
+
<syntaxhighlight lang="pascal">
 +
uses
 +
  Forms, LCLType, Dialogs, Controls;
 
   
 
   
procedure TryInputQuery;
+
procedure TryInputQuery;
var QueryResult: boolean;
+
var  
  userstring: string;
+
  QueryResult: Boolean;
begin
+
  UserString: string;
  if InputQuery ('Question', 'Type in some data', TRUE, userstring)
+
begin
  then ShowMessage (userstring)
+
  if InputQuery('Question', 'Type in some data', TRUE, UserString)
  else  
+
  then ShowMessage(UserString)
  begin
+
  else  
    InputQuery ('Don''t be silly', 'Please try again', userstring);
+
  begin
    ShowMessage (userstring)
+
    InputQuery('Don''t be silly', 'Please try again', UserString);
  end
+
    ShowMessage(UserString);
end;
+
  end
 +
end;
 +
</syntaxhighlight>
  
<center> http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png  </center>
+
<center> [[image:MessageDlgQuestion.png]] </center>
  
<center> http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png </center>
+
<center> [[image:DontBeSillly.png]] </center>
  
 
===PasswordBox===
 
===PasswordBox===
Function PasswordBox(const ACaption, APrompt : String) : String;
 
  
Funktion käyttäytyminen on hyvin samanlaista kuin InputQuery funktion kun MaskInputparameri on asetettu TRUE:ksi.
+
<syntaxhighlight lang="pascal">Function PasswordBox(const ACaption, APrompt : String) : String;</syntaxhighlight>
Erona on että funktio palauttaa saadun merkkijonon (Siis vähän samanlailla kuin funktio InputBox).
+
 
 +
Toimii hyvin samalla tavalla kuin InputQuery-toiminto, jossa MaskInput = TRUE; ero on siinä, että kirjoitettu salasana palautetaan funktion tuloksena (kuten InputBox).
  
 
==Viestinvälitys-dialogeissa käytetyt tyypit ja vakiot==
 
==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:
+
Useat valintaikkunoiden kanssa käytettävät vakiot ja tyypit on ennalta määritetty [[LCL/fi|LCL]]-kirjastossa:
  
 +
const { määritelty LCLType.pp }
  
const { Määritelty tiedostossa LCLType.pp }
+
Kokonaislukuvakioita painityyppien määrittelemiseksi
 +
ja kuvakkeita näytettäväksi MessageBoxissa
  
 +
<syntaxhighlight lang="pascal">
 +
MB_OK = $00000000;
 +
MB_OKCANCEL = $00000001;
 +
MB_ABORTRETRYIGNORE = $00000002;
 +
MB_YESNOCANCEL = $00000003;
 +
MB_YESNO = $00000004;
 +
MB_RETRYCANCEL = $00000005;
  
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_ICONHAND = $00000010;
+
MB_ICONQUESTION = $00000020;
MB_ICONQUESTION = $00000020;
+
MB_ICONEXCLAMATION = $00000030;
MB_ICONEXCLAMATION = $00000030;
+
MB_ICONASTERICK = $00000040;
MB_ICONASTERICK = $00000040;
+
MB_ICONWARNING = MB_ICONEXCLAMATION;
MB_ICONWARNING = MB_ICONEXCLAMATION;
+
MB_ICONERROR = MB_ICONHAND;
MB_ICONERROR = MB_ICONHAND;
+
MB_ICONINFORMATION = MB_ICONASTERICK;
MB_ICONINFORMATION = MB_ICONASTERICK;
+
</syntaxhighlight>
 
 
  
Kokonaislukuvakioiden määrittely arvosta joka palautetaan MessageBox -funktiosta kun vastaavaa painiketta on painettu
+
Kokonaislukuvakioita, jotka määrittelevät palautusarvon MessageBoxista sen mukaan, mitä painiketta painettiin
  
IDOK = 1; ID_OK = IDOK;
+
<syntaxhighlight lang="pascal">
IDCANCEL = 2; ID_CANCEL = IDCANCEL;
+
IDOK = 1; ID_OK = IDOK;
IDABORT = 3; ID_ABORT = IDABORT;
+
IDCANCEL = 2; ID_CANCEL = IDCANCEL;
IDRETRY = 4; ID_RETRY = IDRETRY;
+
IDABORT = 3; ID_ABORT = IDABORT;
IDIGNORE = 5; ID_IGNORE = IDIGNORE;
+
IDRETRY = 4; ID_RETRY = IDRETRY;
IDYES = 6; ID_YES = IDYES;
+
IDIGNORE = 5; ID_IGNORE = IDIGNORE;
IDNO = 7; ID_NO = IDNO;
+
IDYES = 6; ID_YES = IDYES;
IDCLOSE = 8; ID_CLOSE = IDCLOSE;
+
IDNO = 7; ID_NO = IDNO;
IDHELP = 9; ID_HELP = IDHELP;
+
IDCLOSE = 8; ID_CLOSE = IDCLOSE;
 +
IDHELP = 9; ID_HELP = IDHELP;
 +
</syntaxhighlight>
  
Määrittää mikä painike on oletuspainike (ensimmäinen, toinen, kolmas)
+
Määrittämään, onko ensimmäinen, toinen tai kolmas painike oletusasetus
  
MB_DEFBUTTON1 = $00000000;
+
<syntaxhighlight lang="pascal">
MB_DEFBUTTON2 = $00000100;
+
MB_DEFBUTTON1 = $00000000;
MB_DEFBUTTON3 = $00000200;
+
MB_DEFBUTTON2 = $00000100;
MB_DEFBUTTON4 = $00000300;
+
MB_DEFBUTTON3 = $00000200;
 +
MB_DEFBUTTON4 = $00000300;
 +
</syntaxhighlight>
  
Flags-parametri muodostetaan funktiossa MessageBox lisäämällä painiketta vastaava vakio [MB_OK..MB_RETRYCANCEL],
+
MessageBoxin Flags-parametri rakennetaan lisäämällä painikevakio [MB_OK..MB_RETRYCANCEL],
optiona näytettävään kuvakkeen vakioon [MB_ICONHAND..MB_ICONINFORMATION]
+
valinnainen kuvakevakio [MB_ICONHAND..MB_ICONINFORMATION]
ja optiona olevaan oletuspainikkeen vakioon [MB_DEFBUTTON1..MB_DEFBUTTON3]
+
ja valinnainen oletuspainike vakio [MB_DEFBUTTON1..MB_DEFBUTTON3]
  
Types for use in MessageDlg, which needs parameters
+
Tyypit käytettäväksi MessageDlg-sovelluksessa, joka tarvitsee parametreja
AType of TMsgDlgType and AButtons of TMSgDlgButtons
+
AType of TMsgDlgType ja TMSgDlgButtons
  
  
{ Määritelty tiedostossa Dialogs.pp }
+
<syntaxhighlight lang="pascal">
type
+
{ määritelty Dialogs.pp }
 +
type
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
                     mtCustom);
 
                     mtCustom);
Line 225: Line 328:
 
    
 
    
 
   
 
   
const
+
const
 
   mbYesNoCancel = [mbYes, mbNo, mbCancel];
 
   mbYesNoCancel = [mbYes, mbNo, mbCancel];
 
   mbOKCancel = [mbOK, mbCancel];
 
   mbOKCancel = [mbOK, mbCancel];
Line 243: Line 346:
 
   
 
   
 
   
 
   
{ Määritelty tiedostossa Controls.pp }
+
{ määritelty Controls.pp }
const
+
const
 
   mrNone = 0;
 
   mrNone = 0;
 
   mrOK = mrNone + 1;
 
   mrOK = mrNone + 1;
Line 257: Line 360:
 
   mrYesToAll = mrNone + 10;
 
   mrYesToAll = mrNone + 10;
 
   mrLast = mrYesToAll;
 
   mrLast = mrYesToAll;
 +
</syntaxhighlight>

Latest revision as of 10:38, 10 November 2019

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;

Jokainen näistä komponenteista aiheuttaa sen, että näyttöön tulee pieni ponnahdusikkuna, joka sisältää joitain tietoja ja vaatii käyttäjän vastauksen: joko painikkeen painaminen tai jokin tekstin kirjoittamisen tai molemmat. Ohjelmoijalla on vain vähän hallintaa näiden ponnahdusikkunoiden muodosta, koosta tai sijainnista, mutta hän voi vaikuttaa niiden tekstisisältöön. Syy, miksi usein on useita hyvin samankaltaisia vaihtoehtoja, on sallia erilaisia menetelmiä komponentin kutsumiseen ja datan vastaanottamiseen aliohjelmasta (procedure) tai funktiosta. Nämä valintaikkunat saattavat olla alustasta riippuvaisia, ts. Ne voidaan näyttää eri tavalla. Esimerkiksi merkkijonot, jotka näkyvät kokonaan Windows XP: ssä, voivat olla katkaistu Windows 7: ssä.

Viestinvälitys dialogit

Viestinvälitys dialogit nä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 ennen paluuta kutsuvaan rutiiniin tai ohjelmaan. Tämä on modaalinen (modal) aliohjelmakutsu, joka näyttää "laatikon", ottaa hallinnan, eikä vapauta hallintaa ennenkuin sen OK-painonappia on painettu tai muulla tavalla valittu, ennenkuin palaa takaisin kutsukohtaansa.

Esimerkki:

program LazMessage;
uses 
  Dialogs;
begin
  ShowMessage('This is a message from Lazarus');
end.

On myös mahdollista luoda monirivinen viesti seuraavien rivierottimien avulla, ne kaikki toimivat:

monirivinen viestiesimerkki:

program LazMessage;
uses 
  Dialogs;
begin
  ShowMessage('This is a multilines' + sLineBreak + 'message!' );
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: merkkijono, joka näytetään kehotteena tai ohjeena laatikossa.
  • Caption: merkkijono, joka näytetään viestikentän yläosassa.
  • Flags: longint - integer jotka on rakennettu lisäämällä yhteen eri vakiot laatikon sisällön ja käyttäytymisen määrittelemiseksi, esimerkiksi MB_ABORTRETRYIGNORE + MR_ICONQUESTION saa sovelluksen näyttämään kysely (?) -kuvakkeen laatikossa, jossa on kolme painiketta: ABORT RETRY IGNORE.

Funktio palauttaa kokonaisluvun arvon, joka vastaa painettua painiketta. Sen arvo voidaan määrittää vakioiden [IDOK..IDHELP] perusteella Sitä voidaan kutsua kuin aliohjelmakutsuna (kuten 'MessageBox()' käskynä tai 'Variable := MessageBox()' funktiokutsuna - katso esimerkki alla)

Esimerkki:

uses 
  Forms, Dialogs, LCLType;
 
procedure DisplayMessageBox;
var 
  Reply, BoxStyle: Integer;
begin
  BoxStyle := MB_ICONQUESTION + MB_YESNO;
  Reply := Application.MessageBox('Press either button', 'MessageBoxDemo', BoxStyle);
  if Reply = IDYES then Application.MessageBox('Yes       ', 'Reply',MB_ICONINFORMATION)
    else Application.MessageBox('No         ', 'Reply', MB_ICONHAND);
end;

Huomaa, että tässä esimerkissä 'Yes' ja 'No' merkkijonot on täytetty välilyönneillä; muuten laatikko ei olisi riittävän leveä kuvatekstin näyttämiseksi oikein

MessageBoxDemo.png ReplyYes.png

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ämän funktion kaksi versiota, esim. Ensimmäinen 'Caption' -parametri on valinnainen; jos se jätetään pois, otsikkotekstitys puuttuu ruudusta

Tämä on kaikkein täydellisin ja yksityiskohtaisin viestien valintaikkunoista, ja antaa ohjelmoijalle huomattavan mahdollisuuden hallita valintaikkunan ulkoasua. Laatikon tyyppiä ja sen kuvaketta määrittelevät parametrit ovat pikemminkin set tyyppisiä kuin kokonaislukuja. Painikkeet voidaan määrittää hakasulkeissa esim. [mbRetry, mbIgnore, mbAbort, mbCancel]. HelpCtx-parametria ei ole tällä hetkellä toteutettu, sen tulisi olla nolla. Funktion paluuarvo on painetun painikkeen tunnus, ilmaistuna kokonaislukuna (katso alla olevat määritelmät, [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;
Question.png


QuestionDlg

Kysymysvalintaikkunassa voidaan muuttaa painikkeiden kuvatekstejä ja asettaa oletus- ja peruutuspainikkeita

Esimerkki:

    case QuestionDlg ('Caption','Message',mtCustom,[mrYes,'Positive', mrNo, 'Negative', 'IsDefault'],'') of
        mrYes: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrOK,'That is right'],'');
        mrNo:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrOK,'Exactly'],'');
        mrCancel: QuestionDlg ('Caption','You canceled the dialog with ESC or close button.',mtCustom,[mrOK,'Exactly'],'');
    end;
QuestionDlg.png
Light bulb  Huomaa: Jos käyttäjä peruuttaa valintaikkunan eikä 'IsCancel' -painiketta ole määritetty, mrCancel palautetaan! Jos haluat ohjata ESC/close määritettyä painiketta, käytä 'IsCancel' -parametria heti peruutuspainikkeen jälkeen.
Light bulb  Huomaa: Paikallisten aakkosten kirjainten käyttäminen UnicodeString-tyyppisinä painikkeina voi aiheuttaa virheitä (löytyi v1.6.4).

Edistyksellinen esimerkki painikkeille (promptdialog.inc)

    [mrOk,mrCancel,'Cancel now',mrIgnore,300,'Do it','IsDefault']

Tämän tuloksena saadaan 4 painonappia:

  • 'Ok' palauttaa mrOk
  • 'Cancel now' palauttaa mrCancel
  • 'Ignore' palauttaa mrIgnore
  • 'Do it' palauttaa 300. Tämä on oletuspainike.

Yleensä Lazarus-valintaikkunoiden painikkeissa on kuvakkeet. Kuvakkeiden näkymisen estämiseksi voidaan käyttää viestien tulosten standardoimattomia arvoja. Tällä hetkellä korkein standardoitu arvo on 11. Esimerkiksi:

  case QuestionDlg ('Caption','Message',mtCustom,[20,'Positive', 21, 'Negative',22,'I do not know','IsCancel'],'') of
     20: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[20,'That is right'],'');
     21:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[21,'Exactly'],'');
     22:  QuestionDlg ('Caption','So, please find out!',mtCustom,[22,'Maybe'],'');
  end;

Työn helpottamiseksi vakiot voidaan määritellä. Esimerkiksi:

const
  mrNoneNI=      20;
  mrOkNI=        mrNoneNI+1;
  mrCancelNI=    mrNoneNI+2;
  mrAbortNI=     mrNoneNI+3;
  mrRetryNI=     mrNoneNI+4;
  mrIgnoreNI=    mrNoneNI+5;
  mrYesNI=       mrNoneNI+6;
  mrNoNI=        mrNoneNI+7;
  mrAllNI=       mrNoneNI+8;
  mrYesToAllNI=  mrNoneNI+10;
  mrCloseNI=     mrNoneNI+11;
  mrLastNI=      mrCloseNI; 
begin
  case QuestionDlg ('Caption','Message',mtCustom,[mrYesNI,'Positive', mrNoNI, 'Negative',mrCancelNI,'I do not know','IsCancel'],'') of
    mrYesNI: QuestionDlg ('Caption','So you mean „Yes“',mtCustom,[mrYesNI,'That is right'],'');
    mrNoNI:  QuestionDlg ('Caption','Oh, you mean „No“',mtCustom,[mrNoNI,'Exactly'],'');
    mrCancelNI:  QuestionDlg ('Caption','So, please find out!',mtCustom,[mrCancelNI,'Maybe'],'');
  end; //case
end;
QuestionDlgNoButIcons.png

Tekstinluku dialogit

InputBox

Tekstinluku dialogi: näyttää viestin ja odottaa käyttäjän tekstinsyöttöä

function InputBox(const ACaption, APrompt, ADefault: String): String;

Näyttää laatikon, jossa on määritetty otsikko ja kehote, ja odottaa käyttäjän syöttämää tekstiä tekstikenttään. Oletusmerkkijono voidaan valinnaisesti näyttää tekstiruudussa. Käyttäjän syöttämä 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;

Kaksi tämän funktion erilaista versiota, joka näyttää kehotteen ja odottaa käyttäjän syöttämää tekstitietoa; Ensimmäinen sisältää MaskInput-boolean-parametrin, joka määrittää, onko käyttäjän syöttämät tekstitulokentässä asteriskimerkki (*) peittämässä tekstiä (kuten salasanan syöttämisen aikana), kun taas toinen jättää tämän ominaisuuden pois Käyttäjän syöttämä teksti palautetaan muuttujan parametriin 'Value'; function tulos on boolean arvo, joka paluuarvo on true, jos OK-painiketta painetaan, tai false, jos ikkuna suljettiin jollain muulla mekanismilla (kuten klikkaamalla 'Sulje'/'close' -kuvaketta yläotsikkopalkissa). MaskInput-parametrin ohittaminen vastaa sen false arvon asettamista.

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('Don''t be silly', 'Please try again', UserString);
    ShowMessage(UserString);
  end
end;
MessageDlgQuestion.png
DontBeSillly.png

PasswordBox

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

Toimii hyvin samalla tavalla kuin InputQuery-toiminto, jossa MaskInput = TRUE; ero on siinä, että kirjoitettu salasana palautetaan funktion tuloksena (kuten InputBox).

Viestinvälitys-dialogeissa käytetyt tyypit ja vakiot

Useat valintaikkunoiden kanssa käytettävät vakiot ja tyypit on ennalta määritetty LCL-kirjastossa:

const { määritelty LCLType.pp }

Kokonaislukuvakioita painityyppien määrittelemiseksi ja kuvakkeita näytettäväksi MessageBoxissa

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;

Kokonaislukuvakioita, jotka määrittelevät palautusarvon MessageBoxista sen mukaan, mitä painiketta painettiin

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ämään, onko ensimmäinen, toinen tai kolmas painike oletusasetus

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

MessageBoxin Flags-parametri rakennetaan lisäämällä painikevakio [MB_OK..MB_RETRYCANCEL], valinnainen kuvakevakio [MB_ICONHAND..MB_ICONINFORMATION] ja valinnainen oletuspainike vakio [MB_DEFBUTTON1..MB_DEFBUTTON3]

Tyypit käytettäväksi MessageDlg-sovelluksessa, joka tarvitsee parametreja AType of TMsgDlgType ja TMSgDlgButtons


{ määritelty 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 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;