Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Лицензия FastReport за багрепорты и багофиксы

Автор: Garrett
Дата сообщения: 30.09.2005 22:44
.GloThin
Вот еще насчет локализации и дин.объектах.
В студии меняем язык скажем с рус на анг. В левом нижнем углу как были саитиметры так и остались. Но если щелкнуть по ним для перехода на дюймы-точки, то порядок, загружаются анг.ресурсы, в т.ч. и сантиметры. Думаю здесь нет наверное никаких проблем сразу поменять язык, и не нужна перезагрузка дизайнера. Т.е. это баг
Автор: GloThin
Дата сообщения: 01.10.2005 03:29
Garrett

Цитата:
Вот еще насчет локализации и дин.объектах.

Это вопрос к разработчикам, я к их числу не отношусь...
Я просто привел фразу My_Way по поводу вопроса gpi на эту тему.
Ждем появления разработчика для разъяснения этого вопроса.
Но это,как показала статистика, будет не раньше понедельника...
Автор: Garrett
Дата сообщения: 01.10.2005 22:42
FR Studio и обычный Фастик

Вот еще пара багов. Я писал вчера о них Му_Waу'ю, просто сейчас выявил некоторую закономерность.


1.
Если отработать скрипт до какой-нибудь команды(точка останова), то инспектор объектов - пустой(даже сетка не видна), за исключением какой-нибудь строки. Эта строка value того поля, которое было выбрано до запуска отчета.
Если поводить мышой по инспектору, то появляются подказки на поля(и названия полей и их значения), которые сейчас невидимы.
При щелчках на поля-значения будет выводится описание поля в нижнем окошке.


2.
Все тоже самое, что п.1.
Если видимая строка - комбобокс(можно до запуска отчета специально щелкнуть на поле с комбобоксом), то нажав стрелку(для выбора значений), выбрать что-нибудь, а затем щелкнуть куда-нибудь в инспекторе, высвечивается весь инспектор объектов. И даже можно переходить по объектам.
После этого часто появляются AV, особенно после выхода из превью.


Если строка не комбобокс, то инспектор не удается высветить, но он скорее всего будет ругаться на недопустимые данные.


Автор: Garrett
Дата сообщения: 02.10.2005 17:54
Вот еще...

FR Studio demo 3.18.10 - 3.18.14

Эти сборки ругаются на константы цвета в скрипте.
Н-р, в строке
Memo1.Color = clRed;
clRed - это undeclared identifier.


В FR Studio demo 3.18.9 - всё нормально!

Добавлено позже.
Александр написал мне, что поправили. Жду 15-ю бету.
Автор: Nicka_Grey
Дата сообщения: 03.10.2005 15:13
1)В дизайнере на чистую страницу кладем объект Memo, свойство Allign=baClient. Выставлем для этого Memo выравнивание "по нижнему краю". Добавляем в этот Меmо несколько строк (например 5) - ни одной на странице не видно, все за пределами страницы. Добавляем еще одну (т.е. 6 строк), теперь строка в пределах страницы.
2)В дизайнере на чистую страницу кладем любой объект, свойство Allign=baClient.
2а)Вызываем просмотр, дальше параметры страницы, изменяем верхнюю границу, и все... объект съехал и вышел за пределы станицы.
2б)При изменении нижней границы - ничего не происходит, т.е. нижняя граница не изменяется.
2в)При возврате в дизайнер изменения теряются.
2а), 2б) и 2в) правильно работают только если в диалоге "Параметры страницы" выбрать "Применить ко всем страницам"
Автор: gpi
Дата сообщения: 03.10.2005 19:47
Nicka_Grey
с первым багом справляется фикс со второй страницы (посты № 23 и 30), а вот со вторым нужно разбираться
GloThin
есть над чем поработать

Добавлено:
Nicka_Grey
Вот фикс, который устраняет оба бага:

Код:
//frxClass.pas
procedure TfrxReportPage.AlignChildren;
var
i: Integer;
c: TfrxComponent;
begin
Width := (FPaperWidth - FLeftMargin - FRightMargin) * fr01cm;
Height := (FPaperHeight - FTopMargin - FBottomMargin) * fr01cm; //fix
inherited;
for i := 0 to Objects.Count - 1 do
begin
c := Objects[i];
if c is TfrxBand then
begin
if TfrxBand(c).Vertical then
c.Height := (FPaperHeight - FTopMargin - FBottomMargin) * fr01cm - c.Top
else
c.Width := Width - c.Left;
if c.Width > Width then c.Width := Width; //fix
if c.Height > Height then c.Height := Height; //fix
c.AlignChildren;
end;
end;
UpdateDimensions;
end;
Автор: Garrett
Дата сообщения: 03.10.2005 22:17
gpi
Молодец.

Теперь неплохо бы было если бы разработчики всё учли и пофиксили в очередной бетке Фастика(ну и Студии тоже). А то уже неделю ничего не делали с Фастиком
Автор: GloThin
Дата сообщения: 04.10.2005 05:46
gpi

Цитата:
Твой багофиксатор пришлось убрать, т.к. он уменьшал размеры страницы. Это хорошо видно, если в отчёт добавить пустую страницу, чтобы она служила эталоном.

Он не нужен в версии 3.18, так как не проявляется та ситуация для которой он был сделан. А было в версии 3.16.
Garrett

Цитата:
А то уже неделю ничего не делали с Фастиком

Делали, делали...

Цитата:

Файл изменений продукта

Текущая
-------------
- исправлен баг с выравниванием baClient
- исправлен баг с матричными объектами (дизайнер, ядро)
- исправлен баг с иконкой приложения
.....
Автор: martyanov
Дата сообщения: 04.10.2005 08:08
Пользуюсь версией 3.07, поэтому не могу сказать, исправлен ли нижеописанный баг в последующих версих.

На странице лежит 5 band-ов: PageHeader и 4 Child-а, пронумерованные от 1 до 4 в порядке следования сверху вниз. У Child1 и Child3 Streched := True.
Создаем отчет на основе шаблона (формирование данных идет через имена переменных, значения передается из программы через событие OnGetValue). Если значение, помещаемое в memo на Child1 небольшое по вертикали и все band-ы попадают на одну страницу - все прекрасно работает. Как только отчет перестает помещаться на одну страницу - метод PrapareReport зацикливается и начинает жрать память дикими темпами.
У всех band-ов AllowSplit := True.

Файл отчета могу выслать.
Автор: Garrett
Дата сообщения: 04.10.2005 09:37
GloThin
Когда я писал, они еще пятую бетку не положили.
Автор: GloThin
Дата сообщения: 04.10.2005 11:45
Garrett

Цитата:
Когда я писал, они еще пятую бетку не положили.

Я имел в виду другое:

Цитата:
- исправлен баг с выравниванием baClient

Эта вещь была исправлена в конце прошлой недели, но почему-то так называемый ДАйлиБилд не был выпущен...
Автор: DroN_S
Дата сообщения: 04.10.2005 14:03
Есть идея, добавить в к набору функций, функцию округления до нескольких знаков...
Есть код, который это выполняет, но я не знаю куда его вставить
Автор: Garrett
Дата сообщения: 04.10.2005 14:03
GloThin
Н-е, они все силы бросили на студию (она ведь успела обновиться 14 раз против 5 у Фастика).
Автор: gpi
Дата сообщения: 04.10.2005 15:40
DroN_S

Цитата:
Есть код, который это выполняет, но я не знаю куда его вставить

модуль fs_isysrtti.pas
constructor TFunctions.Create;
а там, думаю, разберёшься
Автор: DroN_S
Дата сообщения: 04.10.2005 21:04
gpi

А вот и исполнение моей идеи:


Код:
модуль fs_isysrtti.pas
//begin fix
function MyRound(X:Extended; N: Integer): Extended;
var
i,i1: Integer;
begin
Result := X;
i1 := 1;
for i := 1 to N do
i1 := i1*10;
result := Trunc(Result*i1+0.5)/i1;
end;
//end fix

constructor TFunctions.Create;
begin
FCatStr := 'ctString';
FCatDate := 'ctDate';
FCatConv := 'ctConv';
FCatFormat := 'ctFormat';
FCatMath := 'ctMath';
FCatOther := 'ctOther';
//......
//begin fix
AddMethod('function RoundTo(X:Extended; N: Integer): Extended', CallMethod6, FCatMath);
//end fix
end;

