Главная страница
    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.044 c
15-1182974563
IMHO
2007-06-28 00:02
2007.07.29
Как вы решаете проблему с Интернетом во время отпуска?


2-1183491972
Ivolg
2007-07-03 23:46
2007.07.29
Использование без TMemoryStream


2-1183362315
tytus
2007-07-02 11:45
2007.07.29
Нормальная Child - форма - как создать?


15-1183462782
avsam
2007-07-03 15:39
2007.07.29
Плагин для Delphi 6 линии begin end


15-1183185795
@!!ex
2007-06-30 10:43
2007.07.29
ATI Аналог 7 серии GeForce..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский