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

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

Поток и переменная [D6, Win2k]


denis24 ©   (2004-12-29 12:57:00) 

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


DiamondShark   (2004-12-31 15:07:00) [1]

С наступающим!
;)


denis24   (2004-12-31 14:56:00) [2]

Все разобрался....
Новый год блин...


DiamondShark   (2004-12-31 14:53:00) [3]


> блин но я же эту форму создал перед потоком
> TfrmSplash.Create(nil)

А результат куда дел?


denis24   (2004-12-31 14:30:00) [4]

спасибо
блин но я же эту форму создал перед потоком
TfrmSplash.Create(nil)


Digitman   (2004-12-31 13:31:00) [5]


> Если писать Handle -то access violation


тогда - с Новым Годом !
желаю чтобу в НГ объект frmSplash существовал.


denis24   (2004-12-31 13:22:00) [6]

Если писать Handle -то access violation......


Digitman   (2004-12-31 13:14:00) [7]


> Пишет что нет свойства windowhandle


SendMessage(frmSplash. Handle, CM_PROGRESS, counter, 0);


denis24   (2004-12-31 13:01:00) [8]

Wparam-помогло!
Когда с потока пишу
SendMessage(frmSplash.WindowHandle, CM_PROGRESS, counter, 0);
Пишет что нет свойства windowhandle
Если писать просто frmsplash.handle -'Access violation...'
Как быть с handlom..
Помогите неразумному...


Digitman   (2004-12-31 12:42:00) [9]

procedure Tfrmsplash.MsgProgress; //!!
begin
.. чего-то там ...
end;


begin...end   (2004-12-31 12:25:00) [10]

> [10] Anatoly Podgoretsky ©   (31.12.04 12:23)

В 17-ой? Или в 1-ой? :)


Anatoly Podgoretsky   (2004-12-31 12:23:00) [11]

Ошибка в другой строке.


begin...end   (2004-12-31 12:20:00) [12]

> [8] denis24   (31.12.04 12:16)

> wParam

Message.wParam


denis24   (2004-12-31 12:16:00) [13]

Разобрался
Теперь еще одно.Что то не то с wparam
procedure Tfrmsplash.MsgProgress(var Message: TMessage);
begin
label1.caption:=inttostr(wParam);
end;
Пишет '('excected but ';' found


denis24   (2004-12-29 18:30:00) [14]

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;


Erik1   (2004-12-29 16:26:00) [15]

message CM_PROGRESS; нужно только в декларации.


Digitman   (2004-12-29 16:21:00) [16]


> denis24   (29.12.04 15:56) [4]


а ты в какую секцию декларации класса влупил эту строчку ?
допустимо было либо в private, либо в protected, либо в public ..


denis24   (2004-12-29 15:56:00) [17]

Простите за ламерство...
Пишет
Uknown directive 'message'
в
procedure Tfrmsplash.MsgProgress(var Message: TMessage); message CM_PROGRESS;
begin
...
end;
Что юзать нужно?


Digitman   (2004-12-29 14:58:00) [18]


> AlterEgo of WondeRu ©   (29.12.04 14:37) [2]


можно и PostMessage() ... можно вообще дохрена чего ..

но видимые результаты в конкретной задаче могут сильно отличаться

SendMessage синхронен по определению
PostMessage асинхронен

выводы должен делать тот кто принимает решение о применении того или иного способа нотификации


AlterEgo of WondeRu   (2004-12-29 14:37:00) [19]

Digitman ©   (29.12.04 13:18) [1]
SendMessage(Zastavka.WindowHandle, CM_PROGRESS, i, 0);


а может PostMessage? или я не прав? просто в  SendMessage бужет ждать завершения MsgProgress, а  PostMessage не будет!


Digitman   (2004-12-29 13:18:00) [20]

например, так :

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;


Наверх

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