powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто работал с RTTI?
4 сообщений из 4, страница 1 из 1
Кто работал с RTTI?
    #32077046
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть у меня приложение с MDI-интерфейсом, которое работает с базой. В некоторых режимах я хочу сделать, чтоб окна у меня отображались как модальные. На этапе проектирования задал FormStyle=fsMDIChild, а метод ShowModal для дочерних окон не работает. Пытался до вызова конструктора поменять в RTTI вышеуказанное свойство - ничего не даёт (игнорируется). Можкт я что-то не так сделал? Помогите, кто сталкивался. Вот кусок кода, который показывает принцип желаемого действия, но не работает :-(( :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function TBaseEditForm.ShowDirectory(ViewClass: TFormClass;
  const FieldName: string): variant;
var
  ViewForm:TBaseViewForm;
begin
  if ViewClass.ClassInfo<>nil then
    TForm(ViewClass.ClassInfo).FormStyle:=fsNormal;
  Application.CreateForm(ViewClass,ViewForm);
  with ViewForm do
  begin
    try
      ShowModal;
      Result:=ViewDataSet.FieldByName(FieldName).Value
    except
      Result:=Null
    end;
    Free
  end
end;
...
Рейтинг: 0 / 0
Кто работал с RTTI?
    #32077070
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Устанавливать FormStyle можно только на этапе создания формы.
Посему задавайте FormStryle := fsNormal в обработчике OnCreate необходимой формы.
Не забудьте - Visible формы должно быть установлено в False.
Только после этого ShowModal отработает верно.
Вот.
...
Рейтинг: 0 / 0
Кто работал с RTTI?
    #32077075
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... или для уже созданной формы при FormStyle = fsMDIChild
1. FormFtyle := fsNormal;
2. Visible := False;
3. ShowModal;
...
Рейтинг: 0 / 0
Кто работал с RTTI?
    #32077332
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Мне ещё предложили более сложный путь - перекрыть CreateParams:
procedure CreateParams(var Params: TCreateParams); override;

...

procedure TФорма.CreateParams(var Params: TCreateParams);
begin
if FIAmMDI then FormStyle := fsMDIChild
else FormStyle := fsNormal;
inherited CreateParams(Params);
end;

Но ваше, конечно, попроще будет. спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто работал с RTTI?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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