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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 20:20   #11
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Pamparam Посмотреть сообщение
выполнять результаты (создание форм и т.п.)
выполнять не в потоке потому, что создавать форму в неосновном потоке нельзя
Pamparam вне форума Ответить с цитированием
Старый 30.11.2011, 20:44   #12
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> выполнять результаты (создание форм и т.п.)

так, отделим мух от котлет. Создание форм — дело недолгое, особенно, если они созданы заранее, и сидят невидимые. Show() и готово. И даже если формы не созданы заранее, их создание не должно длиться более секунды. Если у вас не так, надо пересматривать, что там на Create/Show происходит.

"выполнять результаты" и т.п. — вероятно, дело долгое, которое можно:
а) выполнить в отдельном потоке
б) выполнять небольшими порциями, так, чтобы GUI успевал выгребать сообщения

В любом случае, весь невизуальный код может работать в любом потоке, весь визуальный код должен работать только в главном потоке.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 30.11.2011, 21:09   #13
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

мне нужно именно создавать форму при получении правильного ответа с сервера т.е. что-то типа авторизации, а отображение формы можно сделать при элементарной отправке месаг окну (если кто будет хакать), что сводит авторизацию на 0
Pamparam вне форума Ответить с цитированием
Старый 30.11.2011, 21:26   #14
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну тогда в чём проблема? отработал ваш поток, получил данные. Послал сообщение через SendMessage() главной форме, она (уже будучи в главном потоке) создала нужные формы.

> что сводит авторизацию на 0

если авторизация сводится к тому, что у вас форма хитро спрятана, то она и так на нуле )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 30.11.2011, 21:27   #15
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

создайте в вашем потоке процедуру:
Код:
uses
  Forms;
...
procedure ThrCreateForm;
begin
   with TForm.Create(Application) do ShowModal;
end;
В методе Execute вашего потока, где нужно создать форму, пишите:
Код:
  Synchronize(ThrCreateForm);
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 30.11.2011, 21:45   #16
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от 3D Hunter Посмотреть сообщение
создайте в вашем потоке процедуру:
Код:
uses
  Forms;
...
procedure ThrCreateForm;
begin
   with TForm.Create(Application) do ShowModal;
end;
В методе Execute вашего потока, где нужно создать форму, пишите:
Код:
  Synchronize(ThrCreateForm);
спс окно грузится, но с фреймами проблемы, при любом обращении к ним вылазят эксепшены. У меня 3 фрейма на создаваемой форме, как их загружать?
---------------------------
Debugger Exception Notification
---------------------------
Project Project31.exe raised exception class EAccessViolation with message 'Access violation at address 00545A16 in module 'Project31.exe'. Read of address 00000324'. Process stopped. Use Step or Run to continue.
---------------------------
Pamparam вне форума Ответить с цитированием
Старый 30.11.2011, 22:02   #17
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

как вызываете? где используете? код в студию
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 30.11.2011, 23:00   #18
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

в потоке я создал сначала форму без фреймов, а из нее при формкриейте создал остальные
так все норм, спс
Pamparam вне форума Ответить с цитированием
Старый 01.12.2011, 04:05   #19
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://www.delphikingdom.ru/asp/view...catalogid=1355

Цитата:
Создание формы в потоке
BAM! Headshot.

Цитата:
в потоке я создал сначала форму без фреймов, а из нее при формкриейте создал остальные
Какое слово в
Цитата:
к VCL нельзя обращаться не из главного потока.
не понятно?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 01.12.2011, 06:12   #20
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

GunSmoker, да ТС уже убежал на радостях, схавал фишку и все заробило у него, а главного совета не увидел)) что ж, с Богом
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
winsock udp сервер в потоке, не работает при создании формы или обращению к VCL компоненту marikcool Работа с сетью в Delphi 1 01.10.2010 00:57
ошибка при закрытии формы после обработки в потоке furstenberg Общие вопросы Delphi 7 05.07.2010 12:19
Thread. проблемы с работой потока. Моментально исчезают созданные в потоке формы. Casper-SC Общие вопросы .NET 3 24.04.2010 12:28
Создание формы tae1980 Microsoft Office Excel 6 16.03.2010 08:03
Создание формы Pilot Microsoft Office Excel 2 15.11.2007 10:35