Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Вниз

Супер-пупер-мега-сплэш   Найти похожие ветки 

 
Andy BitOff ©   (2009-08-18 11:15) [40]


> MsGuns ©   (18.08.09 11:09) [38]
> Хорошо, тогда конкретизитрую вопрос:Чем предложенный Вами
> способ лучше (оптимальнее, быстрее, эффективнее и т.д.)
> "классического", приведленного почти во всех учебниках Дельфи?

А можно глянуть на пример классической реализации? Или имеется ввиду пример из демок?


 
Andy BitOff ©   (2009-08-18 11:16) [41]


> MsGuns ©   (18.08.09 11:13) [39]
> Была попытка предложить привести более гибкую реализацию, действительно полезную в реальных проектах.

Дык, сделано уже. Вроде говорили...


 
Павел Калугин ©   (2009-08-18 11:17) [42]


> Была попытка предложить привести более гибкую реализацию,
>  действительно полезную в реальных проектах.

Без предложения обю оплате? странно.


 
Anatoly Podgoretsky ©   (2009-08-18 11:19) [43]

> Медвежонок Пятачок  (18.08.2009 10:39:30)  [30]

Напоминает вирус.

Внимание, сейчас винчестер будет отформатирован.
Вы согласны продолжать.
При нажатие хто на ОК, хоть на CANCEL - поздно, все равно буду форматировать.


 
Юрий Зотов ©   (2009-08-18 11:20) [44]

> Andy BitOff ©   (18.08.09 11:07) [37]

Да я вообще почти в шоке. Не ожидал даже. Казалось бы - что тут обсуждать-то? Есть пример, есть сырцы, хочешь - используй, хочешь - докрути как нравится, не хочешь - не используй совсем... так нет же...

Блин... сайт мастаков - это, конечно, круто. В любом чихе немедленно обнаруживается проблема - и начинается обсуждение на полтыщи постов... да еще и с неадекватным (мягко говоря) поведением некоторых...

> MsGuns ©   (18.08.09 11:09) [38]

Только тем, что сплэш работатет в своем собственном потоке и поэтому прорисовается гарантированно нормально, как бы сильно ни был загружен основной поток программы (и все остальные, если они в ней есть).


 
b z   (2009-08-18 11:20) [45]

Плохо то, что оснавная форма "прячется".
Запускаю к примеру из проводника, Splash нормально, оснавная, за проводником.


 
Anatoly Podgoretsky ©   (2009-08-18 11:23) [46]

> MsGuns  (18.08.2009 11:09:38)  [38]

А должен?
Это же совсем не обязательно, при предложение своей реализации.


 
Andy BitOff ©   (2009-08-18 11:23) [47]


> MsGuns ©   (18.08.09 11:13) [39]
>  Где тут было ворчание, не говоря уже об обиде ?

Ну, имелось в виду, что мы не художники и делаем демки как умеем, а юзер часто сразу не видит потенциал и не понимает, что это только демонстрация возможностей, да и то порой не всех.

Это не к вам лично, это так, наболевшее ;)

Вот и Юрий выдал только идею того как сделать не виснущий сплэш и кратенькую реализацию этого, все остальное программисту в руки.

А если интересует законченный вариант, чтобы нарисовал, подключил к проекту и миним манипуляций для работы, так я давал ссылку выше.


 
cwl ©   (2009-08-18 11:25) [48]

Юрию - спасибо за идею и начало реализации, дальше сам докручу :>
реакция некоторых присутствующих отвратительная и нездоровая. противно, честное слово ..


 
Юрий Зотов ©   (2009-08-18 11:26) [49]

> b z   (18.08.09 11:20) [45]

Она не за проводником, ее вообще нет на экране. И кнопки приложения на таскбаре тоже нет. Там стоит Sleep (10000) - это имитация длительной загрузки. И как только эта загрузка закончится - так появляются главная форма и кнопка приложения, а сплэш исчезает.


 
b z   (2009-08-18 11:30) [50]


