Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подгрузка данных после открытия формы / 25 сообщений из 52, страница 1 из 3
03.06.2020, 16:03
    #39965775
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Здравствуйте, подскажите событие которое идет после formshow. Нужно после того как форма загрузилось, подгрузить данные на форму, ничего не нажимая
...
Рейтинг: 0 / 0
03.06.2020, 16:13
    #39965781
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
neteurtНужно после того как форма загрузилось, подгрузить данные на форму, ничего не нажимая

Нормальные люди так не делают, но если очень хочется - запускаете в OnShow поток, который
и подгрузит данные. Ещё чуть менее вменяемо - PostMessage() этой форме, в обработчике
которого и будет загрузка данных. Уродливое бельмо вместо формы yf dc` dhtvz pfuheprb
гарантировано. Совсем невменяемо (но нубы так и делают) - OnActivate.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 16:16
    #39965786
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
...
Рейтинг: 0 / 0
03.06.2020, 16:19
    #39965787
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Dimitry Sibiryakov,
может быть у вас есть пример потока в FormShow ?
...
Рейтинг: 0 / 0
03.06.2020, 16:31
    #39965795
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
DimaBr, OnCreate идет перед FormShow
...
Рейтинг: 0 / 0
03.06.2020, 16:32
    #39965796
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Dimitry Sibiryakov,

а лучше PostMessage, как его можно использовать ?
...
Рейтинг: 0 / 0
03.06.2020, 17:05
    #39965810
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Добавлю ещё один вариант до кучи: TTimer.
...
Рейтинг: 0 / 0
03.06.2020, 17:11
    #39965812
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Настоящие гуру извращений делают так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TFmMain.FromShow(Sender: TObject) 
begin
  ...
  SetTimer(Handle, TIMER_ID_LOGIN, 100, nil);
end;

procedure TFmMain.WMTimer(var Msg: TWMTimer);
begin
  KillTimer(Handle, Msg.TimerID);
  case Msg.TimerID of
  ...
    TIMER_ID_LOGIN:
      acConnect.Execute;
  ...
end;


Но если загрузка длительная, то явно лучше поток.
...
Рейтинг: 0 / 0
03.06.2020, 17:17
    #39965815
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
neteurtPostMessage, как его можно использовать ?
Вы не поверите, но у него есть только один способ использования: описанный в
документации. Ни вертеть, ни полизать, ни на хвост нанизать - не получится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 17:59
    #39965837
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Если вы не делаете некие операции с формой на OnCreate или на OnShow, значит, в эти моменты вам чего-то не хватает. Нужно понять, чего именно не хватает, и в какой момент будет хватать. От этого зависит и метод "обхода".

Что-то полезное происходит при обработке следующих, уже стоящих в очереди событий? PostMessage отправит вас в конец очереди, когда она к вам подойдет, почва уже будет подготовлена. Вместо PostMessage можно прокрутить очередь через Application.ProcessMessages, но это плохой способ. Однако, если должна пройти цепочка событий, каждое из которых вызывает следующее через постановку в очередь сообщений, такой метод будет бесполезен.

Что-то полезное приходит извне, и надо только его дождаться? Тогда таймер, как показали выше. Интересно, как вы будете определять задержку таймера, экспериментально?

Зачем запускать параллельный поток, который должен будет дергать визуальные компоненты из основного, лично мне непонятно. И, главное, что именно тот поток будет ждать, чтобы выполнить свою работу? Если по времени, то для этого и обычного таймера достаточно.
...
Рейтинг: 0 / 0
03.06.2020, 18:18
    #39965850
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
shalamyanskyЕсли вы не делаете некие операции с формой на OnCreate или на OnShow, значит, в эти
моменты вам чего-то не хватает.

Обычно всё проще: операции загрузки данных длительные и на это время приложение не
отвечает, а вместо формы на экране отвратительное белёсое пятно, которое никому не нравится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 18:28
    #39965854
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
А... Ну тогда, если загрузка длительна, PostMessage мало поможет, разве что перед "заморозкой" кнопки прорисуются, все равно неприятно.

Я бы все-таки не запускал отдельный поток, лишнее это, а отправился в конец очереди и там на своем сообщении грузил бы потихоньку данные, вызывая через разумные интервалы ProcessMessages, чтобы глазу пользователя было приятно. И форма живет, и данные грузятся.
...
Рейтинг: 0 / 0
03.06.2020, 18:34
    #39965857
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
shalamyanskyPostMessage мало поможет, разве что перед "заморозкой" кнопки прорисуются, все равно
неприятно.

Среднему дельфину и этого хватает.

shalamyanskyгрузил бы потихоньку данные, вызывая через разумные интервалы ProcessMessages

Чаще всего загрузка данных сводится к одному вызову Query.Open, так что облом с разумными
интервалами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 18:43
    #39965861
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Дельфин - это хорошо :)

Можно влезть с ProcessMessages в Query.OnRow или Query.OnFetch, что там у них есть, но это уже перебор, пожалуй.
...
Рейтинг: 0 / 0
03.06.2020, 18:46
    #39965862
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
shalamyanskyчто там у них есть

Ничего там у них нет. Да и до фетча ещё не доходит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 19:08
    #39965866
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Программа должна стартануть мгновенно. И только по запросу юзера ушастого что-то тянуть из омерик вашых.
...
Рейтинг: 0 / 0
03.06.2020, 19:22
    #39965867
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
LocksmithPC
Программа должна стартануть мгновенно. И только по запросу юзера ушастого что-то тянуть из омерик вашых.
+100
Открывать надо пустую форму с кнопкой "Обновить" ("Посчитать" или что там долгим запросом делается).
...
Рейтинг: 0 / 0
03.06.2020, 20:07
    #39965873
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Ага. Тыкаете Вы в ссылку, а Вам открывается браузер с пустой страницей. И кнопкой
"обновить". Супер дизайн!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.06.2020, 20:17
    #39965875
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Dimitry Sibiryakov
Ага. Тыкаете Вы в ссылку, а Вам открывается браузер с пустой страницей. И кнопкой
"обновить". Супер дизайн!

Писателей арбузов тоже стоит научить не грузить все закладки при старте разом.
Открыл закладку (нажал кнопку обновить), тогда пусть и грузится. Плюс текущая - автоматом.
...
Рейтинг: 0 / 0
03.06.2020, 20:20
    #39965876
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Dimitry Sibiryakov

Ага. Тыкаете Вы в ссылку, а Вам открывается браузер с пустой страницей. И кнопкой
"обновить". Супер дизайн!


Да, супер. Много лучше, чем конфигуратор 1с, который тянет полтора гига конфигурации с удаленного сервака при запуске. Которая, к слову, мне совсем не нужна.
...
Рейтинг: 0 / 0
03.06.2020, 20:27
    #39965877
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Умолчально, по задумке создателей инструмента, сценарий делфи-приложения таков:

1. Все, что нужно и можно, грузится на OnCreate (откуда вы взяли OnShow? Show и Hide случаются в другие моменты, не надо лишний раз ничего трогать). Форма в это время не видна, пользователь ищет её на лужайке Майкрософта, но не находит.

2. Потом случается Show, и форма, полностью загруженная и прекрасная, окрывается взору.

Такая задумка. Если шаг 1 стараниями программиста стал невозможно долог, перед ним запускают другую форму попроще, с логотипом, например "Borland", чтобы как-то успокоить отчаявшегося уже было пользователя и отвлечь от лужайки. Не бог весть что, но лучше пустышки с кнопкой "Приступить к работе".
...
Рейтинг: 0 / 0
03.06.2020, 20:46
    #39965883
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
shalamyansky
Умолчально, по задумке создателей инструмента...


Мой сценарий:

OnCreate инициирует создание DataModule для подключения к БД, который в свою очередь инициирует создание PasswordDialog 3 раза (в случае некорректного доступа). И даже после 3-х неудачных попыток MainWindow таки все равно создается с активном пунктом меню "Подключиться", а равно с её хардлинком на ToolBar`е, но с отключенными остальными пунктами меню, кроме "Настройки", где можно исправить данные для подключения.

