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

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

Автор: gpi
Дата сообщения: 28.08.2005 18:12
GloThin

Цитата:
Вот мое дополнение к вышеизложенному фиксу(фиксатор):

Потребность в моём фиксе отпадает.
А ты переживал )
Цитата:
Ну вот на корню инициативу отбирают...



Автор: GloThin
Дата сообщения: 28.08.2005 18:18
gpi

Цитата:
Потребность в моём фиксе отпадает.
А ты переживал )

Я особо не переживал...
Но наши фиксы(фикс+фиксатор) должны использоваться совместно...
Иначе баг будет проявляться...
Если интересны подробности, могу уточнить...
Автор: gpi
Дата сообщения: 28.08.2005 21:28
GloThin
Уточни. Интересно
Автор: GloThin
Дата сообщения: 28.08.2005 22:38
Уточняю, только эта инфа в большей будет полезна My Way, чтобы не засчитать багфикс.. :
1.Твой фикс работает в случаях, окромя описанных в предыдущем посте
2.А мой работает во всех случаях, кроме запуска предпросмотра(Preview), по выходе из этого режима наблюдается та же ботва, от котоорой мы пытались избавиться...
Ну это конечно без участия твоего фикса.
Так,что вывод....
Они по отдельности не могут быть....
каждый из них.... FIX... с БОЛЬШОЙ БУКВЫ...
p.s.НИ ОДИН ИЗ НИХ НЕЛЬЗЯ ИГНОРИРРОВАТЬ...

Добавлено:
Вооот и настал понедельник!!!! Ждем добрых слов от автоорооов...вернее разрррааботчиков...
Ну. остается тоооллько ждать... Ждем-с... :-\
Автор: jonikDk
Дата сообщения: 29.08.2005 09:09
В редакторе DBCross, не правильно в выпадающем списке отображает стиль DBCross
объекта. Например, если выбрать Green - сохранить и выйти, а затем опять зайти в редактор DBCross то в выпадающем списке будет отображаться Standart, хотя на самом деле стиль Green.





Добавлено:
Пути решения
a) Сделать изменения в модуле frxCrossEditor
При выборе стиля в обработчике StyleCBClick
в самом конце можно добавить 2 строчки для сохранения
наименования стиля

FCross.Report.Styles.Name := Style.Name;
FCross.Report.Styles.Apply;

И в procedure TfrxCrossEditorForm.FormShow(Sender: TObject)
можно добавить следующие строчки.

if FCross.Report.Styles.Name <> EmptyStr then
StyleCB.ItemIndex := FStyleSheet.IndexOf(FCross.Report.Styles.Name)
else StyleCB.ItemIndex := 0;

Правда если выйти из дизайнера, и закрыть проект, а потом заново загрузить
проект и зайти в дизайнер Отчетов и открыть отчет с DBCross, то в объекте
StyleCB стиль опять будет Standart, это связано наверное с тем, что класс
frxReport не сохраняет наименование стиля

b) Можно добавить в класс TfrxCustomCrossView переменную

FStyleIndex: integer; и соответствующее ему published свойство StyleIndex
по умолчанию = 0.
В конструкторе пишем StyleIndex := 0;
тогда в модуле frxCrossEditor в обработчике StyleCBClick
в самом конце можно добавить одну строку для сохранения индекса стиля

FCross.StyleIndex := FStyleSheet.IndexOf(StyleCB.Text);
И в procedure TfrxCrossEditorForm.FormShow(Sender: TObject)
можно добавить следующие строчки.

StyleCB.ItemIndex := FCross.StyleIndex;
StyleCBClick(Sender);

Единственный недостаток последнего подхода, что свойство отображается в инспекторе объектов и если изменить в инмпекторе не зайти в редактор Cross объекта, то и стиль не поменяется.
Автор: My_Way
Дата сообщения: 29.08.2005 12:30
gpi 7багрепортов+2багофикса, выдан FR Ent, остаток 4 багрепорта
GloThin 3багрепорта+1багофикс, за FR Pro обращаться в ПМ
LadyOfWood 3багрепорта+3багофикса, выдан FR Ent, остаток 3 багрепорта
jonikDk 1багрепорт+1багофикс, пока FR Standard, обращаться в ПМ