> Юрий Зотов ©   (18.08.09 11:26) [49]
Не, вы не поняли, все нормально, ожидает как и положено, только вот потом, главная "спряталась", и кнопка на таскбаре не активная.


 
MsGuns ©   (2009-08-18 11:33) [51]

Дело не в ворчании и не в критике неизвестно чего на полтыщи постов, а совсем ином.
Вся штука в том, как вообще подходить к идее сплэша. Вот, к примеру, подавляющее большинство "базовых" программ при загрузке непременно лезут в базу, открывая сразу несколько запросов к разным таблицам. При достаточно больших объемах информации или медленной сетке такая загрузка порою длится минуты, а то и десятки минут (та же 1С). При этом не исключено, что пользовател случайно кликнул не ту иконку и теперь вынужден тупо жевать, дожидаясь пока прога раздуплится. Не проще ли загружать приложение, а открытие базы выполнять по "кнопке" ?
Пользователя не шибко затруднит такое "лишнее" нажатие, зато работа с таким приложением много приятнее и интуитивно понятнее, нежели неявное автооткрытие всего и всякого.

Хотя, допускаю, что это явно выходит за рамки сабжа. Однако ж навеяло :)


 
Юрий Зотов ©   (2009-08-18 11:36) [52]

> b z   (18.08.09 11:30) [50]

Хм... действительно. Интересно, что в реальной программе (откуда был выдран этот код) такого эффекта нет. Видимо, что-то недовыдрал... посмотрю повнимательнее.


 
Andy BitOff ©   (2009-08-18 11:43) [53]


> MsGuns ©   (18.08.09 11:33) [51]

Да, есть такое. Однако не везде. Есть программы, которым сплэш необходим и заставлять юзера кликать по кнопкам, которые должны кликаться автоматом при старте тоже не выход.


 
MsGuns ©   (2009-08-18 11:45) [54]

Мне непонятна реакция на реакцию :) Кому то странно, кому-то противно..

Мы в божьем храме, где вообще только слушают или на программерском форуме "Потрепаться" ?
Нам читают молитву или предлагают собственные идеи реализации чего-то ?

Если человек публикует свои наработки (идея - это та же наработка), то он и ожидать соответствующей реакции должен, не так ли ? В том числе и от тех, кто узрел в идее недостатки, возможно мнимые, но не лучше ли спокойно объяснить ему в чем он заблуждается приведя РЕШЕНИЕ, а не вставать в позу недоумения по поводу выключенных голов ?

Вот мне лично непонятно чем предложеный "фоновый" способ лучше обычного, БАНАЛЬНО реализуемого с помощью обычной продизайненной формочки и нехитрой манипуляции с dpr.
Был бы весьма признателен, если бы мне доступно объяснили это.


 
Юрий Зотов ©   (2009-08-18 11:45) [55]

> MsGuns ©   (18.08.09 11:33) [51]

> Не проще ли загружать приложение, а открытие базы выполнять
> по "кнопке" ?

Не всегда так можно сделать, все зависит от архитектуры программы. Например, та, о которой я здесь уже упоминал, умеет загружать главную форму из БД (то есть, каждый юзер при его желании может иметь свою собственную главную форму).

Кроме того, инициализация главного меню и кнопок тулбаров тоже часто делается в соответствии с грантами юзера.


 
Andy BitOff ©   (2009-08-18 11:52) [56]


> MsGuns ©   (18.08.09 11:45) [54]
> Вот мне лично непонятно
> чем предложеный "фоновый" способ лучше обычного, БАНАЛЬНО
> реализуемого с помощью обычной продизайненной формочки и
> нехитрой манипуляции с dpr.Был бы весьма признателен, если
> бы мне доступно объяснили это.

Сергей, чего не понятного-то? Поставьте в главной форме sleep(5000) и перекройте сплэш другим окном, я уже не говорю о реализации прогрессбара, который просто остановится.


 
Юрий Зотов ©   (2009-08-18 11:52) [57]

