Форум: "Прочее";
Текущий архив: 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.051 c