надеюсь никого не обидел?;)

Остатки можете использовать для получения FR Studio например,
цена в багрепортах такая же как FR Ent.
Друг другу только остатки передавать нелзья,
извините уж


Автор: GloThin
Дата сообщения: 29.08.2005 20:30
My_Way

Цитата:
Друг другу только остатки передавать нелзья,

А что можно? Сами баги? Или фиксы?
Автор: gpi
Дата сообщения: 29.08.2005 20:45

Цитата:
А что можно? Сами баги? Или фиксы?

Через ПМ )

My_Way
А что включает в себя FR Studio?

Автор: My_Way
Дата сообщения: 29.08.2005 20:46

Цитата:
А что можно? Сами баги? Или фиксы?

новые баги или фиксы , через пм можно
если я скажу нельзя, не думаю, что от этого, что-то изменится
Автор: GloThin
Дата сообщения: 29.08.2005 20:49

Цитата:
А что включает в себя FR Studio?

Насколько я понимаю, это продукт для платформы MS VISUAL STUDIO и первый шаг к NET...
Автор: My_Way
Дата сообщения: 29.08.2005 20:51

Цитата:
А что включает в себя FR Studio?


в кратце

Цитата:
FastReport Studio это решение для разработчиков, использующих в работе продукты Microsoft(R): Microsoft Visual Studio, Microsoft Access, Microsoft Excell, Microsoft FoxPro, а также Oracle PowerBuilder и т.п.

FastReport Studio включает в себя независимый дизайнер отчётов, средства для разработки, а также множество демонстрационных отчётов и исходные тексты примеров.

Основу FastReport Studio составляет COM библиотека...

подробней http://www.fast-report.com/ru/products/products.php?BID=43
Автор: jonikDk
Дата сообщения: 30.08.2005 08:23
1. В просмотре отчета в объекте "Номер страницы" позволяет вводить
не только цифры но и символы.

Рещается следующим образом

procedure TfrxPreviewForm.PageEClick(Sender: TObject);
begin
try
FPreview.PageNo := StrToInt(PageE.Text);
except
FPreview.PageNo := 1;
end;
//Простая заглушка, если не поставить ее то можно будет удалить номер страницы и
//вылетит ошибка
//можно обрабатывать без исключения, но это самый простой способ
FPreview.SetFocus;
end;