> MsGuns ©   (18.08.09 11:45) [54]

> Вот мне лично непонятно чем предложеный "фоновый" способ лучше
> обычного, БАНАЛЬНО реализуемого с помощью обычной продизайненной
> формочки и нехитрой манипуляции с dpr.
> Был бы весьма признателен, если бы мне доступно объяснили это.

Запустите такой БАНАЛЬНЫЙ проект и во время показа сплэша "повозите" по нему другим окном. От красоты и следа не останется (вернее, только след как раз и останется).

Если Вас такое поведение сплэша устраивает - ради бога, это Ваше полное право. А меня - не устраивает, и это тоже мое полное право. Спорить тут не о чем, это будет спор о вкусах.


 
MsGuns ©   (2009-08-18 11:55) [58]

Все понятно. Ясно и предельно конкретно.
Спасибо за пояснение - идея, действительно, полезная.


 
test ©   (2009-08-18 11:58) [59]

Юрий Зотов ©   (18.08.09 11:52) [57]
Поставьте на форму обрабатывать перерисовку флаг и можно возить по окну чем угодно.


 
MsGuns ©   (2009-08-18 12:00) [60]

Кстати, а если перерисовку "банального" сплэша-формы тоже делать по таймеру ?


 
Юрий Зотов ©   (2009-08-18 12:01) [61]

> test ©   (18.08.09 11:58) [59]

> Поставьте на форму обрабатывать перерисовку флаг и можно
> возить по окну чем угодно.

Увы... я не умею этого делать. Был бы признателен за примерчег...
:o)


 
Юрий Зотов ©   (2009-08-18 12:06) [62]

> MsGuns ©   (18.08.09 12:00) [60]

Да хоть по трем таймерам. Один поток ПРИНЦИПИАЛЬНО не умеет делать два дела одновременно, в этом весь затык и есть. Поэтому, пока он занят, например, работой с БД, сообщения таймера будут накапливаться в его очереди, а обрабатываться не будут.


 
Rouse_ ©   (2009-08-18 12:38) [63]

Юр, я бы немного подправил процедуру отрисовки, ибо великие вещают нам:
A window may receive internal paint messages as a result of calling RedrawWindow with the RDW_INTERNALPAINT flag set. In this case, the window may not have an update region. An application should call the GetUpdateRect function to determine whether the window has an update region. If GetUpdateRect returns zero, the application should not call the BeginPaint and EndPaint functions.
Ну а по поводу того что окно скрывается после скрытия сплэша - то тут просто логическая ошибка в коде. Нужно SetWindowPos(Wnd, HWND_TOP
заменить на ShowWindow(Wnd, SW_SHOWNA).
ЗЫ: незачто :)


 
antonn ©   (2009-08-18 12:40) [64]

ну и я тогда пиарнусь, со своей корявой в реализации заставкой :)
скрин: http://desksoft.ru/forum/attachments/19518f6778e41afe8d08067e688acfe9.jpg
урл: http://desksoft.ru/index.php?forum=13&th=187&w

думаю несложно будет заставку Юрия при необходимости загламурить :)


 
Хитрий Лис   (2009-08-18 12:44) [65]

Не пойму - чего такие агрессивные нападки на полезную вещь ... пострелять бы...


 
antonn ©   (2009-08-18 12:47) [66]


> Не пойму - чего такие агрессивные нападки на полезную вещь

завидно, что не только написал, но и рассказал об этом, да еще на ДК :)


 
test ©   (2009-08-18 12:54) [67]

Юрий Зотов ©   (18.08.09 12:01) [61]
Первое что приходит на ум
Application.ProcessMessages();
но не много не то сейчас поищу.


 
Andy BitOff ©   (2009-08-18 12:56) [68]


> test ©   (18.08.09 12:54) [67]

Не ищи. Без доп.потока не обойдешся.


 
Anatoly Podgoretsky ©   (2009-08-18 12:57) [69]