В случае успешного коннекта становятся активными все пункты меню, и первоначальная страница выбора действий пользователя.
...
Рейтинг: 0 / 0
03.06.2020, 20:48
    #39965886
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
neteurt
Нужно после того как форма загрузилось, подгрузить данные на форму, ничего не нажимая

Асинхронная загрузка данных - не самая простая в реализации концепция. На том уровне владения инструментом, на котором Вы задаёте такие вопросы, лучше с ней не связываться.

Сделайте базовый класс для форм приложения и сделайте в нём виртуальный метод, скажем, LoadData. В наследниках переопределяйте этот метод, делая подгрузку данных, а в базовом классе вызывайте его с OnShow. Тогда сейчас у Вас будет всё верно работать, а потом Вы легко сможете поэкспериментировать с переносом вызова LoadData в другие места и реализовать желаемый асинхронный функционал.

YuRock
Открывать надо пустую форму с кнопкой "Обновить" ("Посчитать" или что там долгим запросом делается).

Открывать надо так, как удобно пользователю. Вы же предлагаете заранее назвать себя криворучкой и заставить пользователя делать кучу тупых лишних действий.

shalamyansky
Умолчально, по задумке создателей инструмента, сценарий делфи-приложения таков:

Можно узнать, где Вы достали хрустальный шар, с такой точностью показавший Вам замыслы создателей инструмента?
...
Рейтинг: 0 / 0
03.06.2020, 20:55
    #39965889
shalamyansky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
Хороший сценарий. Но он все равно не решает проблему длительной инициации в случае, если авторизация прошла успешно с первого раза. Более того, во время заморозки на экране, скорее всего, будет еще болтаться уже ненужный диалог аутентификации, если не позаботиться его убрать специально. Ощущение у пользователя будет, что что-то не так с коннектом, хотя на самом деле уже идет загрузка.
...
Рейтинг: 0 / 0
03.06.2020, 20:58
    #39965891
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подгрузка данных после открытия формы
LocksmithPC
Мой сценарий

Странноватое смешение стилей, начинается с одного варианта, а заканчивается другим. В этом случае и проще, и удобнее сразу показывать главную форму и в ней на старте выбрасывать диалог аутентификации.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подгрузка данных после открытия формы / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]