![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
У меня такой вопрос пишу электронную книгу по Corel Draw не могу сделать к ней заставку.. Нашел на форуме разные способы реализации этой возможности но вся проблема в том что при запуске сначала курсор мыши переходит в песочные часы а потом моя заставка пролитает за доли секунды и запускает само приложение тоесть это не есть хорошо.. заставка создаеться для того чтоб пока приложение грузилось в это время была видна заставка а не песочные часы мыши.. так вот может кто нибудь писал такие заставки или может кто ссылочку кинет на ресурс а то в инете только я нахожу все одно и то же вот это:
Статья просто-напросто безграмотная... Заставки создаются совсем не так... Главная цель создания заставки - показать пользователю какую-либо информацию в процессе загрузки большой программы, чтобы пользователь не гадал, грузится программа, или не грузится почему-то... Кроме имени пользователя можно, например, выводить на заставку какую-либо информацию о процессе загрузки программы (как, например, делает это сам Дельфи, показывая имена загружаемых пакетов). Не надо трогать обработчик OnShow главной формы... не надо ставить на форму-заставку таймер... Ничего этого не надо ! А надо - вот как : 1) Создаем форму-заставку. Тут простор для фантазии безграничен. Единственное, что правильно написано в статье - нужно установить Border Style вашей формы в bsNone, и Position в poScreenCenter. Visible в False устанавливать НЕ НАДО ! Еще необходимо убрать заставку из списка авто-создаваемых (Auto-Create) форм, переместив ее в список доступных (Available) форм. Это можно сделать через диалог Project->Options на закладке Forms. 2) Допустим, мы создали форму-заставку согласно пункту 1, и назвали ее frmSplash. Наша задача теперь - запустить заставку в начале загрузки, и убрать ее в конце загрузки, до запуска самого кода приложения. Для этого открываем файл проекта нашего приложения (через меню Priject->ViewSource). В секцию Uses добавляем модули Windows и SysUtils. В конце файла-проекта видим примерно такие строчки : begin Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.Run; end. Application.Initialize выполняет инициализацию объекта-приложения. Application.CreateForm создает главную форму и выполняет ее событие OnCreate, в котором обычно производятся всякие предустановки, загрузка данных и т.д. Application.Run начинает выполнять код приложения... Мы создаем заставку после инициализации объекта Application, и убираем ее перед запуском основного кода : begin Application.Initialize; frmSplash := TfrmSplash.Create(Application); frmSplash.Show; frmSplash.Update; Application.CreateForm(TMainForm, MainForm); Sleep(500) ; frmSplash.Hide ; FreeAndNil(frmSplash) ; Application.Run; end. 3). Если на форме-заставке положить объект TLabel, то его свойство Caption можно изменять из обработчика OnCreate главной формы примерно так : frmSplash.Label1.Caption := 'Читаю конфигурацию...' ; frmSplash.Update ; Пример формы, создающей заставку, можно найти в стандартных примерах к Delphi 7, в папке Demos\Db\MastApp (файлы mastapp.dpr и Splash.pas). Там код, убирающий заставку, несколько упрощен по сравнению с моим, но основная идея та же... Если уж автор статьи не потрудился изучить стандартные примеры Delphi, то Бог ему судья... P.S. Даже последнее предложение этой статьи - чушь... Delphi давно уже не создает приложения объемом меньше 300 килобайт... какие там 100-150 ??? Впрочем, для маленьких приложений, у которых процесс загрузки занимает менее секунды, заставки действитейльно излишни ![]() ********************************* И все в этом духе но что то это не прокатывает...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Очень много словесной шелухи. В чем вопрос? Какие ваши требования к заставке? Можете в двух словах описать? Только без цитирования статей...
|
![]() |
![]() |
![]() |
#3 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
В двух словах нужна заставка которая отображает что приложение готовиться к запуску, а не заставка которая появляеться и исчезает мгновенно... а да того как она появиться не будет торчать курсор мыши с песочными часами...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
![]() |
![]() |
![]() |
#4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
И этот вариант рассматривался на форуме. В форме с заставкой - таймер, по которому происходит запуск главного окна и уничтожение формы-заставки.
|
![]() |
![]() |
![]() |
#5 |
Реанимируюсь...
Участник клуба
Регистрация: 19.07.2007
Сообщений: 1,445
|
![]()
Тема эта уже обсуждалась на форуме, вот здесь:
http://programmersforum.ru/showthrea...F2%E0%E2%EA%F3
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе... P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows" |
![]() |
![]() |
![]() |
#6 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
Я видил все сообщения на эту тему но там происходит все не честно
там заводиться таймер на 5 секеунд.... а если мое приложение грузиться скажем 3 секунды или 7 секунд тогда что?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
![]() |
![]() |
![]() |
#7 |
Реанимируюсь...
Участник клуба
Регистрация: 19.07.2007
Сообщений: 1,445
|
![]()
Тогда смотри эту тему, начиная с седьмого поста: ProgressBar в заставке приложения
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе... P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows" |
![]() |
![]() |
![]() |
#8 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
Еще лутше давайте разберем код:
procedure TForm1.FormCreate(Sender: TObject); begin label1.Caption:='Загрузка в memo1'; memo1.Lines.LoadFromFile('c:\1.txt' ); progressbar1.Position:=progressbar1 .Position+10; label1.Caption:='Загрузка в memo2'; memo1.Lines.LoadFromFile('c:\2.txt' ); progressbar1.Position:=progressbar1 .Position+10; label1.Caption:='Загрузка в listbox1'; listbox1.Items.LoadFromFile('c:\3.t xt'); progressbar1.Position:=progressbar1 .Position+10; label1.Caption:='Загрузка завершена'; end; Все прексрасно работает но он показывает загрузку тех компонент которые находяться формы заставки а как показать загрузку других компонент с других форм в этом createform написать так form2.memo1.Lines.LoadFromFile('c:\ 2.txt'); И получим ERROR каккую именно не помню вчера делал p.s А на заставку word или delphi тоже таймер воткнули на 5 секунд? И вообще машины у все разные и загрузка по разному протикает Кто нибудь может превести действительно реально работающию заставку а не импровизацию на нее?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 09.11.2007 в 17:40. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 11.10.2007
Сообщений: 384
|
![]()
Доброе время суток!!!
Както 3 месяца назат я мучился с заставкай!!! Ну и вот что вышло!!! Просто в самый конец своего кода скопируй и всё в принципе! ![]() Код HTML:
var
SplashImage: TImage;
SplashForm: TForm;
I : Integer;
begin
SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
// размеры показываемого изображения
ClientWidth := 405;
ClientHeight := 310;
end;
SplashImage := TImage.Create(SplashForm);
with SplashImage do
begin
SplashImage.Picture.LoadFromFile('splash.bmp');
Stretch := true;
Align := alClient;
Parent := SplashForm;
end;
with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;
// паказ изоброжения в секундах (1000 – одна секунда, 2000 – две секунды и т.д.)
Sleep(5000);
end;
Close;
Free;
end;
Не количеством плюсов измеряется репутация человека...!
|
![]() |
![]() |
![]() |
#10 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
![]()
Скажите а для чего Sleep(5000) просто застовляем окно отображаться 5 секунд... ?
А мне хотелось бы не импровизация заставки а реальная заставка которая отображаеться пока приложение готовиться к запуску.... или я ошибаюсь и этот пример подходит?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 11.11.2007 в 23:48. Причина: Ошибочку сделал |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Забавы с Windows (создание заставки) | SCS | Свободное общение | 4 | 05.10.2007 12:53 |