![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() На форме fSynch только ProgressBar
Код:
Куда весь этот код обработки вписывать? в OnShow - форма не вырисовывается, но процесс загрузки идёт. Т.е. приложение зависает, потом появляется форма со 100% ProgressBar на секунду и сразу же Главное окно программы. |
#2
|
||||
|
||||
![]() TThread...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() так http://zalil.ru/34738901 сойдет?
Пишу программы за еду. __________________ |
#4
|
||||
|
||||
![]() с приветственной заставкой в которой кнопка (или MainMenu) - подключиться
Я за здоровый экстрим! Спасибо за "спасибо") |
#5
|
||||
|
||||
![]() Похоже, автор плохо усвоил предыдущий урок. Я уже начинаю разочаровываться.
В приведенном коде проекта есть две фактические ошибки:
Как бы сделал я:
|
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
Uniq! (23.09.2013)
|
#6
|
||||
|
||||
![]() Вообще сама по себе идея как-то подсчитывать прогресс выполнения обращения к БД, неудачна. Это касается и подключения и выполнения запросов. А вот как-то информировать пользователя о каком-то процессе - это нужно. Из многих виденных мной решений, наиболее удачным оказался прогрессбар в режиме пинг/понга запущенный в отдельном потоке.
Лично я выделяю под него в статусбаре приложения пустое место и как только возникает необходимость отобразить длительный процесс у меня он отображается, крутится пока не закончится процесс и снова скрывается. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
||||
|
||||
![]() Код:
да и все ![]() Я за здоровый экстрим! Спасибо за "спасибо") |
#8
|
|||||||
|
|||||||
![]() Цитата:
С ошибками разбирался всю ночь. По поводу MainForm выяснил. Что касается обработки информации в OnCreate главной формы: Есть нюанс, что при загрузке данных используются и другие формы. Например выгрузка настроек из IniFil'a в форму fSettings. Т.е. её тоже нужно создать перед тем, как в неё выгружать информацию. Итоговый код: Код:
Код:
Процедуры AfterConnect для Global И Local connection идентичны (с точностью до имён): Код:
Последний раз редактировалось Uniq!, 23.09.2013 в 13:45. |
#9
|
||||
|
||||
![]() Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
||||
|
||||
![]() а udl файлы не нравятся?
Я за здоровый экстрим! Спасибо за "спасибо") |
#11
|
||||
|
||||
![]() Цитата:
Если речь идет про конфигурацию, нужно создать некий невизуальный класс TEnvironment, умеющий читать и сохранять себя в ini-файлы или куда нужно. Логически связанные элементы конфигурации можно оформить в подклассы, можно в записи, а можно и в свойства. Предварительно созданный и проинициализированный экземпляр TEnvironment по мере надобности передается формам и модулям данных, и они читают из него нужные настройки. Можете закидать меня помидорами, но TDataModule я считаю быдлокодерским компонентом. В Delphi он реализован неправильно: отсутствует возможность класть созданный в проекте экземпляр DataModule на форму, как это происходит с фреймами. Модуль данных должен быть невизуальным аналогом фрейма, а не нарушением агрегации, как сейчас. Цитата:
Другой явный образчик быдлокода -- обращение из события к самому себе через внешнюю переменную. Грубо говоря, в коде нужно везде поубирать обращения к fDM к чертовой матери. Цитата:
Цитата:
Последний раз редактировалось Freeman, 23.09.2013 в 16:55. |
#12
|
||||
|
||||
![]() Нужны хорошие книжки. Я осилил около десятка за 10 лет. И кучу интернет ресурсов. О том, что такое Sender узнал только сегодня.
Что касается AfterConnect: Код:
Это типа класс. Сейчас ещё пару вёдер критики бы, было бы замечательно. Код:
Я так понимаю экземпляр этого класса должен быть доступен из всех форм (хотя чутьё подсказывает, что не из форм, а из процесса(сов)). Если отказываться от fDM (никогда, кстати не использовал, прочитал в книге, что на нём удобно держать тьму этих компонентов), то как тогда быть? Держать их на главной форме? Я уже думаю создать методичку для самого себя. Чтоб по полочкам всё разложить. Последний раз редактировалось Uniq!, 24.09.2013 в 02:27. |
#13
|
||||
|
||||
![]() Цитата:
Цитата:
Возможно, мои слова про удаление обращений к fDM не совсем понятны. Имел в виду, что нужно удалить все точечные обращения к экземпляру fDM из кода самого fDM, чтобы он обращался к своим компонентам через Self. Слова про избавление от модуля данных можно пропустить мимо ушей. Delphi же не переделаешь. Фреймы в проекте не используются? |
#14
|
||||||
|
||||||
![]() Памятка:
1) Создал Главную форму (на ней ADOConnection и все ADOTable) 2) Создал Splash-форму (исключил её из автосоздаваемых) 3) Обработчики ниже. В итоге, с учётом всего сказанного Freeman'ом по теме передачи данных из формы в форму и взаимодействия элементов получил: Код:
Код:
Код:
Последний раз редактировалось Uniq!, 24.09.2013 в 03:05. |
#15
|
|||||
|
|||||
![]() Цитата:
Код:
|