![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заставка для программы [D7, WinXP]
linux © (2004-09-16 07:53:00)Хочу сделать заставку для своей программы. В FAQ написано: Объявляете ее свободной (availableForms). А где её объявлять?
menart (2004-09-16 13:35:00) [1]Я заставку использую, когда инициализирется база данных выполняются всякие процедуры и функции, по времени бывает до 30 сек. и пользователь жмет на иконку, а так он видит что что-то происходит и ждет ...
Amoeba (2004-09-16 11:39:00) [2]Готовый пример есть в демках, идущих с Delphi - см. MastApp.
MetalFan (2004-09-16 11:37:00) [3]а еще лучше сделать сплэш опциональным...
NAlexey (2004-09-16 10:58:00) [4]>КаПиБаРа © (16.09.04 10:47) [15]
Вот как раз автору и решать, быстро или не быстро загружается программа. Дать пользователю лишние 2 секунды рассмотреть заставку и своровать из его драгоценной жизни эти 2 секунды или убрать заставку вовсе. Да и еще, откуда ты узнаешь ворую я твое время или не ворую? Ну напишу я так:
StatusBar.SimpleText := 'Initializing data...'
Sleep(5000);
И ты поверишь.
kukuikar (2004-09-16 10:52:00) [5]ребята, вы тут развли демагогию.
надо-ненадо...
какая разница, человек спросил как - помогите или не тратьте саое драгоценное время.
оно вам понадобится для того чтобы рассмотреть заставу автора вопроса:)
КаПиБаРа (2004-09-16 10:47:00) [6]NAlexey © (16.09.04 10:38) [12]
Если же заставка мелькнет не дав себя рассмотреть, то это действительно может разозлить.
Я запускаю программу 20-30 раз день. Если она будет воровать МОЕ время на заставку - это меня очень разозлит. Если программа загружается быстро, то заставка ей не нужна.
=================================
"Нет времени на медленные танцы!"
Владимир Вишневский
=================================
NAlexey (2004-09-16 10:45:00) [7]>Homer Simpson © (16.09.04 10:42) [13]
Возможно...
Homer Simpson (2004-09-16 10:42:00) [8]>NAlexey © (16.09.04 10:38) [12]
Тогда это не заставка (ИМХО). Я так понимаю, что "заставка", это то, что появляется при каждом запуске программы и показывает прогресс загрузки/инициализации. Если же нет, то ее лучше поместить в меню, например в "Help/About"
NAlexey (2004-09-16 10:38:00) [9]>Homer Simpson © (16.09.04 10:30) [11]
Наверное не соглашусь, nag-screen и загрузочный сплеш разные вещи. Первый служит для намеренного раздражения пользователя, например в shareware программах, второй для информирования о загружаемой программе. Пользователю необходимо дать время рассмотреть первоначальную информацию которую хотел бы дать разработчик. Если же заставка мелькнет не дав себя рассмотреть, то это действительно может разозлить.
Homer Simpson (2004-09-16 10:30:00) [10]2 NAlexey © (16.09.04 10:21) [9]
"Сплэш" - то же, что и nag-screen, является источником сильного раздражения пользователя.
Homer Simpson (2004-09-16 10:27:00) [11]2 NAlexey © (16.09.04 10:17) [8]
Я читал об этом в книге С.Жаркова "Shareware". Это не первоисточник, но сейчас книги нет под рукой, чтобы точно сообщить, откуда там это взято.
NAlexey (2004-09-16 10:21:00) [12]>Homer Simpson © (16.09.04 10:00) [6]
Да и еще, как связаны заставка программы и юзабилити?
NAlexey (2004-09-16 10:17:00) [13]>Homer Simpson © (16.09.04 10:00) [6]
Где я могу прочитать что заставка должна висеть столько сколько загружается программа?
KSergey (2004-09-16 10:15:00) [14]> [6] Homer Simpson © (16.09.04 10:00)
> Заставка не должна висеть ни секунды больше, чем это необходимо
> (загрузка/инициализация). Почитайте про юзабилити
Ну не получается у них писать проги, которые грузятся дольше, чем ворд
Ну что тут поделаешь? ;) А так хочется иметь "модный" вид с заставкой ;)
Homer Simpson (2004-09-16 10:00:00) [15]Заставка не должна висеть ни секунды больше, чем это необходимо (загрузка/инициализация). Почитайте про юзабилити
kukuikar (2004-09-16 09:57:00) [16]Добавь ещё одну форму: 'New Form'('Новая форма') из меню 'File' ('Файл'). Это окно и будет заставкой.
Из меню 'Project' ('Проект') выбрать команду 'Options'('Опции'). Зайти на закладку 'Forms'('Формы') и Form2 из списка автоматически создаваемых форм (Auto-Create forms) перенести в список доступных форм (Available forms)
На форму-заставку с закладки Systemвынести компонент Timer. В его свойстве Intervalустановить значение 5000, а в событии OnTimerнаписать:
Timer1.Enabled := false;
Это сделано для того, чтобы заставка была видна в период указанного времени – 5000 миллисекунд, т.е. 5 секунд.
Перейти в файл проекта, нажав Ctrl+F12 и выбрав Project1. Исходный код должен выглядеть так:
programProject1;
uses
Forms,
Unit1 in'Unit1.pas' {Form1},
Unit2 in'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Теперь внеси изменения в свой проект (подчеркнутые строки) и код должен стать таким:
programProject1;
uses
Forms,
Unit1 in'Unit1.pas' {Form1},
Unit2 in'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Form2 := TForm2.Create(Application);
Form2.Show;
Form2.Update;
while Form2.Timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TForm1, Form1);
Form2.Hide;
Form2.Free;
Application.Run;
end.
NAlexey (2004-09-16 09:48:00) [17]>Erik1 © (16.09.04 09:41) [3]
Правда если программа загружается быстро, увидишь просто мелькаение на экране. А как же насладится видом сплеша?:)
Erik1 (2004-09-16 09:41:00) [18]Нет лучше сделать подругому.
Application.Initialize;
SplashForm := TSplashForm.Create(nil);
SplashForm.Refresh;
Application.Title := 'MyApps';
Application.CreateForm(...);
Application.CreateForm(...);
Application.CreateForm(TMainForm, MainForm);
MainForm.Show;
FreeAndNil(SplashForm);
Application.Run;
В этом коде тратится меньше ресурсов и заставка предназначена не тормозить работу программы 5 min, а извещать о загрузке программы! Последнее заставка гарантировано убирается после показа главной формы.
KSergey (2004-09-16 08:10:00) [19]> А где её объявлять
Shift+Ctrl+F11
Forms
Перенести из Auto-create в Available
Далее см.
> [1] КаПиБаРа © (16.09.04 08:02)
КаПиБаРа (2004-09-16 08:02:00) [20]
program Project1;
uses
Forms, Windows,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
with TForm2.Create(nil) do
try
Caption := 'Заставка';
Show;
Sleep(5000);
finally
Free;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
// Application.CreateForm(TForm2, Form2);
Application.Run;
end.