Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто работал с RTTI? / 4 сообщений из 4, страница 1 из 1
07.12.2002, 19:35
    #32077046
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто работал с RTTI?
Добрый день.
Есть у меня приложение с 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
08.12.2002, 11:44
    #32077070
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто работал с RTTI?
Устанавливать FormStyle можно только на этапе создания формы.
Посему задавайте FormStryle := fsNormal в обработчике OnCreate необходимой формы.
Не забудьте - Visible формы должно быть установлено в False.
Только после этого ShowModal отработает верно.
Вот.
...
Рейтинг: 0 / 0
08.12.2002, 12:35
    #32077075
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто работал с RTTI?
... или для уже созданной формы при FormStyle = fsMDIChild
1. FormFtyle := fsNormal;
2. Visible := False;
3. ShowModal;
...
Рейтинг: 0 / 0
09.12.2002, 13:22
    #32077332
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто работал с RTTI?
Спасибо. Мне ещё предложили более сложный путь - перекрыть 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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кто работал с RTTI? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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