program TaskDialogTest; {$I Synopse.inc} // define HASINLINE CPU32 CPU64 uses {$ifdef FPC} Interfaces, {$endif} Forms, {$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads SysUtils, {$ifdef FPC} SynTaskDialog in '..\..\Samples\ThirdPartyDemos\Ondrej\SynTaskDialog4Lazarus\SynTaskDialog.pas', {$IFDEF MSWINDOWS} win32extra, // for TaskDialogIndirect {$ENDIF} {$else} SynTaskDialog, {$endif} SynCommons, mORMot, mORMotUILogin; {$ifndef FPC} {$R *.res} {$R Vista.res} // to enable XP/Vista/Seven theming {$endif} var MainCounter: integer; type TCallBack = class public class procedure TaskDialogButtonClicked(Sender: PTaskDialog; AButtonID: Integer; var ACanClose: Boolean); end; class procedure TCallBack.TaskDialogButtonClicked(Sender: PTaskDialog; AButtonID: Integer; var ACanClose: Boolean); begin if AButtonID=100 then begin inc(MainCounter); Sender^.SetElementText(tdeContent,IntToStr(MainCounter)); ACanClose := False; end; end; procedure Test; var aUserName, aPassWord: string; Task: TTaskDialog; TaskEx: TTaskDialogEx; res: boolean; Enum: TTaskDialogIcon; begin ShowMessage('This is just a message'); Task.Inst := 'Do you want to see the new dialog?'; Task.Content := 'This is the content'; Task.Buttons := 'Exit application without saving\nThis is not a good idea'#10+ 'Exit application with saving'; Task.Footer := 'Made with Synopse SynTaskDialog unit'; case Task.Execute([],100,[tdfUseCommandLinks],tiQuestion,tfiInformation) of 101: ShowMessage('Saving settings','Blabla',false); 100: ShowMessage('You should better save your data. You should better save your data.'+ 'You should better save your data.','Please RTFM instructions',true); else assert(false); end; Task.Footer := ''; aUserName := 'user'; res := InputQuery('Prompt','Edit the user name',aUserName); ShowMessage(aUserName,'You entered:',not res); Enum := tiQuestion; if InputSelectEnum('Enumeration selection','Please pick up one', TypeInfo(TTaskDialogIcon),Enum) then ShowMessage(GetEnumCaption(TypeInfo(TTaskDialogIcon),Enum),'You selected:') else ShowMessage('You pressed Cancel',true); ShowMessage('You selected Item #'+IntToStr( Choose('','Select one item,First,Second,Last one')+1)); Task.Inst := 'Save file to disk ?'; Task.Content := 'If you do not save changes, these will be lost'; Task.Buttons := 'Save'#10'Don''t Save'; Task.Execute([],100,[],tiQuestion); Task.Inst := 'Saving application settings'; Task.Content := 'This is the content'; Task.Buttons := ''; Task.Radios := 'Store settings in registry'#10'Store settings in XML file'; Task.Verify := 'Do no ask for this setting next time'; Task.VerifyChecked := true; Task.Footer := 'XML file is perhaps a better choice'; Task.Execute([],0,[],tiBlank,tfiInformation,200); ShowMessage(IntToStr(Task.RadioRes)); if Task.VerifyChecked then ShowMessage(Task.Verify); TaskEx.Init; // or TaskEx := DefaultTaskDialog; TaskEx.Base.Title := 'Task Dialog Test'; TaskEx.Base.Inst := 'Callback Test'; MainCounter := 0; TaskEx.Base.Content := '0'; TaskEx.Base.Buttons := 'Increment Counter'; TaskEx.CommonButtons := [cbCancel]; TaskEx.ButtonDef := 100; TaskEx.Flags := [tdfUseCommandLinks]; TaskEx.DialogIcon := tiQuestion; TaskEx.OnButtonClicked := TCallBack.TaskDialogButtonClicked; TaskEx.Execute; ShowMessage(FormatString('User=% Password=%',[aUserName,aPassword]), not TLoginForm.Login('Title','Please login',aUserName,aPassWord,true,'')); ShowMessage(FormatString('User=% Password=%',[aUserName,aPassword]), not TLoginForm.Login('Title','Please login again',aUserName,aPassWord,true,'')); end; procedure Test2; var vDialogue : TTaskDialog; begin vDialogue.Title := 'My Title'; vDialogue.Inst := 'Lorem ipsum dolor sit amet consectetuer'; vDialogue.Content := 'Libero interdum "' + 'necVestibulumidsedetwisinequetinciduntMorbiAliquampedetinciduntSedsempercursusorciipsumipsumegestasProinTortortempus' + '" (' + 'neque libero Curabitur Donec non Morbi et odio ' + 'Praesent. Felis tincidunt vitae turpis malesuada fames\n\n'+ 'sodales ac Suspendisse augue Aenean. Euismod Aenean non\n\n' + 'Morbi et vitae at hendrerit Quisque vitae accumsan. Tellus pretium adipiscing leo Curabitur\n\n' + 'Pellentesque turpis lacus Nulla.\n\n' + 'Curabitur faucibus risus eget nisl Lorem libero augue dui Nullam urna. Convallis'; vDialogue.Buttons := 'Button1'#10'Button2'; vDialogue.Verify := 'Ne plus afficher ce message'; vDialogue.VerifyChecked := False; vDialogue.Execute([], 100, [tdfUseCommandLinks], tiWarning); end; begin {$ifdef FPC} Application.Initialize; {$endif} Test; if @TaskDialogIndirect<>nil then begin ShowMessage('Now displaying the dialogs using TaskDialogIndirect'); @TaskDialogIndirect := nil; Test; end; end.