Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Поток и переменная   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.045 c
1-1104106961
dima hlevin
2004-12-27 03:22
2005.01.16
Как сохранит в exe файл моей программы строку а потом если надо е


1-1104026419
Muhan
2004-12-26 05:00
2005.01.16
Как узнать путь к файлу, который запустил программу?


1-1104151339
MTsv DN
2004-12-27 15:42
2005.01.16
Рекурсивный проход дерева каталогов


6-1098805375
denissoft
2004-10-26 19:42
2005.01.16
Количество отправленных полученных байт.


6-1096741145
Ezhik
2004-10-02 22:19
2005.01.16
Server and Client Socket