
Организация приложений
Создание многодокументных приложений (MDI). Вывод заставки. Вывод информационного окна. Запуск других приложений.
Создание простейших заставок
Нередко при запуске Windows-приложений перед работой приложения появляется заставка (в англоязычной литературе она называется Splash screen), содержащая информацию о запускаемом приложении и, возможно, иные сведения (серийный номер продукта, версию и пр.). Каким образом можно создать такую заставку?
Добавим к нашему приложению форму, свойство BorderStyle ее установим равным bsNone, поместим на нее метку и компонент TTimer. Свойство Interval компонента TTimer установим равным 1000, умноженное на число секунд, в течение которых заставка должна находиться на экране (значение 3000 соответствует 3 секундам).
Рис. 1. Форма, которая должна появиться в качестве заставки
Создадим обработчик события OnTimer компонента TTimer: В случае Delphi он выглядит так:
procedure TForm3.Timer1Timer(Sender: TObject);
begin
Close;
end;
В опциях проекта перенесем вновь созданную форму в раздел Available Forms.
Теперь создадим обработчик события OnCreate главной формы приложения, который в случае Delphi выглядит так:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form3:=TForm3.Create(Application);
Form3.ShowModal;
Form3.Free;
end;
Теперь перед запуском приложения на экране будет появляться заставка следующего вида:
Рис. 2. Заставка на этапе выполнения
Совет 2. Вывод информации о приложении на заставке
Если запустить какое-либо из приложений MS Office 97, на появляющейся при загрузке приложения заставке можно увидеть не только сведения о самом приложении, но также и регистрационный номер и фамилию пользователя. Как известно, эти сведения вводятся пользователем в процессе установки приложения, и в настоящее время принято хранить подобные сведения в реестре Windows. Если создать дистрибутив приложения с помощью наиболее часто используемого в нашей стране для этой цели средства InstallShield (или с помощью InstallShield Express, входящего в состав старших версий Delphi и C++Builder), в реестре Windows появится раздел, похожий на представленный на рис.3:
Рис. 3. Раздел реестра, создаваемый программой установки
В данном случае приложение MyApp версии 1.0 создано компанией Splash Screen Company, и при его установке были введены серийный номер 176-99027, а также имя пользователя и имя компании, в которой данный пользователь работает.
Если инсталляционное приложение создано не с помощью InstallShield, а с помощью иных средств (например, написано на Delphi), наименование раздела и ключей реестра могут отличаться от приведенных выше, но в любом случае они должны быть Вам известны.
Модифицируем нашу заставку так, чтобы на ней отображались содержащиеся в реестре имя пользователя и серийный номер. С этой целью добавим на созданную ранее форму две метки.
Рис. 4. Форма заставки после внесения изменений
Создадим обработчик события, связанный с созданием формы. В случае Delphi он имеет следующий вид:
procedure TForm2.FormCreate(Sender: TObject);
var key,ser,usr:string; Reg:TRegistry;
begin
try
Reg:=TRegistry.Create;
key:='SOFTWARE\Splash Screen Company\MyApp\1.0';
Reg.Rootkey:= HKEY_LOCAL_MACHINE;
Reg.OpenKey(key,false);
usr:=Reg.ReadString('Name');
ser:=Reg.ReadString('Serial');
Label2.Caption:='Пользователь: '+usr;
Label3.Caption:='Серийный номер: '+ser;
Reg.CloseKey;
Reg.Destroy;
except
Label2.Caption:='Unregistered user';
Label3.Caption:='Please register';
end;
end;
При этом в секции uses модуля, связанного с формой, следует сослаться на модуль registry.
В результате наша заставка на этапе выполнения в случае наличия в реестре соответствующего раздела приобретет следующий вид:
Рис. 5. Заставка с именем пользователя и серийным номером на этапе выполнения
Если же в реестре нет такого раздела, вместо имени пользователя и серийного номера будет выводиться сообщение о том, что пользователь не зарегистрирован.
Отметим, что при желании можно добавить в этот обработчик события код, анализирующий серийный номер и в случае, если он не удовлетворяет каким-либо заранее заданным требованиям, прекратить выполнение приложения (или запустить его демонстрационную версию).