В данном примере посмотрим как заполнять прогресс бар, если нам нужно отобразить, скажем этапы инсталляции, или этапы какого-то процесса. Когда их всего несколько. В принципе, этот пример почти не отличается от предыдущего.
Посмотрим на код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses, uniGUIClasses, uniGUIRegClasses, uniGUIForm, uniGUIBaseClasses, uniButton, uniLabel, uniProgressBar, uniImage; type TMainForm = class(TUniForm) bStart: TUniButton; UniProgressBar1: TUniProgressBar; lLevel1: TUniLabel; lLevel2: TUniLabel; lLevel3: TUniLabel; Image: TUniImage; procedure bStartClick(Sender: TObject); procedure UniFormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; function MainForm: TMainForm; implementation {$R *.dfm} uses uniGUIVars, MainModule, uniGUIApplication, ServerModule; function MainForm: TMainForm; begin Result := TMainForm(UniMainModule.GetFormInstance(TMainForm)); end; procedure TMainForm.bStartClick(Sender: TObject); begin lLevel1.Caption := ''; lLevel2.Caption := ''; lLevel3.Caption := ''; Image.Hide; UniProgressBar1.Position := 0; bStart.Enabled := False; UniSession.Synchronize; Sleep(1000); UniProgressBar1.Position := 1; lLevel1.Caption := 'Level 1 Completed'; lLevel1.Font.Style := [fsBold]; UniSession.Synchronize; Sleep(1000); UniProgressBar1.Position := 2; lLevel2.Caption := 'Level 2 Completed'; lLevel2.Font.Style := [fsBold]; UniSession.Synchronize; Sleep(1000); UniProgressBar1.Position := 3; lLevel3.Caption := 'Level 3 Completed'; lLevel3.Font.Style := [fsBold]; UniSession.Synchronize; Sleep(1000); UniProgressBar1.Position := 4; Image.Show; bStart.Enabled := True; end; procedure TMainForm.UniFormCreate(Sender: TObject); begin Image.Picture.LoadFromFile(UniServerModule.FilesFolderPath + 'done.gif'); end; initialization RegisterAppFormClass(TMainForm); end. |
То есть, мы постоянно пишем UniSession.Synchronize, когда нам необходимо обновить форму на клиенте. Это ключевой момент данного примера.