Показ логотипа при запуске приложения 2
|
Юзер - это человек, который иногда наступает на грабли.
Чайник - это человек, который всегда наступает на грабли.
Ламер - это человек, который считает, что не наступает на грабли, но на самом деле наступает на них чаще, чем чайник.
Программист - это человек, который изобретает новые грабли.
Билл Гейтс - некое мифическое существо, покровителей граблей.
МикроСофт - завод по производству граблей.
Ассемблер - язык программирования, в котором программист наступает на грабли миллион раз в секунду.
|
Мне также понадобился логотип для одного из моих клиентов, поэтому я загрузил
файл из публичной библиотеки и включил в свое приложение модуль, позволяющий
выводить логотип при загрузке программы. В этом модуле было около 150 строк
кода, но у меня свое понятие относительно количества необходимого для этого дела
кода, поэтому я просто удалил лишнее, для которого просто не нашел применения.
После моего хирургического вмешательства осталось всего пять или шесть строк
кода, вплетенных в скелет формы. После сравнения моего кода с демо-проектом,
поставляемым с Delphi (MastApp), я понял, что мой код много проще.
Я не хочу обвинять автора в том, что он плохо сделал свою работу. Без его
помощи этого кода просто бы не существовало. Я нахожу, что изучение чужого кода
всегда существенно расширяет и дополняет багаж программиста.
Код производит впечатление, что создание окошка с логотипом в Delphi плевое
дело. Ну за дело: сначала, с помощью редактора, создайте форму (лучшим решением
будет создание нового проекта в отдельном каталоге) и установите лучшие, на ваш
художественный взгляд, значения таких свойств, как позиция, размеры и границы.
Затем создайте обработчик события OnDeactivate и добавьте единственную строчку
кода, в которой мы освобождаем форму. И, последнее, добавьте секцию
initialization с тремя строчками кода, которые создают, выводят и обновляют
форму.
Для того, чтобы использовать новое окошко с логотипом, скопируйте
получившийся .PAS-файл в каталог с проектом, в котором вы намереваетесь его
использовать, и вставьте ссылку на модуль в самую верхнюю часть секции uses. НЕ
добавляйте форму к проекту.
Ниже приведен пример кода (форма имеет имя SplashForm, модуль обозван как
SPLASH). Мой код добавлен между закомментаренных блоков {>>вставить} и
{<<конец вставки}, весь остальной код генерируется Delphi.
type
TSplashForm = class(TForm)
[...labels, bitmaps, и пр., добавляется редактором Delphi...]
procedure FormDeactivate(Sender: TObject);
end;
var
SplashForm: TSplashForm;
implementation
{$R *.DFM}
{ Это шаманское место. Application.Run в нашем случае
вызывает программу деактивации.}
procedure TSplashForm.FormDeactivate(Sender: TObject);
begin
{>>вставить}
Free;
{<<конец вставки}
end;
{>>вставить}
initialization
begin
SplashForm := TSplashForm.Create(nil);
SplashForm.Show;
{ Я не уверен, но причина наличия здесь Update в том,
что, как мне кажется, приложение пока не может работать
c очередью своих сообщений}
SplashForm.Update;
end;
{<<конец вставки}
end.
|
В головном модуле после строчки USES (.DPR-файл) просто добавьте "SPLASH,"
(не заключайте это в кавычки). Это все. Никакой головной боли с таймерами,
никаких запусков отдельных приложений. Логотип быстро появляется и остается до
тех пор, пока приложение не начнет свою работу.
|