powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему форма не становится активной?
5 сообщений из 5, страница 1 из 1
Почему форма не становится активной?
    #40115864
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тексте есть проверка по таймеру, у активной формы обновлять информацию, если в базе изменились данные.
Код: pascal
1.
2.
3.
if Active then // проверяем только у активной формы
        if IsNewData('repair_request') then// и появились новые данные
          UpdateData;                   // то обновляем сетки



Форма кладется вот таким образом:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
procedure TfmControlIT.SelectForm(AFormClass: TUpdatingFormClass);
// Выбор формы для отображения на главной панели
var
  i: integer;
begin
  // Если такая форма уже стоит
  for i := 0 to PanelMain.ControlCount - 1 do
    if PanelMain.Controls[i] is AFormClass then
    begin // Ловим форму
      CurrentForm := TUpdatingForm(PanelMain.Controls[i]);
      CurrentForm.Parent := PanelMain;
      Caption := CurrentForm.Caption;
      CurrentForm.BringToFront;
      exit;
    end;

  // Если эта форма не стояла, то создаем ее и вставляем
  if Assigned(AFormClass) then
  begin
    CurrentForm := AFormClass.Create(fmControlIT); // Создаем форму выбранного класса
    CurrentForm.Hide;
    CurrentForm.BorderStyle := bsNone;
    CurrentForm.Parent := PanelMain;
    Caption := CurrentForm.Caption;
    CurrentForm.Align := alClient;
    CurrentForm.BringToFront;
    CurrentForm.Show;
    CurrentForm.Realign;
    CurrentForm.WindowState := wsMaximized;
    if CurrentForm.CanFocus then
      CurrentForm.SetFocus;
  end;
end;


При трассировке показывает, что Active = false, хотя форма открыта.
...
Рейтинг: 0 / 0
Почему форма не становится активной?
    #40115878
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
При трассировке показывает, что Active = false, хотя форма открыта.
Но активно окно отладчика. Если нужно проверять видна ли форма, то есть Visible
...
Рейтинг: 0 / 0
Почему форма не становится активной?
    #40115932
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
svnvlad
При трассировке показывает, что Active = false, хотя форма открыта.
Но активно окно отладчика. Если нужно проверять видна ли форма, то есть Visible

Те формы, которые размещаются таким образом, показывают Active = true в отладчике
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TfmMain.actRepairRequestExecute(Sender: TObject);
begin
  if fmRepairRequest = nil then
    begin
      fmRepairRequest := TfmRepairRequest.Create(Application);
      fmRepairRequest.IsDialog := false;
    end
  else
    fmRepairRequest.BringToFront;
end;



А в том случае были как бы формы матрешки. Родительская форма вот так размещалась, как здесь, а на ней вторая форма с помощью ручного ее размещения на панели родительской формы. Вот она не опознается как Active.
...
Рейтинг: 0 / 0
Почему форма не становится активной?
    #40115938
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladВот она не опознается как Active.

И не должна. Active это форма с активным заголовком, принимающая
пользовательский ввод. Когда форма помещается на панель, она становится дочерним
окном и активной быть не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Почему форма не становится активной?
    #40115940
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, все понятно теперь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Почему форма не становится активной?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]