Вниз
Скачать: CL | DM;

Как из отдельного потока послать сообщение главной форме?   Найти похожие ветки 

← →
Aleksandr.   (2004-08-27 18:44) [0]

Попытался через обычнй ПостМессаге хэндлу главного окна, и программа на них постоянно вываливается.


← →
TUser ©   (2004-08-27 18:45) [1]

Послать сообщение хэндлу нельзя.
Ответить на такой вопрос без кода - тоже.


← →
Aleksandr.   (2004-08-27 18:57) [2]

Это на приеме работает:

procedure TMainForm.WndProc(var Message: TMessage);
var
 s    : string;
 P    : PChar;
 i    : integer;
begin
 if (Message.Msg=um_UpdatorStart) then begin
   P:=(PChar(Message.LParam));
   s:=StrPas(P);
   StrDispose(P);
   i:=Message.WParam;
   UpdatorStart(s,i);
 end
 else
   inherited
end;


А это на посылке:

procedure TATIUpdator.DoOnStart(const Msg: string; const Cnt: Integer);
var
 P : PChar;
begin
 P:=StrNew(PChar(Msg));
 if FMsgHandle<>0 then
  PostMessage(FMsgHandle,UM_UpdatorStart,Cnt, Integer(P))
end;


← →
clickmaker ©   (2004-08-27 19:00) [3]


> Aleksandr.   (27.08.04 18:44)

что значит "вываливается"? текст ошибки?


← →
Aleksandr.   (2004-08-27 19:06) [4]

Никакого текста. Никакой обработки. Просто выпадает и все. А если из Делфи - то в окно CPU, и никакой трассировки не позволяет.
Да, код для UpdatorStart:

try
 if Visible then begin
   if NOT Assigned(FPB) then begin
     FPB:=TProgressBar.Create(nil);
     FPB.Parent:=StatusBar;
     FPB.Left:=StatusBar.Left+StatusBar.Panels[0].Width+1+StatusBar.Panels[1].Width+1+StatusBar.Panels[2].Width;
     FPB.Top:=1;
     FPB.Height:=StatusBar.Height-2;
     FPB.Smooth:=true;
     FPB.Cursor:=crSQLWait;
     StatusBar.Cursor:=crSQLWait;
     FPB.Step:=1;
     FPB.Visible:=true;
     FPB.DoubleBuffered:=true;
     FPB.Width:=StatusBar.Width-FPB.Left-3;
     FPB.Anchors:=[akLeft,akRight,akBottom];
     FPB.Position:=0;
     FPB.Perform($0409, 0, clFuchsia);
     FPB.Invalidate
   end;
   if Screen.Cursor<>crSQLWait then
     Screen.Cursor:=crSQLWait;
   if Msg<>"" then
     StatusBar.Panels[2].Text:=Msg;
   if Cnt>0 then
     FPB.Max:=Cnt;
   FPB.Position:=0;
   Application.ProcessMessages
 end
except
  on E:Exception do
    AddLog(E.Message)
end



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.019 c
1-1093798757
Stas_on
2004-08-29 20:59
2004.09.12
Как зарегистрировать своё расширение из Delphi


14-1093162782
able
2004-08-22 12:19
2004.09.12
Как можно сделать, чтобы сайт по запросу был на первых строчках?


14-1093352150
False_Delirium
2004-08-24 16:55
2004.09.12
Наиболее быстрый способ перемножения матриц.


1-1093529658
aleks-ran
2004-08-26 18:14
2004.09.12
DBGridEh: Считать значение футера


1-1093798849
MvL
2004-08-29 21:00
2004.09.12
Как выбрать параметры из StringGrid




   Наверх