FastReport обработки нажмите на поле - PullRequest
1 голос
/ 27 сентября 2011

Вопрос в том, как обработать щелчок по полю и вызвать процедуру из основной программы.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Да, это так. Я не знаю, что вы имеете в виду под полем и какую версию FastReport вы используете, но я постараюсь показать вам принцип взаимодействия с объектами отчета (это можно сделать для любого объекта отчета в предварительном просмотре окно). Однако событие TfrxReport.OnClickObject отличается от версий FastReport, поэтому в зависимости от используемой версии это может немного отличаться.

Следующий пример (написанный с версией 4.12) взаимодействует с Memo1, то есть Text object (TfrxMemoView), помещенным во время разработки в отчете frxReport1. Остальное, что вам нужно, это написать код для OnClickObject обработчика событий в вашей главной форме.

procedure TForm1.frxReport1ClickObject(Sender: TfrxView;
  Button: TMouseButton; Shift: TShiftState; var Modified: Boolean);
begin
  // comparing names is not so efficient, so for many controls I would use
  // rather Sender.Tag and set the Tag property at report design time and
  // use case Sender.Tag of construction

  if Sender.Name = 'Memo1' then // is the Sender my Memo1 text object ?
  begin
    if fsBold in (Sender as TfrxMemoView).Font.Style then // is Memo1 font bold ?
    begin
      (Sender as TfrxMemoView).Font.Style := []; // then set it to default
      ShowMessage('You just set memo text font to default'); // display message
    end
    else
    begin
      (Sender as TfrxMemoView).Font.Style := [fsBold]; // else set it to bold
      ShowMessage('You just emphased your memo text font'); // display message
    end;

    Modified := True; // setting Modified to True causes the report to refresh
  end;
end;
0 голосов
/ 18 июня 2013

Если вам нужно поставить другой текст, попробуйте один вариант:

(Sender as TfrxMemoView).Text := 'Hi friend';

или

TfrxMemoView(Sender).Text := 'Hi friend';
...