Вызов интерфейса

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Вызов интерфейса

Сообщение niteo »

Возник вопрос, можно ли из диалога вызвать интерфейс? Если да, подскажите как... И не подскажите, где достать доку по маркерам?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Из диалога нельзя.
Но сделать в интерфейсе окно с признаком dialog:

Window WinBoss 'Выбор руководителя', Cyan, DoAccept, Dialog;
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

...ну или просто в screen описать что требуется, то бишь вызов интер-са
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Спасибо. В общем так и думал :)
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Еще вопрос.
при вызове интерфейса из поля с атрибутом pickButton, как я понял код должен выглядеть так:

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

var
  cpodr: comp; 

fields
  catalogs.name: [35], PickButton;
end;

...

handleevent
cmPick:
{
  if (CurField = #name)
    RunInterface('PickCatalog2', -11, cpodr, 100);
}
end;
Или в начале перед описанием fields необходимо сделать SELECT
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

В ЛОТ интер-са обычно для Вашего случая описывают правильно вычисляемое поле, которое будет отображатся в поле выбора интер-са после возврата значения (выбрано ведь может быть не одно значение...). Если одно, то проще конечно
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Простите, я немного не догоняю.
В ЛОТ интер-са обычно для Вашего случая описывают правильно вычисляемое поле
Я только начал разбираться с интерфейсами. Как я понял при описании поля мне необходимо передать поле, из таблички используемой в интерфейсе.... я выбрал catalogs.name???. Далее идет длинна поля [35] и дальше, опция, которая грит что необходимо для поля сделать кнопочку.

Я думаю, что при выборе подразделения, данные запишутся в маркер, и их я выберу в своем отчете. Я прав в своих рассуждениях?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

а если Вы в инте-се выбора пометили несколько значений, то что хотите отображать ?
Конечно, может не так Вас понял. Если Вы просто хотите в каком то поле вызывать некий инт-с и использовать выбранные значение для своих каких то дальнейших алгоритмов - то можно и так оставить
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Ок, спасибо всем
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Решил продолжить тему.
Подскажите где я ошибаюсь...?
Вызываю интерфейс из ard отчета, в нем вызываю другой интерфейс, вот код:

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

interface dialogtest 'dialogtest'; //
create view;
var
  cpodr: comp;
  mes: integer;
  god:  integer;
  DepartmentMarker: longint;
  DepartmentFilterStr: string;

screen scrtest;
fields
        mes;
        god;
        DepartmentFilterStr ('Фильтр по филиалу'): protect, pickbutton;
buttons
        cmOk, default;
        cmCancel;

<<'Выберите критерии отчета'

 `Месяц` .@@@     `Год` .@@@@@

 `Фильтровать:`
    `по подразделениям`   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

                                      <.  OK  .>  <. Cancel .>
>>
end;
//------------------------------------------------
HANDLEEVENT
cmPick:
  case CurField of
      #DepartmentFilterStr :
  	  {
		  cpodr := 0;
	  	  RunInterface('Z_STAFFCAT::PickCatalog2', Integer(-11), cpodr, Comp(100));
	  }
  end;
end;
end.
Окно онтерфейса появляется, жму на кнопку [...] после чего появляется интерфейс PickCatalog2. В нем уже выбрано подразделение, пытаюсь снять выделение (жму insert) выскакивает сообщение с ошибкой:
Запись не найдена. таблица CATALOGS :?
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

DSK почистить пробовали?
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

KATZ писал(а):DSK почистить пробовали?
Я так понимаю, что мне необходимо удалить ранее созданный маркер? Если да то есть процедура DeleteMarker, но она принимает первым параметром уникальный идентификатор маркера. а его у меня нету :(
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Для начала без всякого программирования попробуйте удалить DSK-файл, в нем лежит этот маркер, а в маркере, возможно, - какой-то мусор от прежних вызовов.
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Да, скорее всего вы оказались правы. Запустил в другом клиенте, все получилось. Хотя я удалял свой DSK но это не помогло, думаю надо было еще удалить tmp, но в данный момент этот клиент использовали другие пользователи.... Спасибо вам. :)
Ответить