Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

формы, потоки и TWebBrowser [D7]


Страницы:   1 2

HikTronic ©   (2010-07-05 09:47:00) 

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

//основная программа
CreateWND(true); // Создание окна
GLInit; // Инициализация Ogl'a
Looker:=TLooker.Create(false);
Looker.FreeOnTerminate:=true;
Looker.Priority:=tpLowest;
while Done=FALSE do цикл программы...

//TLooker.Execute:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
logWrite('CreateForm',3); Application.Run;
Form1.Visible:=true;
Form1.Visible:=false;

но зависает и приложение и форма, по логу видно, что доходит до Onshow и все, дальше никак. подскажите, как решить?

и еще такой вопрос - у TWebBrowser можно ли управлять полосой прокрутки?
например, чтобы полоса прокрутки в определённый момент вставала в крайнее нижнее положение


HikTronic   (2010-07-06 22:54:00) [1]

забавно, возьму на заметку


Leonid Troyanovsky   (2010-07-06 22:44:00) [2]


> HikTronic ©   (06.07.10 22:39) [34]

> что за формула с танком?

Главное в танке - не обосраnmся  (с)

--
Regards, LVT.


HikTronic   (2010-07-06 22:39:00) [3]

что за формула с танком?


Leonid Troyanovsky   (2010-07-06 22:38:00) [4]


> HikTronic ©   (06.07.10 22:27) [31]

> на вкус и цвет..

Дада, фломастеры разные.
Но, формулу c танком я тоже припомнить могу.

--
Regards, LVT.


Leonid Troyanovsky   (2010-07-06 22:32:00) [5]


> HikTronic ©   (06.07.10 22:27) [31]

> мне еще надо с формы передавать сообщения игре - консольные
> команды.

Его зовут клиент-сервер, forever.

--
Regards, LVT.


HikTronic   (2010-07-06 22:27:00) [6]


> Лог можно открывать и другой программой, что не в себе.

мне еще надо с формы передавать сообщения игре - консольные команды.

> Оформление - фигня

на вкус и цвет..


Leonid Troyanovsky   (2010-07-06 22:21:00) [7]


> HikTronic ©   (06.07.10 20:50) [28]

> вот на форме у меня tWebBrowser, который этот лог открывает
> в себе параллельно основной программе, т.е. в реальном времени
> видно, что там в логе находится.

Лог можно открывать и другой программой, что не в себе.
Хоть перпендикулярной, но реально видимой, издавна пользуемой.

> всякие фичи по оформлению - цвета,жирность шрифта, всплывающие
> пояснения - поэтому легче визуально

Оформление - фигня, главное в танке - результат.

--
Regards, LVT.


HikTronic   (2010-07-06 20:51:00) [8]

2Юрий Зотов
я уже получил. да и в 17 посте вроде все понятно, нет?


HikTronic   (2010-07-06 20:50:00) [9]

я тот еще извращенец. пишу игру на огл, физика box2d, лог пишется в html файл(почему не тхт как у всех? в html есть всякие фичи по оформлению - цвета,жирность шрифта, всплывающие пояснения - поэтому легче визуально воспринимается), так вот на форме у меня tWebBrowser, который этот лог открывает в себе параллельно основной программе, т.е. в реальном времени видно, что там в логе находится. +на форме Edit, куда вводятся консольные команды.
вот. теперь можно меня пинать за индусство и закидывать тапочками


Юрий Зотов   (2010-07-06 20:50:00) [10]

Бессмысленная каша какая-то. Вы можете на простом русском языке, без всяких терминов, объяснить, что же Вы в итоге хотите получить?


Плохиш   (2010-07-06 19:57:00) [11]


> пишу прогу консольную, создаю окно через winapi, инициализирую
> в нем огл, и мне надо в месте с параллельно отрисовкой окна
> и выполнением в ней вычислений отображать форму


> формы, потоки и TWebBrowser

Консольная прога, с окнами на vcl и TWebBrowser. Интересно и какой великий смысл сиих извращений? Вам кто-то сказал, что консольные проги что-то быстрее считают?


HikTronic   (2010-07-06 14:23:00) [12]

а, точно, якори, совершенно забыл про них, благодарю


sniknik   (2010-07-06 12:54:00) [13]

> ей можно управлять из кода?
можно.
из кода javascript можно, а значит из дельфи тоже, т.к. из него можно выполнять "внедренные" "скриптики". можно и без яваскрипта "якорями", с ними простым вызовом навигации.


HikTronic   (2010-07-06 12:26:00) [14]

все работает, еще раз спасибо.
а насчет полосы прокрутки в TWebBrowser никто не знает? ей можно управлять из кода?


HikTronic   (2010-07-06 12:18:00) [15]

ок, спасибо за доходчивые объяснения, буду делать основной цикл программы в дополнительном потоке, а форму в главном


Deltas   (2010-07-06 11:32:00) [16]

Если кратко, то

> как в новом потоке правильно вывести форму?

Нельзя работать с VCL в дополнительных потоках.


Deltas   (2010-07-06 11:26:00) [17]


> sniknik ©   (06.07.10 09:30) [19]
> в VCL нормально, это когда формы/визуальная часть располагаются
> в основном потоке

Это не просто нормально, а только так и можно. Концепция Borland такова, что все компоненты VCL работают только в главном потоке, так как они не потокобезопасны.

> при создании потока не с формой, а с вычислениями, например,
>  все идет нормально. как пытаюсь засунуть туда форму - тормозит

Если так нужно окно не в главном потоке, то про VCL в этом потоке нужно забыть и работать на чистом Win API. Но это совершенно не обязательно, можно организовать межпоточный обмен сообщениями через PostMessage(), выполняя всю работу с VCL в главном потоке по уведомлениям (через PostMessage()) не главного потока.


sniknik   (2010-07-06 09:30:00) [18]

> при создании потока не с формой, а с вычислениями, например, все идет нормально. как пытаюсь засунуть туда форму - тормозит.
в VCL нормально, это когда формы/визуальная часть располагаются в основном потоке.

> не очень люблю низкоуровневое на уровне win api
кого это волнует при заявленном
> я окно инициализирую средствами winApi, хочу быть как можно меньше привязан к делфи.

понимаешь, что используя form1:= Tform1.Create(nil); ты уже "привязан" к дельфи и VCL? а значит и к его правилам.

> поэтому не смогу полностью написать замену VCL.
полностью, в одиночку это вряд ли кому дано, но не мешает одиночкам писать без него, реализуя только необходимое. (хотя это в 98% просто понты, в 1.8% учеба, и в остатке необходимость+"разное". ИМХО)


HikTronic   (2010-07-06 07:08:00) [19]


> хочешь обойтись без VCL? пиши ему замену. в смысле изучи
> как работает, попробуй на нем, и пиши свое...

не очень люблю низкоуровневое на уровне win api, да и опыта маловато, поэтому не смогу полностью написать замену VCL. весь код, что есть сейчас - метод копипаста из разных источников, чуть переделанный по совету товарища моего, который в этом разбирается. сам я больше люблю алгоритмы, графику, физику и игровую механику.


HikTronic   (2010-07-06 07:03:00) [20]

давайте поставим вопрос по другому. меня в данный момент вполне устраивает реализация основного цикла. т.к. выдает вполне приличный результат. как в новом потоке правильно вывести форму? при создании потока не с формой, а с вычислениями, например, все идет нормально. как пытаюсь засунуть туда форму - тормозит


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо