Последняя версия DataExpress 3 beta от 2 ноября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

вывод записей формы на экран

Все о том как сделать что-то с помощью скриптов.
kok80
Интересующийся
Сообщения: 65
Зарегистрирован: Пн июл 02, 2018 9:45 pm

вывод записей формы на экран

Сообщение kok80 » Ср сен 12, 2018 11:31 pm

Почему работает такой код (отображает записи по фильтру формы на экране):

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

procedure onClick(Sender: TObject);
var
  win:twindow;
  FormView:TFormView;
  form:tdxform;
begin   
  win:=twindow.create;
  win.parent:=MainWindow;
  win.setbounds(mainwindow.left,mainwindow.top,mainwindow.width,mainwindow.height);
  FormView:=TFormView.create(win,'0 Экспедирование',vtGridOnly);
  FormView.parent:=win;
  FormView.setbounds(mainwindow.left,mainwindow.top,mainwindow.width,mainwindow.height);
  FormView.form.openRecords('[коносамент]="6173561660"',true);
  win.show;
end; 


и не работает такой (ничего не меняется в отображении)

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

  formView:=MainWindow.FormViews[MainWindow.Pages.ActivePageIndex];
  formView.form.openRecords('[коносамент]="6173561660"',true);
  formview.refresh;   

Аватара пользователя
admin
Разработчик
Сообщения: 3898
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: вывод записей формы на экран

Сообщение admin » Чт сен 13, 2018 6:15 am

По первому скрипту:
1. Зачем Вы указали родителя Parent окну?
2. Окно открывайте в модальном режиме методом ShowModal.
3. Не забывайте освобождать память занятую объектами методом Free.
4. У компонентов есть свойство Align для размещения в клиентской области. Т. е. вместо SetBounds можно было использовать Align := alClient.

По второму:
Вызов Refresh лишний. Refresh - это последовательность Close и Open.

kok80
Интересующийся
Сообщения: 65
Зарегистрирован: Пн июл 02, 2018 9:45 pm

Re: вывод записей формы на экран

Сообщение kok80 » Чт сен 13, 2018 9:55 am

1) с этим понятно

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

procedure onClick_duplicate(Sender: TObject);
var
    win:twindow;
    FormView:TFormView;
    form:tdxform;
begin
  win:=twindow.create;
  win.setbounds(mainwindow.left,mainwindow.top,mainwindow.width,mainwindow.height);
  FormView:=TFormView.create(win,'0 Экспедирование',vtGridOnly);
  FormView.parent:=win;
  FormView.align:=alClient;
  FormView.form.openRecords('[коносамент]="6173561660"',true);
  win.showmodal;
end;


2) с этим непонятно - как заставить отображаться нужные записи формы в текущем окне формы, а не в новом как в 1)

Аватара пользователя
admin
Разработчик
Сообщения: 3898
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская

Re: вывод записей формы на экран

Сообщение admin » Чт сен 13, 2018 10:55 am

Приложите базу.

kok80
Интересующийся
Сообщения: 65
Зарегистрирован: Пн июл 02, 2018 9:45 pm

Re: вывод записей формы на экран

Сообщение kok80 » Чт сен 13, 2018 9:21 pm

разобрался, нужно было перед открытием закрыть форму

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

  formView:=MainWindow.FormViews[MainWindow.Pages.ActivePageIndex];
  formView.form.close;
  formView.form.openRecords('[коносамент]="6173561660"',true);