Проблема при изменении значения переменной из списка переменных отчёта(замена 1 символа - нижний/вер
Добрый день!
В поле компонента EDIT введён текст, при замене символа в верхнем/нижнем регистре на соответствующий символ в нижнем/верхнем регистре ( 'A' на 'a' например)
Get не отрабатывает ( или Set скорее даже),значение переменной из списка переменных отчёта остаётся прежним.
... В чём загостка? При добавлении/удалении символов,замене символа не на парный по upper/lower
проблема не возникает, ниже - урезанный пример бедствия :
procedure Button2OnClick(Sender: TfrxComponent);
begin
Set('acc_iban',CHR(39)+Edit1.TEXT+CHR(39));--присваиваем значение
label5.caption := Get('acc_iban'); -- возникает проблема
label4.caption := Edit1.TEXT; --отрабатывает без проблем
--здесь тоже плохо, sql из IBANChecker1 отрабатывает с предыдущим значением
IBANChecker1.Open;
IBANChecker1.First;
// while not IBANChecker1.Eof do
begin
label2.caption := IBANChecker1.Fields[0].AsString;
label3.caption := IBANChecker1.Fields[1].AsString;
// IBANChecker1.Next;
end;
IBANChecker1.Close;
end;
procedure Edit1OnChange(Sender: TfrxComponent);
begin
Set('acc_iban',CHR(39)+Edit1.TEXT+CHR(39));
label5.caption := Get('acc_iban'); -- возникает проблема
label4.caption := Edit1.TEXT; --отрабатывает без проблем
end;
дополнено :
аналогичная проблема если задавать значение переменной таким способом
Report.Variables.Variables :=CHR(39)+Edit1.TEXT+CHR(39);
В поле компонента EDIT введён текст, при замене символа в верхнем/нижнем регистре на соответствующий символ в нижнем/верхнем регистре ( 'A' на 'a' например)
Get не отрабатывает ( или Set скорее даже),значение переменной из списка переменных отчёта остаётся прежним.
... В чём загостка? При добавлении/удалении символов,замене символа не на парный по upper/lower
проблема не возникает, ниже - урезанный пример бедствия :
procedure Button2OnClick(Sender: TfrxComponent);
begin
Set('acc_iban',CHR(39)+Edit1.TEXT+CHR(39));--присваиваем значение
label5.caption := Get('acc_iban'); -- возникает проблема
label4.caption := Edit1.TEXT; --отрабатывает без проблем
--здесь тоже плохо, sql из IBANChecker1 отрабатывает с предыдущим значением
IBANChecker1.Open;
IBANChecker1.First;
// while not IBANChecker1.Eof do
begin
label2.caption := IBANChecker1.Fields[0].AsString;
label3.caption := IBANChecker1.Fields[1].AsString;
// IBANChecker1.Next;
end;
IBANChecker1.Close;
end;
procedure Edit1OnChange(Sender: TfrxComponent);
begin
Set('acc_iban',CHR(39)+Edit1.TEXT+CHR(39));
label5.caption := Get('acc_iban'); -- возникает проблема
label4.caption := Edit1.TEXT; --отрабатывает без проблем
end;
дополнено :
аналогичная проблема если задавать значение переменной таким способом
Report.Variables.Variables :=CHR(39)+Edit1.TEXT+CHR(39);
Комментарии
Report.Variables.Variables := CHR(39) + CHR(39) + Edit1.TEXT + CHR(39) + CHR(39);
Пробовал уже, тогда уже вот так :
Report.Variables.Variables :=CHR(39)+Edit1.TEXT+CHR(39);
Та же проблема. Знающие люди мне уже сказали в чём скорее всего проблема :
"В Delphi при сравнении строк и текста используют AnsiCompareText или ей подобную, а она не чувствительна к регистру"
Похоже, в FR в описании класса variables (или как он там , исходников я не видел) где-то эта функция в методе Set зашита.
И вот как это обойти?
Если не сложно, введите в поле EDIT значение , скажем ABC. Нажмите на кнопку, убедитесь, что CAPTION у LABEL теперь ABC.
Теперь замените 1 символ в EDIT, скажем вместо A - a , получаем в поле EDIT - aBC. Снова жмём на кнопку - видим CAPTION у LABEL ABC, но не aBC.
По крайней мере у меня так.
Проблема не в CHR(39) , при некорректном количестве кавычек мы увидим ошибку.
В label.caption уже выводиться должен результат работы функций.