Добавить в KeyPress
if not (key in ['0'..'9',#8]) then //цифры и BackSpace
key := #0;

в fr3.16 можно вводить только цифры, но можно удалить все
символы в PageE и тогда вылетит ошибка, так как '' не сможет преобразовать
в число.

2. В просмотре в объекте "Масштаб" (ZoomCB) позволяет вводить
не только цифры но и символы.

Решается следующим образом :
Добавить в KeyPress
if not (key in ['0'..'9',#8]) then
key := #0;

Либо создать процедуру
procedure KeyPressDigit(var Key: Char)
begin
if not (key in ['0'..'9',#8]) then //цифры и BackSpace
key := #0;
end;

и подцепить ее к событим KeyPress для объектов PageE и ZoomCB.



Добавлено:
на всякий случай добавлю:
procedure KeyPressDigit(Sender: TObject; var Key: Char)

Добавлено:
Эх поспешишь людей насмешишь.


Цитата:
procedure TfrxPreviewForm.PageEClick(Sender: TObject);
begin
try
FPreview.PageNo := StrToInt(PageE.Text);
except
FPreview.PageNo := 1;
end;
end;


Лучше так, а то не красиво получается, находимся на первой странице отчета,
а в номере страницы ничего не отображается.

procedure TfrxPreviewForm.PageEClick(Sender: TObject);
begin
try
FPreview.PageNo := StrToInt(PageE.Text);
except
FPreview.PageNo := 1;
PageE.Text := '1';
end
end;
Автор: Nicka_Grey
Дата сообщения: 30.08.2005 09:03
jonikDk
Я бы такую конструкцию заменил на более простую

Цитата:
procedure TfrxPreviewForm.PageEClick(Sender: TObject);
begin
try
FPreview.PageNo := StrToInt(PageE.Text);
except
FPreview.PageNo := 1;
PageE.Text := '1';
end
end;


например так

FPreview.PageNo := StrToIntDef(PageE.Text, 1);
Автор: jonikDk
Дата сообщения: 30.08.2005 09:49
Действительно так красивее и проще (век живи - век учись ), но я не знаю в Delphi4 есть такая функция или нет, потому что FR3 кажется начинается с 4 версии Delphi.
Автор: Nicka_Grey
Дата сообщения: 30.08.2005 09:57
jonikDk
За Delphi4 к сожалению не скажу
Но функция эта очень проста в реализации
Когда то я даже ее аналог еще в паскале писал.
Автор: My_Way
Дата сообщения: 30.08.2005 16:06
общий счет:
gpi 7 багрепортов+2 багофикса, выдан FR Ent, остаток 4 багрепорта
GloThin 3 багрепорта+1 багофикс, выдан FR Pro
LadyOfWood 3 багрепорта+3 багофикса, выдан FR Ent, остаток 3 багрепорта
jonikDk 3 багрепорт+3 багофикс, FR Standard заменен на FR Ent, остаток 3 багрепорта
Nicka_Grey 1 багофикс, за FR Standard можно в ПМ

фиксы на фискы пока считаются,
позже наверное придется делить по полтора багрепорта на брата;)

Автор: gpi
Дата сообщения: 30.08.2005 16:17
С подачи jonikDk:

В дизайнере та же самая проблема с масштабом (ScaleCB), но решение, позволяющее вводить только цифры - не вполне корректное. В ScaleCB есть значения Page width
и Whole page, которые выбираются с клавиатуры через P и W (для английской локализации). Для других - другие буквы. Это тоже желательно учесть, хотя в дизайнере при любой локализации - английские названия.

StyleCB и LangCB тоже позволяют вводить "левые" значения (правда без последствий). Здесь выход - установить у них свойство ReadOnly в True.

А вот для FontSizeCB, позволяющего вводить буквы (уже с последствиями в виде ошибки преобразования), можно добавить событие KeyPress:

if not (key in ['0'..'9',#8]) then
key := #0;

И профиксить procedure TfrxDesignerForm.ToolButtonClick(Sender: TObject);
...
case TComponent(Sender).Tag of

0: c.Font.Name := FontNameCB.Text;
//fix
1: try
c.Font.Size := StrToInt(FontSizeCB.Text);
except
c.Font.Size := MemoFontSize;
FontSizeCB.Text := IntToStr(MemoFontSize);
end;
//fix
2: SetFontStyle(c, fsBold, BoldB.Down);
...

Добавлено:
Да уж

В форме Designer options (меню View-Options) нужно обрабатывать в procedure TfrxOptionsEditor.FormHide(Sender: TObject) через try..except все вводимые числовые значения, комбобоксы с названиями шрифтов ReadOnly=True,
комбобоксы с размерами шрифтов - см. выше.

В дизайнере для FrameWidthCB тоже нужно добавлять KeyPress:

if not (key in ['0'..'9',#8, DecimalSeparator]) then
key := #0;
... хотя если ввести два DecimalSeparator или ввести DecimalSeparator первым символом, то это пройдёт, но тоже без последствий

В общем - здесь огромное поле для деятельности и зарабатывания лицензий.
Пусть другие присоединяются
Автор: Nicka_Grey
Дата сообщения: 30.08.2005 18:40
В добавлении к gpi:

В форме Designer ->Файл->Настройки страницы
Закладка "Страница"
размеры полей также можно устанавливать не только цифры

Такая же беда и формат бумаги (ширина, высота) и на закладке "Прочее" ширина колонки

Решение сего одно для всех Edit-контролов
procedure OnKeyPress(Sender: TObject; var Key: Char);
var
i : extended;
begin
if (not (key in ['0'..'9', #8, DecimalSeparator]) )
or ((key in [DecimalSeparator]) and (Pos(DecimalSeparator, TEdit(Sender).Text) > 0) ) then
key := #0;
end;


Если же при вводе в Edit-контролы не правильных значений при закрытии диалога получаем месагу что какое то значение ввели не правильно, то вот например В комбобоксе "Дуплекс" при вводе неверного значения (набрать любую последовательность символов) то даже месаги об ошибке никакой не получим.
Решение:
для сего комбобокса лучше всего выставить
DuplexCB.Style := csOwnerDrawFixed;
Автор: gpi
Дата сообщения: 30.08.2005 18:50

Цитата:
В ScaleCB есть значения Page width
и Whole page, которые выбираются с клавиатуры через P и W (для английской локализации). Для других - другие буквы. Это тоже желательно учесть, хотя в дизайнере при любой локализации - английские названия.


Для Preview решение такое:

frxPreview.pas

var
TextToFind: String;
TextFound: Boolean;
TextBounds: TRect;
RecordNo: Integer;
LastFoundRecord: Integer;
CaseSensitive: Boolean;
//fix
FirstCharzmPageWidth,FirstCharzmWholePage: Char;
//fix


procedure TfrxPreviewForm.FormCreate(Sender: TObject);

...
ZoomCB.Items.Add(frxResources.Get('zmPageWidth'));
ZoomCB.Items.Add(frxResources.Get('zmWholePage'));
//fix
FirstCharzmPageWidth:=AnsiUpperCase(frxResources.Get('zmPageWidth'))[1];
FirstCharzmWholePage:=AnsiUpperCase(frxResources.Get('zmWholePage'))[1];
//fix
frxAssignImages(Image1.Picture.Bitmap, 16, 16, MainImages);
Image1.Free;
...

procedure TfrxPreviewForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
if ActiveControl = ZoomCB then
ZoomCBClick(nil);
if ActiveControl = PageE then
PageEClick(nil);
end;
//fix
if ActiveControl = ZoomCB then
begin
if not (AnsiUpperCase(key)[1] in ['0'..'9',#8,FirstCharzmPageWidth,FirstCharzmWholePage]) then
key := #0
//а вот тут я ещё немного накрутил
else
if (AnsiUpperCase(key)[1] in [FirstCharzmPageWidth,FirstCharzmWholePage]) and
(ZoomCB.Text<>ZoomCB.SelText) and
((ZoomCB.SelStart>0) or ((ZoomCB.Text<>'') and (ZoomCB.SelStart=0)))
then
key := #0;
end;
//fix
end;
Автор: GloThin
Дата сообщения: 30.08.2005 19:55
My_Way

Цитата:
общий счет:

Может, проще общий счет помещать в шапку?
Проще следить будет...
И лучше сделать в виде таблицы....
Могу сделать заготовку и поместить в нее последние данные...
Автор: GloThin
Дата сообщения: 31.08.2005 09:19
Опять дизайнер и опять свойство Align:
1.При наличии двух графических объектов и при выставлении свойства ALign в baLeft, объект, у которого вторым изменяется заданное свойство, становится не в крайнюю позицию слева, как должен, а в крайнюю левую позицию после первого объекта.Т.е.объекты выстраиваются друг за другом.
2. Такая же история при значениях ALign - baLeft у одного, baWidth у другого,в случае, если их плоскости перекрываются.
3. В случае из пункта 2, когда плоскости объектов не пересекаются замечена следующая странность - При перемещении одного из них, второй сам изменяет свою позицию и становится за перемещаемым.
4. Пункты 2 и 3 повторяются зеркально для варианта baRight и baWidth.
В варианте baWidth и baBottom, кроме вышеперечисленного, замечено следующее:
5. Когда плоскости объектов не пересекаются, то все нормально, но стоит переместить объект со значением свойства baWidth,при пересечении плоскостей(второй объект прижат к любому краю страницы),перемещаемый объект,перемещается в позицию или до или после второго объекта(зависит от того к какому краю страницы прижат 2 объект) и в случае,когда размеры свободной от второго объекта меньше чем размеры перемещаемого, то он вообще изменяет свои размеры, чтобы поместиться в свободную область.
6. После того как в ситуации из пункта 5, объекты выстроились, если у объекта со значением свойства baBottom изменить горизонтальные размеры, то у другого тоже автоматически меняются размеры.
7. Если у одного из объектов выставить значение свойства baClient, а у другого - baLeft, то второй объект перемещается за края страницы и становится практически не виден.
Если же второму выставить значение baWidth,то он автоматически сворачивается в вертикальную линию и перемещается к правому краю страницы.

Добавлено:
Вот небольшая модификация функции frxStrToFloat из frxUtils.pas
(Позволяет корректно преобразовать строку, где больше одного сепаратора,т.е. исправляет неправильный ввод со стороны пользователя)

function frxStrToFloat(s: String): Extended;
var
i,FirstDSPos: Integer;
begin
FirstDSPos := 0;
for i := 1 to Length(s) do
if s[i] in [',', '.'] then
begin
s[i] := DecimalSeparator;
if FirstDSPos = 0 then
FirstDSPos := i
else
s[i] := ' ';
end;
while Pos(' ', s) <> 0 do
Delete(s, Pos(' ', s), 1);
Result := StrToFloat(s);
end;
Автор: My_Way
Дата сообщения: 31.08.2005 14:46
LadyOfWood 3 багрепорта+3 багофикса, FR Ent, остаток 3 багрепорта
jonikDk 3 багрепорт+3 багофикса, FR Ent, остаток 3 багрепорта
Nicka_Grey 2 багрепорта+3 багофикса, FR Ent, остаток 2 багрепорта

gpi финиш FR Ent+ FR Studio
GloThin финиш FR Ent+ FR Studio

особое спасибо GloThin за помощь в огранизации этого проекта

просьба всем переключиться с темы левых символов в полях ввода,
думаю это далеко не единственная проблема в фасте
Автор: GloThin
Дата сообщения: 31.08.2005 21:50
My_Way

Цитата:
GloThin финиш FR Ent+ FR Studio

Ну вот только разогрелся и все кончилось...
А больше ничего нельзя получить?

Цитата:
думаю это далеко не единственная проблема в фасте

Это уж точно...Кому как не разработчикам это знать...
Автор: My_Way
Дата сообщения: 02.09.2005 12:22

Цитата:
Ну вот только разогрелся и все кончилось...
А больше ничего нельзя получить?

Можно!
Можно еще получить большую благодарность от команды фастрепорт
за ваш посильный вклад в великое дело багоустранения и совершенствования нашего продукта!


Добавлено:
кстати, кто хочет заниматься этим на постоянной основе,
можете попробовать вступить в ряды фастрепорт в качестве сапортера
резюме можете кидать в ПМ
Автор: gpi
Дата сообщения: 02.09.2005 15:39

Цитата:
Можно еще получить большую благодарность


Ну, если так, то вот ещё один баг:

При установке в дизайнере свойства Visible в False, контролы на диалоговой форме ведут себя странно: одни исчезают (RadioButton, CheckBox, Button, ComboBox), в других (Memo, Edit) исчезает содержимое, а Label, Panel, GroupBox, ListBox и Form ведут себя адекватно - как в Delphi.
Автор: gpi
Дата сообщения: 04.09.2005 22:39
Если в отчёте Customers list из группы Dot-matrix reports в дизайнере очистить всё содержимое, а затем добавить DBCross (в строках - Company, в столбцах - Addr1, в ячейках - максимальное значение Last Invoice Day), то на предварительном просмотре некоторые длинные названия компаний не помещаются в ячейках по высоте, а некоторые -помещаются. На странице 14 текст вылезает за правую границу страницы.
При изменении в DBCross столбцов на City на предварительном просмотре текст вылезает за нижнюю границу страницы.
Экспорт в PDF, XLS, HTML, RTF - с разрывами между ячейками, в графические форматы - нормально.

В дизайнере кнопки на панели выравнивания всегда активны, в отличие от кнопок на других панелях. Можно добавить в frxDesgn.pas
SetEnabled([FillColorB], Frame3Enabled and not (FPage is TfrxDMPPage));
//fix
SetEnabled([AlignLeftsB, AlignHorzCentersB, AlignRightsB,
AlignTopsB, AlignVertCentersB, AlignBottomsB,
SpaceHorzB, SpaceVertB, SameWidthB, SameHeightB],
(Count > 1));
SetEnabled([CenterHorzB, CenterVertB], not (c is TfrxBand ) or (Count>1));
//fix end
SampleFormatB.Enabled := (AlignEnabled and (Count = 1)) or (IsReportPage and not ObjSelected);
и в procedure TfrxDesignerForm.ReadButtonImages закомментировать
{AlignTB1.DisabledImages := DisabledImages;}
или добавить в ресурсы изображения неактивных кнопок.
Автор: My_Way
Дата сообщения: 05.09.2005 13:30
to gpi
спасибо жаль выдать тебе больше нечего уже все что мог заработал
to all
остальные подключайтесь, акция продолжается
Автор: GloThin
Дата сообщения: 06.09.2005 06:29
Вот что обнаружил в режиме "Просмотр", запущенном из дизайнера:
При прокрутке страницы до ее нижней границы и при выборе масштаба - "Страница целиком", масштаб изменяется, а у страницы верхний край как был за границей области просмотра, так и остался...
Вот Фикс на эту проблему:

Код:
procedure TfrxPreview.UpdateZoom;
var
PageSize: TPoint;
begin
if FLocked or (PageCount = 0) then Exit;
PageSize := PreviewPages.PageSize[PageNo - 1];

case FZoomMode of
zmWholePage:
//fix begin
begin
FZoom := (FWorkspace.ClientHeight - 20) / PageSize.Y;
SetPosition(PageNo,0);
end;
// fix end
zmPageWidth:
FZoom := (FWorkspace.Width - 52) / PageSize.X;
zmManyPages:
FZoom := (FWorkspace.ClientWidth - 32) / (PageSize.X * 2);
end;

FWorkspace.UpdateScrollBars;
FWorkspace.Repaint;
if Owner is TfrxPreviewForm then
TfrxPreviewForm(Owner).UpdateZoom;
end;
Автор: gpi
Дата сообщения: 06.09.2005 08:33
GloThin
Ну вот и появился фикс к багу № 2 из 15-го поста

procedure TfrxPreview.UpdateZoom;
var
PageSize: TPoint;
begin
if FLocked or (PageCount = 0) then Exit;
PageSize := PreviewPages.PageSize[PageNo - 1];

case FZoomMode of
zmWholePage:
begin
FZoom := (FWorkspace.ClientHeight - 20) / PageSize.Y;
SetPosition(PageNo,0);
end;
zmPageWidth:
FZoom := (FWorkspace.Width - 52) / PageSize.X;
zmManyPages: // и этот вариант нужно учесть
begin
FZoom := (FWorkspace.ClientWidth - 32) / (PageSize.X * 2);
SetPosition(PageNo,0);
end;
end;

FWorkspace.UpdateScrollBars;
FWorkspace.Repaint;
if Owner is TfrxPreviewForm then
TfrxPreviewForm(Owner).UpdateZoom;
end;
Автор: GloThin
Дата сообщения: 07.09.2005 21:10
gpi

Цитата:
zmManyPages: // и этот вариант нужно учесть

Этот случай я заметил спустя небольшое время, и фикс добавил, но выложить не было возможности...
А баг из 15-го поста я не запомнил...

P.S. Что-то я особо не заметил исправления багов в последней выпущенной версии...

Страницы: 12345678910111213141516

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


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