Дијалошки прозори

У Windows апликацијама се често користе разни дијалог прозори. Неки од најчешће коришћених дијалог прозора су: ShowMessage, MessageDlg, OpenDialog, SaveDialog, FontDialog, ColorDialog, FindDialog, ReplaceDialog, PrintDialog, PrintSetupDialog, OpenPictureDialog i SavePictureDialog.

 

Што се тиче процедуре ShowMessage она је у облику

 

Procedure ShowMessage (const Poruka : string);

 

и њу смо већ помињали па би се након следеће наредбе ShowMessage(‘Neka poruka’) појавио информациони прозор који садржи само Ок дугме и поруку која је наведена у заградама типа TString, која у овом случају гласи Neka poruka, а овај прозор би затворили кликом на Ок дугме. Овакав прозор је у ствари информациони прозор чија је намена да обавести корисника о нечему и зато он садржи само Ок дугме а ако су нам потребни још неки дугмићи користићемо MessageDlg функцију. Уколико желимо да се појави овакав прозор али на одређеној позицији користићемо процедуру ShowMessagePos која је следећег облика :

 

Procedure ShowMessagePos (const Poruka : string; X,Y : integer);

 

ShowMessagePos (‘neka poruka’,100,100) би дала информациони прозор за поруком neka poruka на одређеној позицији  (100 , 100).

Уколико би желели да се појави прозор у коме би уносили неки податак у циљу његовог даљег обрађивања користили би функцију InputBox.

Функција InputBox је у облику :

 

InputBox(const Naslov, Tekst, Podrazumevana vrednost : string) : string;

 

где се податак уноси у виду стринга у оквиру текстуалног поља које се појављује у новом прозору а аргументи функције су : аргумент Наслов је у ствари наслов прозора који се појављује, аргумент Текст представља текст који би се појавио изнад текстуалног поља у који се уноси стринг а аргумент Подразумевана вредност представља у ствари подразумевану вредност тог стринга који се уноси у едит контроли.

Тако би наредба

S:=InputBox(‘Prozor za pretragu’, ‘Unesite tekst koji tražite’, ‘Početni tekst’) отворила прозор са насловом Прозор за претрагу у коме би изнад Едит контроле писало Унесите текст који тражите док би се у Едит контроли унапред налазио текст Почетни текст, док би се текст који је унет у Едит контроли обрађивао у облику стринга S. Ако се за почетни текст наведе ‘ ‘, едит контрола би била празна.

Пример:

овај инпут бокс је добијен кодом

s:=inputbox(‘pozdrav’,’unesi svoje ime’,“);

где је s стринговна променљива која прима вредност коју корисник унесе у едит контролу у инпутбоксу.

 

овај инпут бокс је добијен кодом

v:=strtoint(inputbox(‘unos’,s+’, unesi svoju visinu’,“));

где је v целобројна променљива која прима вредност коју корисник унесе у инпутбокс (морамо пребацити стринг у интеџер). У поруци у инпутбоксу се налази и вредност променљиве s, тј. оно што је унето у претходном уносу.

Код:

t:= strtoint(inputbox(‘unos’,s+’, unesi svoju tezinu’,“));

као и у претходном инпутбоксу

 

 

 

p:=  inputbox(‘unos’,s+’, unesi pol (m/z)’,“);

 

 

 

 

након рачунања идеалне тежине особе

if p=’m’ then  it:=v-100 else if p=’z’ then it:=v-110;

добијени резултат приказујемо у дијалог боксу (messagedlg)

 

 

 

 

код:

 

if t>it then  messagedlg(s+’ treba da oslabite ‘+ inttostr(t-it) +’ kg’,mtInformation,[mbyes],0)

else

if t<it then  messagedlg(s+’ treba se ugojite ‘+ inttostr(it-t) +’ kg’,mtInformation,[mbyes],0)

else

messagedlg(s+’ imate idealnu tezinu’,mtInformation,[mbyes],0)

 

Функција MessageDlg даје прозор с више дугмади и више опција и њен потпуни облик је следећи :

 

Function MessageDlg (const Poruka : string ; TipDijaloga : TmsgDlgType ;

 

Dugmad : TmsgDlgButtons ; Pomoc : Longint) : Word;

 

Први аргумент Порука је типа TString и представља текст(поруку) која се исписује у прозору, други аргумент ТипДијалога је типа TmsgDlgType и он представља тип дијалог прозора, трећи аргумент Дугмад је типа TmsgDlgButtons и на основу њега бирамо која ће се дугмад појавити у нашем прозору а четврти аргумент Pomoc нам указује какву ће помоћ добити корисник. Функција MessageDlg враћа вредност типа Word и она указује на то које је дугме корисник притиснуо.

Што се тиче првог аргумента Порука он је потпуно јасан а што се тиче четвртог аргумента Помоћ стављаћемо увек вредност 0, док други и трећи аргумент ТипДијалога и Дугмад захтевају мало више објашњења. Други аргумент ТипДијалога, указује на врсту дијалог прозора који ће се појавити и ту се пре свега мисли на неки начин на изглед прозора, односно сличицу на прозору, и он може имати следеће вредности : mtWarning, mtError, mtInformation, mtConfirmation и mtCustom. Ти аргументи значе следеће : mtWarning – прозор упозорења с великим ! у позадини, mtError – прозор о грешци с великим x у позадини, mtInformation – информациони прозор с великим i у позадини, mtConfirmation – прозор за потврду с великим ? у позадини и mtCustom – обичан прозор без икакве позадине. Трећи аргумент Дугмад као што смо рекли дефинише које дугмиће ћемо имати на прозору и он може имати следеће вредности : mbYes , mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll i mbHelp. Могу да се користе и вредности  mbYesNoCancel, mbOKCancel, mbAbortRetryIgnore, које представљају скупове дугмади из наведене групе.

На пример следећа функција MessageDlg (‘Da li ste sigurni’, mtConfirmation, [mbYes,mbNo,mbCancel],0) би изазвала појављивање дијалог прозора с поруком ‘Да ли сте сигурни’ који би био типа прозора за потврду и на себи имао думад Yes,No i Cancel (обратити пажњу да су ови аргументи у угластим заградама) и резултујућа вредност ове функције би имала вредност у зависности које би дугме корисник притиснуо па би на основу те резултујуће вредности писали одговарајући код. Значи овде би на класичан начин узимали информације од корисника и на основу тога преузимали одговарајуће радње.

Пример:

i:=messagedlg(‘Da li ste sigurni?’,mtconfirmation,[mbyes,mbno,mbcancel],0);

if i=mryes then   showmessage(‘zaista ste sigurni’)

else if i=mrno then     showmessage(‘niste sigurni’);

 

 

 

 

Вредости функција указују на дугме помоћу којег је затворен прозор.

Ако је притиснуто дугме mbYes вредност је mryes, итд. (за дугме префикс mb , а за резултат функције префикс mr)

 

Advertisements