Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизПоток и переменная Найти похожие ветки
← →
denis24 (2004-12-29 12:57) [0]В главной форме создаю поток и форму заставку.Вызываю поток,показываю заставку.По окончанию потока -закрываю форму заставку.Как из цикла в потоке передавать значение переменной-счетчика на форму-заставку,чтобы показывался процесс выполнения этого цикла?
← →
Digitman © (2004-12-29 13:18) [1]например, так :
const
CM_PROGRESS = WM_USER + 5000;
TZastavka = class(TForm)
..
procedure MsgProgress(var Message: TMessage); message CM_PROGRESS;
..
end;
..
var
Zastavka: TZastavka;
..
procedure TZastavka.MsgProgress(var Message: TMessage); message CM_PROGRESS;
begin
ProgressBar.Position := wParam;
end;
..
procedure TMyThread.Execute;
var
i: Integer;
begin
..
SendMessage(Zastavka.WindowHandle, CM_PROGRESS, i, 0);
..
end;
← →
AlterEgo of WondeRu © (2004-12-29 14:37) [2]Digitman © (29.12.04 13:18) [1]
SendMessage(Zastavka.WindowHandle, CM_PROGRESS, i, 0);
а может PostMessage? или я не прав? просто в SendMessage бужет ждать завершения MsgProgress, а PostMessage не будет!
← →
Digitman © (2004-12-29 14:58) [3]
> AlterEgo of WondeRu © (29.12.04 14:37) [2]
можно и PostMessage() ... можно вообще дохрена чего ..
но видимые результаты в конкретной задаче могут сильно отличаться
SendMessage синхронен по определению
PostMessage асинхронен
выводы должен делать тот кто принимает решение о применении того или иного способа нотификации
← →
denis24 (2004-12-29 15:56) [4]Простите за ламерство...
Пишет
Uknown directive "message"
в
procedure Tfrmsplash.MsgProgress(var Message: TMessage); message CM_PROGRESS;
begin
...
end;
Что юзать нужно?
← →
Digitman © (2004-12-29 16:21) [5]
> denis24 (29.12.04 15:56) [4]
а ты в какую секцию декларации класса влупил эту строчку ?
допустимо было либо в private, либо в protected, либо в public ..
← →
Erik1 © (2004-12-29 16:26) [6]message CM_PROGRESS; нужно только в декларации.
← →
denis24 (2004-12-29 18:30) [7]const
CM_PROGRESS = WM_USER + 5000;
type
TfrmSplash = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure MsgProgress(var Message: TMessage); message CM_PROGRESS;
.
.
.
procedure Tfrmsplash.MsgProgress(var Message: TMessage); message CM_PROGRESS;
begin
label1.caption:= inttostr(wParam);
end;
← →
denis24 (2004-12-31 12:16) [8]Разобрался
Теперь еще одно.Что то не то с wparam
procedure Tfrmsplash.MsgProgress(var Message: TMessage);
begin
label1.caption:=inttostr(wParam);
end;
Пишет "("excected but ";" found
← →
begin...end © (2004-12-31 12:20) [9]> [8] denis24 (31.12.04 12:16)
> wParam
Message.wParam
← →
Anatoly Podgoretsky © (2004-12-31 12:23) [10]Ошибка в другой строке.
← →
begin...end © (2004-12-31 12:25) [11]> [10] Anatoly Podgoretsky © (31.12.04 12:23)
В 17-ой? Или в 1-ой? :)
← →
Digitman © (2004-12-31 12:42) [12]procedure Tfrmsplash.MsgProgress; //!!
begin
.. чего-то там ...
end;
← →
denis24 (2004-12-31 13:01) [13]Wparam-помогло!
Когда с потока пишу
SendMessage(frmSplash.WindowHandle, CM_PROGRESS, counter, 0);
Пишет что нет свойства windowhandle
Если писать просто frmsplash.handle -"Access violation..."
Как быть с handlom..
Помогите неразумному...
← →
Digitman © (2004-12-31 13:14) [14]
> Пишет что нет свойства windowhandle
SendMessage(frmSplash.Handle, CM_PROGRESS, counter, 0);
← →
denis24 (2004-12-31 13:22) [15]Если писать Handle -то access violation......
← →
Digitman © (2004-12-31 13:31) [16]
> Если писать Handle -то access violation
тогда - с Новым Годом !
желаю чтобу в НГ объект frmSplash существовал.
← →
denis24 (2004-12-31 14:30) [17]спасибо
блин но я же эту форму создал перед потоком
TfrmSplash.Create(nil)
← →
DiamondShark © (2004-12-31 14:53) [18]
> блин но я же эту форму создал перед потоком
> TfrmSplash.Create(nil)
А результат куда дел?
← →
denis24 (2004-12-31 14:56) [19]Все разобрался....
Новый год блин...
← →
DiamondShark © (2004-12-31 15:07) [20]С наступающим!
;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c