Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2007, 13:40   #1
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 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 ??? Впрочем, для маленьких приложений, у которых процесс загрузки занимает менее секунды, заставки действитейльно излишни


*********************************
И все в этом духе но что то это не прокатывает...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.11.2007, 13:44   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Очень много словесной шелухи. В чем вопрос? Какие ваши требования к заставке? Можете в двух словах описать? Только без цитирования статей...
mihali4 вне форума Ответить с цитированием
Старый 09.11.2007, 14:34   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

В двух словах нужна заставка которая отображает что приложение готовиться к запуску, а не заставка которая появляеться и исчезает мгновенно... а да того как она появиться не будет торчать курсор мыши с песочными часами...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.11.2007, 15:18   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

И этот вариант рассматривался на форуме. В форме с заставкой - таймер, по которому происходит запуск главного окна и уничтожение формы-заставки.
mihali4 вне форума Ответить с цитированием
Старый 09.11.2007, 15:26   #5
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию Создание заставки при старте программы

Тема эта уже обсуждалась на форуме, вот здесь:
http://programmersforum.ru/showthrea...F2%E0%E2%EA%F3
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 09.11.2007, 15:41   #6
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Я видил все сообщения на эту тему но там происходит все не честно
там заводиться таймер на 5 секеунд.... а если мое приложение грузиться скажем 3 секунды или 7 секунд тогда что?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.11.2007, 15:55   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Тогда смотри эту тему, начиная с седьмого поста: ProgressBar в заставке приложения
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 09.11.2007, 16:06   #8
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 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.
Stanislav вне форума Ответить с цитированием
Старый 11.11.2007, 04:48   #9
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 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;
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 11.11.2007, 23:47   #10
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Скажите а для чего Sleep(5000) просто застовляем окно отображаться 5 секунд... ?
А мне хотелось бы не импровизация заставки а реальная заставка которая отображаеться пока приложение готовиться к запуску.... или я ошибаюсь и этот пример подходит?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 11.11.2007 в 23:48. Причина: Ошибочку сделал
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Забавы с Windows (создание заставки) SCS Свободное общение 4 05.10.2007 12:53