Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.29;
Скачать: CL | DM;

Вниз

"Непонятка" в FastReport 3.x   Найти похожие ветки 

 
Сергей М. ©   (2007-07-03 17:02) [0]

В сабже имеется декларация:

TfrxGetValueEvent = procedure(const VarName: String; var Value: Variant) of object;

Вопросы:

1. Где Sender ? Забыли ?

2. Если не забыли, то дурак ли я ?)

3. Если не дурак, то извинились ли разработчики за сабж в FR4?


 
Romkin ©   (2007-07-03 17:16) [1]

А нафига тебе sender? :)
Все, что тебе нужно - выдать значение переменной с данным именем


 
Сергей М. ©   (2007-07-04 08:17) [2]


> Romkin ©   (03.07.07 17:16) [1]


Предроложим, обработчик такого прототипа назначен событиям OnGetValue двух или более объектов TfrxUserDataset. Задача обработчика - вернуть значение поля с именем VarName тек.записи этого НД. Ни о каких "переменных" в таком случае речи не идет. Сразу возникает вопрос - какой из этих НД возбудил событие ? Sender"то отсутствует напрочь)..


 
Kolan ©   (2007-07-04 08:59) [3]

> А нафига тебе sender? :)

Это де факто стандарт, хотябы по этому.


 
Romkin ©   (2007-07-04 09:30) [4]


> Предроложим, обработчик такого прототипа назначен событиям
> OnGetValue двух или более объектов TfrxUserDataset. Задача
> обработчика - вернуть значение поля с именем VarName тек.
> записи этого НД.

Никогда с такой задачей не сталкивался :) Опять же - а почему нельзя использовать просто поля датасета? Почему именно через переменные?


 
Jeer ©   (2007-07-04 10:11) [5]


> Сергей М. ©   (04.07.07 08:17) [2]


Вообще-то, getvalue предназначен для передачи в отчет значений переменных.
Как показано ниже, в отчете объявлены переменные с именами в скобках и им присваиваются значения переменных из модуля fmDebit с аналогичными именами.
Или я не о том ?

procedure TfmDebit.frRepGetValue(const ParName: String;
 var ParValue: Variant);
begin
//  inherited;
 if ParName = "AllowWho" then ParValue := AllowWho;
 if ParName = "AllowNum" then ParValue := AllowNum;
 if ParName = "AllowDate" then ParValue := AllowDate;


 
Jeer ©   (2007-07-04 10:14) [6]

Или еще пример:
В данном случае в отчете вылезает одна из двух надписей в зависимости от состояние контрола chkbox

procedure TfmCredGoods.frRepGetValue(const ParName: string;
 var ParValue: Variant);
begin
 inherited;
 if ParName = "Rep" then begin
   if chkINTMOVE.Checked then ParValue := "Внутренний"
   else ParValue := "Внешний";
 end;
end;


 
Сергей М. ©   (2007-07-05 08:16) [7]


> Jeer ©   (04.07.07 10:11) [5]


> getvalue предназначен для передачи в отчет значений переменных


А хоть бы и для этой цели !
Что это меняет ?
Вот у меня, к примеру, два отчета. В каждом есть некие одноименные переменные. Я вправе назначить обоим отчетам событию OnGetValue один и тот же обработчик. И вновь выплывает тот же вопрос - как в обработчике за неимением Sender"а определить, какой из отчетов возбудил тек.событие ?)


 
turbouser ©   (2007-07-05 08:21) [8]


> Сергей М. ©   (05.07.07 08:16) [7]

Что мешает сделать разноименные переменные?


 
Сергей М. ©   (2007-07-05 08:31) [9]


> turbouser ©   (05.07.07 08:21) [8]


Ничто не мешает)

Более того, ситуация с переменными меня в дан.случае совершенно не интересует, см. упоминание НД в [2]. Почему я не вправе иметь некие одноименные поля в двух или более НД ?)


 
Jeer ©   (2007-07-05 10:00) [10]


> вправе иметь некие одноименные поля в двух или более НД
> ?)


Правила хорошего тона предполагают именование полей prefix_fieldname


 
Сергей М. ©   (2007-07-05 10:08) [11]


> Jeer ©   (05.07.07 10:00) [10]


Ты серьезно ?)

А вот мне почему-то кажется, что правила хорошего тона при разработке компонентов таки предполагают наличие Sender"а параметром метода-обработчика.

И то ли эти правила были умышленно проигнорированы по каким-то мне пока непонятным причинам, то ли это было просто досадное упущение, возможно наверстанное в 4-ке (что не могу проверить за неимением оной на сей момент)


 
turbouser ©   (2007-07-05 10:32) [12]


> Сергей М. ©   (05.07.07 10:08) [11]

http://fast-report.com/ru/forum/


 
Cobalt ©   (2007-07-05 11:14) [13]

> Jeer ©   (04.07.07 10:11) [5]
>
> procedure TfmDebit.frRepGetValue(const ParName: String; var ParValue: Variant);
> begin
> //  inherited;
>  if ParName = "AllowWho" then ParValue := AllowWho;
>  if ParName = "AllowNum" then ParValue := AllowNum;
>  if ParName = "AllowDate" then ParValue := AllowDate;



ParValue:=Strings.Values[ParName];
:)


 
Jeer ©   (2007-07-05 11:40) [14]


> Cobalt ©   (05.07.07 11:14) [13]


да не суть:))



Страницы: 1 вся ветка

Текущий архив: 2007.07.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
15-1183009073
Andy BitOff
2007-06-28 09:37
2007.07.29
Пятое измерение можно наблюдать в областях сверхгравитации


9-1157052402
Ketmar
2006-08-31 23:26
2007.07.29
http://shmup-dev.com/ -- конкурс начался


1-1179816164
leonidus
2007-05-22 10:42
2007.07.29
Как переконвертировать Color в Hex ?


15-1183440283
boriskb
2007-07-03 09:24
2007.07.29
Студентам и школьникам


15-1183542272
Виктор007
2007-07-04 13:44
2007.07.29
Coco/R for Delphi