Страница 1 из 2

Как определить представление формы?

Добавлено: Чт июн 29, 2017 9:48 pm
jurist23rus

Код: Выделить всё

if MainWindow.FormViews[MainWindow.Pages.ActivePage] = vtGridOnly then

Что-то такое, но не такое :) Есть у кого идеи?

Re: Как определить представление формы?

Добавлено: Пт июн 30, 2017 10:06 am
jurist23rus
Никто не знает. Admin только на Вас надежда. Выручайте.

Re: Как определить представление формы?

Добавлено: Пт июн 30, 2017 1:35 pm
admin
Э-эх. Ну можно ведь было поискать в дереве классов что такое FormViews?! На данный момент узнать какое представление у формы нельзя. Можно только создать Представление (TFormView) нужного вида или окно списка.

Re: Как определить представление формы?

Добавлено: Сб июл 01, 2017 11:09 am
jurist23rus
admin писал(а):поискать в дереве классов что такое FormViews

Я посмотрел, но это не добавило мне понимания для чего нужен этот класс. Какое его предназначение? Из дерева компонентов видно, что это потомок TCustomPanel, то есть панель, но для чего эта панель в DX я не понимаю.

Re: Как определить представление формы?

Добавлено: Сб июл 01, 2017 2:34 pm
admin
FormView - это контейнер для формы и табличной части. Он в закладках, окнах списка.

Re: Как определить представление формы?

Добавлено: Вс июл 02, 2017 3:35 pm
neitri
Может добавить свойство ViewType в класс TdxForm?

Re: Как определить представление формы?

Добавлено: Вс июл 02, 2017 5:06 pm
admin
Добавлю.

Re: Как определить представление формы?

Добавлено: Вс июл 02, 2017 8:40 pm
neitri
Можно так по извращяться

Код: Выделить всё

var
  SQLG: TdxSQLQuery;
  sl:TStringlist;
  l,i:integer;
  q:string;
 begin
  q:='select FORM from DX_FORMS where ID='+inttostr(self.id);
  debug(q);
  SQLG:=SQLSelect(q);
  sl:=Tstringlist.create;
  With SQLG do
  Begin
    While not EOF do
    Begin
      debug(SQLG['FORM']);
      sl.text:=SQLG['FORM'];
      for l:=0 to sl.count-1 do
        if pos('ViewType',sl.strings[l])>0 then
          begin
            i:=pos('=',sl.strings[l]);
            debug(trim(copy(sl.strings[l],i+1,length(sl.strings[l])-i)));
          end;
      MoveNext;
    End;
    Free;
  End;
  sl.free;
 end;

Re: Как определить представление формы?

Добавлено: Вс июл 02, 2017 8:50 pm
YurAnt
Через базу... Оригинально :) .

Re: Как определить представление формы?

Добавлено: Ср июн 12, 2019 12:48 pm
Vofka18
Подскажите как можно проверить ViewType формы, по имени формы (то-есть не через self), при подключении расширения?
В расширении мне нужно, что бы пользователь мог выбрать только простые формы. Или при подключении выдавать сообщение, что выбранная форма не является простой. Но например такой код, всегда возвращает ViewType =vtGridOnly.

Код: Выделить всё

  fm := TdxForm.Create('имя формы для проверки');
  fm.Open();
  if(fm.viewType<>vtSimpleForm) then
  begin
    msgbox('Ошибка','Можно использовать только простую форму!');
    fm.free;
    exit;
  end;

или может возможно в тегах фильтр установить?