|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.11.2007, 13:40 | #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 ??? Впрочем, для маленьких приложений, у которых процесс загрузки занимает менее секунды, заставки действитейльно излишни ********************************* И все в этом духе но что то это не прокатывает...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
09.11.2007, 13:44 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Очень много словесной шелухи. В чем вопрос? Какие ваши требования к заставке? Можете в двух словах описать? Только без цитирования статей...
|
09.11.2007, 14:34 | #3 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
В двух словах нужна заставка которая отображает что приложение готовиться к запуску, а не заставка которая появляеться и исчезает мгновенно... а да того как она появиться не будет торчать курсор мыши с песочными часами...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
09.11.2007, 15:18 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
И этот вариант рассматривался на форуме. В форме с заставкой - таймер, по которому происходит запуск главного окна и уничтожение формы-заставки.
|
09.11.2007, 15:26 | #5 |
Реанимируюсь...
Участник клуба
Регистрация: 19.07.2007
Сообщений: 1,445
|
Создание заставки при старте программы
Тема эта уже обсуждалась на форуме, вот здесь:
http://programmersforum.ru/showthrea...F2%E0%E2%EA%F3
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе... P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows" |
09.11.2007, 15:41 | #6 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Я видил все сообщения на эту тему но там происходит все не честно
там заводиться таймер на 5 секеунд.... а если мое приложение грузиться скажем 3 секунды или 7 секунд тогда что?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
09.11.2007, 15:55 | #7 |
Реанимируюсь...
Участник клуба
Регистрация: 19.07.2007
Сообщений: 1,445
|
Тогда смотри эту тему, начиная с седьмого поста: ProgressBar в заставке приложения
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе... P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows" |
09.11.2007, 16:06 | #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. |
11.11.2007, 04:48 | #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;
Не количеством плюсов измеряется репутация человека...!
|
11.11.2007, 23:47 | #10 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Скажите а для чего Sleep(5000) просто застовляем окно отображаться 5 секунд... ?
А мне хотелось бы не импровизация заставки а реальная заставка которая отображаеться пока приложение готовиться к запуску.... или я ошибаюсь и этот пример подходит?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 11.11.2007 в 23:48. Причина: Ошибочку сделал |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Забавы с Windows (создание заставки) | SCS | Свободное общение | 4 | 05.10.2007 12:53 |