Вопрос как обработать нажатие на поле и вызвать процедуру из основной программы.
Обработка FastReport нажмите на поле
Ответы (2)
Да, это. Я не знаю, что вы имеете в виду под полем и какую версию 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;
person
TLama
schedule
27.09.2011
Если вам нужно поставить другой текст, попробуйте один из вариантов:
(Sender as TfrxMemoView).Text := 'Hi friend';
or:
TfrxMemoView(Sender).Text := 'Hi friend';
person
Carlos Daniel
schedule
18.06.2013