> MsGuns  (18.08.2009 12:00:00)  [60]

Что бы таймер работал, нужно опрашивать сообщения, а какой опрос при скажем длительном синхронном запросе к БД, поток простое и надежное решение.


 
test ©   (2009-08-18 13:27) [70]

Andy BitOff ©   (18.08.09 12:56) [68]
Да похоже на то.


 
Leonid Troyanovsky ©   (2009-08-18 13:55) [71]


> Rouse_ ©   (18.08.09 12:38) [63]

> заменить на ShowWindow(Wnd, SW_SHOWNA).

Если щелкнуть мышкой по этому окну, то стартуемое приложение
снова станет non foreground. Т.е., где-то под конец нужно что-то вроде
SetForegroundWindow(Application.Handle).

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-08-18 14:08) [72]


> ZeroDivide ©   (18.08.09 08:39) [13]

> 2. написан без VCL (ради объема и скорости). Использовать
> WinApi, на мой взгляд, смысла нет...

Показу формы в потоке до показа основной формы препятствует
Application.UpdateVisible при CreateNew.
В TApplication & TScreen оверридить нечего, поэтому апишное окно
вполне уместно.

--
Regards, LVT.


 
Дмитрий С ©   (2009-08-18 14:10) [73]

Переборщил с тоном, спасибо что отреагировали как положено. Извините.

А если нормальным тоном и по существу, то layered окошки не нуждаются в потоке и даже обработке сообщений в принципе. Дают переменную альфу, работают с 2000вин как минимум. Почему бы не воспользоваться этим?


 
antonn ©   (2009-08-18 14:13) [74]


> Почему бы не воспользоваться этим?
>

основной минус - на них не рисуются контролы, на некоторых сплешах они нужны.
Ну и плюс многие привыкли к "колхозному" VCL, а тут нужно графику делать :)


 
Andy BitOff ©   (2009-08-18 14:13) [75]


> Дмитрий С ©   (18.08.09 14:10) [73]

И пример, конечно, есть?


 
Andy BitOff ©   (2009-08-18 14:15) [76]


> Дмитрий С ©   (18.08.09 14:10) [73]

А, все. Понял о чем.


> antonn ©   (18.08.09 14:13) [74]

Основное можно ручками...


 
Дмитрий С ©   (2009-08-18 14:16) [77]


>
>
> > Почему бы не воспользоваться этим?
> >
>
> основной минус - на них не рисуются контролы, на некоторых
> сплешах они нужны.
> Ну и плюс многие привыкли к "колхозному" VCL, а тут нужно
> графику делать :)
>


>

Там же на винапи:) вкла нет. А строчку можно самому вывести или прогрессбар.


 
antonn ©   (2009-08-18 14:17) [78]


> Основное можно ручками...

я бы даже сказал - все нужно ручками :)
никак не доведу свой TEdit с выводом в битмап и кнопки для таких вещей :(


 
Дмитрий С ©   (2009-08-18 14:19) [79]


> А, все. Понял о чем.
>

На картинке я привел. Могу из проекта достать.

Кстати плюс такого окошка, что можно сделать возможность кликать "сквозь" него


 
Andy BitOff ©   (2009-08-18 14:22) [80]


> Дмитрий С ©   (18.08.09 14:19) [79]
> Могу из проекта достать.

Не, ненадо, у меня своё есть ;)



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.05 c
2-1251091182
Interesting
2009-08-24 09:19
2009.10.25
Как возвести число в степень?


2-1251711913
Tinky
2009-08-31 13:45
2009.10.25
Проверить integer на вхождение во множество


15-1250843051
@!!ex
2009-08-21 12:24
2009.10.25
Как получить историю посещения браузеров?


2-1251194637
Kolan
2009-08-25 14:03
2009.10.25
Чем отличается закрытие по «крестику» и по Alt+F4?


2-1251107698
SkyN
2009-08-24 13:54
2009.10.25
Как отловить причину закрытия программы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский