Показать сообщение отдельно
  #5  
Старый 20.08.2014, 22:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не получит главная форма фокус в MDI приложении (ну за исключением случая, когда идет переключение между приложениями). Я в свое время просто "повесил" отдельный поток, который запускался автоматически при старте приложения и сам обновлял информацию в метке раз в 10 минут (такое ТЗ было, 10 минутного интервала было достаточно). Что-то типа такого:
Код:
// Поток
type
  TInfoUpdateThread = class(TThread)
  private
    FInfo : String;
    procedure UpdateLabel;
  protected
    procedure Execute; override;
  end;

procedure TInfoUpdateThread.UpdateLabel;
begin
  MainForm.lbInfo.Caption := FInfo;
end;

procedure TInfoUpdateThread.Execute;
begin
  While not Terminated Do
    Begin
      // Здесь твой запрос
      FInfo := TimeToStr(Time);

      // Обновляем метку
      Synchronize(UpdateLabel);

      // Пауза
      Sleep(60000); // Sleep for 1 min
    End;
end;

// Главная форма
type
  TMainForm = class(TForm)
  private
    FInfoThread : TInfoUpdateThread
  ...

procedure TMainForm.OnCreate(Sender : TObject);
begin
  FInfoThread := TInfoUpdateThread.Create(True);
  FInfoThread.FreeOnTerminate := True;
  FInfoThreaf.Resume;
end;

procedure TMainForm.OnDestroy(Sender : TObject);
begin
  FInfoThread.Terminate;
  FInfoThread.WaitFor;
end;
Ответить с цитированием