Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизDLL и форма Найти похожие ветки
← →
Amoeba © (2006-07-12 16:59) [40]
> repeat
> Application.ProcessMessages;
> sleep(100);
> until not (newform = nil);
И нафига здесь Sleep?
← →
Desdechado © (2006-07-12 17:02) [41]Yegorchic © (12.07.06 16:57) [39]
Так и вынеси в потокдействия
, а не создание формы и работу из нее.
← →
Yegorchic © (2006-07-12 17:09) [42]
> Amoeba © (12.07.06 16:54) [38]
Когда сделал ка вы сказали, всё стало только хуже: поток как бы вообще не запусклся. Ну MyProc не выполнялась, как бы.
Да, с потоками я недавно работаю, и вы сказали, что надо делать этот Synchronize, но я делаю всё и без него и с компонентами работаю - всё хорошо работает. В этом потоке ещё есть некоторые функции (напримерmainForm.iLabel.Caption:="тест";
- и всё появляется, но когда поставил этот Synchronize - перестало всё работать, как я уже сказал)
← →
Yegorchic © (2006-07-12 17:14) [43]
> Desdechado © (12.07.06 17:02) [41]
Да, я так пытался сделать. Когда я создавал newform в OnCreate MainForm"ы и делал newform.free в OnDestroy MainForm"ы, то тогда мне прога выдавала ошибку, что "неверный дескриптор окна" при OnDestroy"е (т.е. выполнялся newform.Free). А в потоке тогда я только newform.showModal делал, т.е. его уже не вынести из потока.
← →
Yegorchic © (2006-07-12 17:14) [44]
> Desdechado © (12.07.06 17:02) [41]
Да, я так пытался сделать. Когда я создавал newform в OnCreate MainForm"ы и делал newform.free в OnDestroy MainForm"ы, то тогда мне прога выдавала ошибку, что "неверный дескриптор окна" при OnDestroy"е (т.е. выполнялся newform.Free). А в потоке тогда я только newform.showModal делал, т.е. его уже не вынести из потока.
← →
Amoeba © (2006-07-12 17:15) [45]
> надо делать этот Synchronize, но я делаю всё и без него
> и с компонентами работаю - всё хорошо работает.
Очень полохо поступаешь. А то, что все работает, то это просто повезло.
← →
Yegorchic © (2006-07-12 17:18) [46]
> Очень полохо поступаешь. А то, что все работает, то это
> просто повезло.
А почему, кстати, когда я написал synchronize(myProc) - поток как бы "заело" (я выше писад об этом)?
← →
Desdechado © (2006-07-12 17:23) [47]> А в потоке тогда я только newform.showModal делал
И зачем?
Нельзя что ли создать поток при нажатии кнопки в форме?
← →
Yegorchic © (2006-07-12 17:29) [48]
> Нельзя что ли создать поток при нажатии кнопки в форме?
А он так и создаётся.
Я так пытался (выше писал):
Создаётся newform в OnCreate mainform"ы > жмём на кнопку, которая на MainForm > создаётся поток, в середине которого только показывается форма > закончился поток, закрываем программу и всё вроде бы хорошо прошло, как вдруг в OnDestroy MainForm"ы выполняется newform.Free и вылезает ошибка про неверный дескриптор окна.
← →
Desdechado © (2006-07-12 17:34) [49]Издеваешься?
В 47 я спрашивал о потоке, который должен что-то делать, не зная о форме вообще. И его можно создать уже после того, как нажата кнопка на форме. И в нем нет смысла пытаться показывать форму, да еще и модально.
← →
Yegorchic © (2006-07-12 17:41) [50]Что-то я совсем запутался...
Ладно, наврное надо придумать, как можно сделать это всё по-другому.
← →
parovoZZ © (2006-07-12 19:53) [51]Я бы сделал так - жмём кнопку - запускаем модальное окно - в OnCreate создаём нить и делаем всё, что нам хочется.
← →
Yegorchic © (2006-07-13 09:35) [52]Всё заработало!
Сделал я всё так:
я создал новую переменную nform: TForm;
Перед запуском потока я создаю эту форму так: nform:=Tnewform.create(nil);
Потом дальше я работал с nform только, и всё было хорошо! Т.к. я работаю с единственным компонентом на форме той - TListView"ов, то я просто нашёл его так (var LV: TListView;):for i:=0 to nform.ComponentCount-1 do
if (nform.Components[i] is TListView) then
LV:=TListView(nform.Components[i]);
И всё, дальше всё делал также как и с той формой: nform.ShowModal; nform.free; nform:=nil; и всё!
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.011 c