function TFunctions.CallMethod6(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'ROUND' then
Result := Integer(Round(Params[0]))
//begin fix
else if MethodName = 'ROUNDTO' then
Result := MyRound(Params[0], Params[1])
//end fix
else if MethodName = 'TRUNC' then
Result := Integer(Trunc(Params[0]))
else if MethodName = 'INT' then
Result := Int(Params[0])
else if MethodName = 'FRAC' then
Result := Frac(Params[0])
else if MethodName = 'SQRT' then
Result := Sqrt(Params[0])
else if MethodName = 'ABS' then
Result := Abs(Params[0])
else if MethodName = 'SIN' then
Result := Sin(Params[0])
else if MethodName = 'COS' then
Result := Cos(Params[0])
else if MethodName = 'ARCTAN' then
Result := ArcTan(Params[0])
else if MethodName = 'TAN' then
Result := Sin(Params[0]) / Cos(Params[0])
else if MethodName = 'EXP' then
Result := Exp(Params[0])
else if MethodName = 'LN' then
Result := Ln(Params[0])
else if MethodName = 'PI' then
Result := Pi
end;
Автор: gpi
Дата сообщения: 04.10.2005 22:02
DroN_S

Цитата:
теперь есть функция округления до нескольких знаков после запятой

Есть одно замечание: а если будет округляться отрицательное число?
Я бы сделал округление так:

Код:
result := Round(Result*i1)/i1;
Автор: DroN_S
Дата сообщения: 04.10.2005 22:32
gpi

Цитата:
а если будет округляться отрицательное число

я проверял, всё работает и при таком варианте

Код:
result := Trunc(Result*i1+0.5)/i1;
Автор: martyanov
Дата сообщения: 05.10.2005 07:09
баг:
Если в дизайнере открыть список переменных и перейти на закладку функции, то внизу в области подсказки не показывается вторая строка названия функции,если название длинное (видны только обрывки второй строки)

фикс:
//frxEditVar.pas
procedure TfrxVarEditorForm.FormCreate(Sender: TObject);
..
FDataTree.HintPanel.Height := 60;
FDataTree.HintPanel.Constraints.MinHeight := 32; //fix
FDataTree.FunctionNameL.Height := 28{17}; //fix
FDataTree.UpdateItems;
..
Автор: gpi
Дата сообщения: 05.10.2005 07:27
DroN_S

Цитата:
проверь у себя

я не говорю, что это не будет работать. Но, например, число (-2,16). Если округлять до одного знака после запятой, получится по твоему алгоритму Trunc(-2,16*10+0,5)/10=-2,1
А если округлять (-2,1) до одного знака, то получится (-2,0).
Автор: DroN_S
Дата сообщения: 05.10.2005 10:28
gpi

Цитата:
А если округлять (-2,1) до одного знака, то получится (-2,0).

неверное значени возникает при округлении (-2.1) до нуля знаков после запятой, а до одного знака получается (-2)... этов принципе и не столь важно, для этого есть функция Round, тохя можно сделать универсал-одну функцию, убрать Round(стандарт) вместо неё добавить мою и тогда, да, разумно будет использовать result := Round(Result*i1)/i1;, а иначе нет смысла, всё работает нормально... только что проверял...

Добавлено:
gpi
хотя я с тобой соглашусь...
лучше использовать

Код:
result := Round(Result*i1)/i1;
Автор: Garrett
Дата сообщения: 05.10.2005 15:11
martyanov
В Студии для названия функции уже отведено 3 строки.
В какой версии Фаста у тебя проблемы?
Автор: DroN_S
Дата сообщения: 05.10.2005 17:57
Garrett

Цитата:
В какой версии Фаста у тебя проблемы?

ответ martyanov

Цитата:
Пользуюсь версией 3.07

внимательность и ещё раз внимательность
Автор: gpi
Дата сообщения: 05.10.2005 19:01
Garrett

Цитата:
В Студии для названия функции уже отведено 3 строки.

В FR Studio 3.18.11 для названия функции выделяется одна строка и две - для описания. Та же ситуация с FR 3.18.4
Автор: Garrett
Дата сообщения: 05.10.2005 19:31
DroN_S
gpi
Извиняюсь, я смотрел на правое нижнее окно в дизайнере.
Но окно переменных растягивается, надо просто раз и навсегда установить ширину побольше. Размеры сохраняются. Багом считать трудно.
Автор: gpi
Дата сообщения: 05.10.2005 19:53
Вот ещё баг в студии 3.18.11:
добавляем в дизайнере диалоговую форму, бросаем на неё панель, пытаемся изменить цвет панели. В инспекторе объектов цвет меняется, но визуально - нет. На предосмотре тоже не меняется. Если потом поменять цвет формы на отличный от цвета панели, то панель приобретает цвет формы, а в инспекторе показывается старое значение.
Это происходит при включённой теме Windows XP, а при классической ещё у радиокнопок и чекбоксов цвет Caption всегда белый
В FastReport всё нормально - приятно видеть свой код, хоть и слегка изменённый

Garrett

Цитата:
Багом считать трудно

Ну тогда убрать хотя бы обрывки второй строки. My_Way рассудит
Автор: DroN_S
Дата сообщения: 05.10.2005 21:52
gpi

Цитата:
В FastReport всё нормально - приятно видеть свой код, хоть и слегка изменённый

В скором времени надеюсь твою радость разделят все участники акции
Автор: Garrett
Дата сообщения: 05.10.2005 22:02
Вот еще пара упущений.
Если закомментировать блок ниже главной процедуры в скрипте, а там есть фиг.скобки, то обработчики сажаются в закоментированную секцию и естественно не обрабатываются.
Т.е.
Пишем что-то вроде

{

}

/*
{
}
*/

Потом кидаем кнопку на диалог и щелкаем на ней.
Обработчик вставляется между "/*" и "{".
{

}

/*
void Button1OnClick(TfrxComponent Sender)
{

}

{
}
*/

Отсюда второй баг.
Допустим обработчик сел ниже главной процедуры и он не обрабатывается (или мы его стерли).
Тогда, наверное, скрипт должен ругаться, что у клавиши указан обработчик Button1OnClick, но такая процедура не найдена до главной процедуры.

Если я сам стер обработчик из кода, то тогда должен буду руками убрать и в инспекторе.
Думаю, что так будет правильно.

gpi
Обрывки от переноса. Как вариант багофикса, можно там отключить перенос по словам.
В любом случае ждем благодетеля
Нагскрины в студии задолбали
Автор: DroN_S
Дата сообщения: 06.10.2005 08:10
Garrett

Цитата:
{

}

/*
{
}
*/

Потом кидаем кнопку на диалог и щелкаем на ней.
Обработчик вставляется между "/*" и "{".
{

}

/*
void Button1OnClick(TfrxComponent Sender)
{

}

{
}
*/

вот с этим у меня всё нормально, по крайней мере в Pascal-скрипте, а вот если на форму бросить кнопку, кликнуть два раза, уйти в код, там обработчик по OnClick, убрать этот обработчик, уйти обратно на форму, то заново обработчик по клику уже не появляется, а инспекторе объектов остаётся событие Button1OnClick...
Автор: Garrett
Дата сообщения: 06.10.2005 08:47
DroN_S
Я работаю в С++Script'e.
А в паскале попробуй
begin

end.
{
begin

end.
}
После добавления обработчика будет так
begin

end.
{
procedure Button1OnClick(Sender: TfrxComponent);
begin

end;

begin

end.
}

2.
На контрол помеченный красной точкой(типа в инспекторе что-то написано) обработчик не создается.
Автор: JustAMaaan
Дата сообщения: 06.10.2005 10:00
Есть отчет, на котором срывает башню фильтру экспорта в TXT (FR 2.54): при экспорте не очень длинного текста (но не влазящего в одну строчку) с моноширинным шрифтом и выравниванием по левому краю вторую строчку отчего-то сносит вправо на несколько знакомест. Сойдет это за багу? Если нужен пример для ловли блох - могу скинуть отчет на мыло.

Страницы: 12345678910111213141516

Предыдущая тема: Числовой формат даты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.