Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

"Непонятка" в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.068 c
15-1183444792
IMHO
2007-07-03 10:39
2007.07.29
Проблема 2000 года...


6-1166033544
XfroSt
2006-12-13 21:12
2007.07.29
IndyUDPServer - Адрес назначения пакета, Как узнать в событии UDP


2-1183383487
Sventitskiy
2007-07-02 17:38
2007.07.29
Проблемы с памятью


2-1183425203
Dreamse
2007-07-03 05:13
2007.07.29
Как найти все созданные формы ? Перечислить.


2-1183353933
Vasyl
2007-07-02 09:25
2007.07.29
Вставка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский