Fastreport 4 Export Xls
Добрый день!
Помогите разобраться с проблемой. Обнаружил баг в fr4 при экспорте в xls не верно экспортируется вид границы Frame. Всегда вида Solid формирует, хотя в фастрепорте указываю другие.
Начил копать исходник, добрался до проблемного места, но не знаю как получить вид фрейма чтобы его обрабатывать.
(то что закоментировано мои попытки сделать чтобы работало)
Помогите разобраться с проблемой. Обнаружил баг в fr4 при экспорте в xls не верно экспортируется вид границы Frame. Всегда вида Solid формирует, хотя в фастрепорте указываю другие.
Начил копать исходник, добрался до проблемного места, но не знаю как получить вид фрейма чтобы его обрабатывать.
(то что закоментировано мои попытки сделать чтобы работало)
procedure TfrxExcel.ApplyFrame(const RangeCoord: String; aFrame: Byte);
var
vFrame: TfrxFrameTypes;
// vFrameStyle: TfrxFrameStyles;
vBorders: Variant;
begin
try
if aFrame <> 0 then
if Length(RangeCoord) > 0 then
begin
ShowMessage(RangeCoord);
vFrame := ByteToFrameTypes(aFrame);
// vFrameStyle := ByteToFrameStyles(aFrame);
vBorders := WorkSheet.Range[RangeCoord].Cells.Borders;
{ if ftLeft in vFrame then
begin
if fsSolid in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := xlSolid;
if fsDash in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := $FFFFEFED;
if fsDot in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := $FFFFEFEA;
if fsDashDot in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := 1;//$00000004;
if fsDashDotDot in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := 1;//$00000005;
if fsDouble in vFrameStyle then
vBorders.Item[xlEdgeLeft].Linestyle := $FFFFEFE9;
end;
if ftRight in vFrame then
begin
if fsSolid in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := xlSolid;
if fsDash in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := $FFFFEFED;
if fsDot in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := $FFFFEFEA;
if fsDashDot in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := $00000004;
if fsDashDotDot in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := $00000005;
if fsDouble in vFrameStyle then
vBorders.Item[xlEdgeRight].Linestyle := $FFFFEFE9;
end;
// vBorders.Item[xlEdgeRight].Linestyle := xlSolid;
if ftTop in vFrame then
begin
if fsSolid in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := xlSolid;
if fsDash in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := $FFFFEFED;
if fsDot in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := $FFFFEFEA;
if fsDashDot in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := $00000004;
if fsDashDotDot in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := $00000005;
if fsDouble in vFrameStyle then
vBorders.Item[xlEdgeTop].Linestyle := $FFFFEFE9;
end;
// vBorders.Item[xlEdgeTop].Linestyle := xlSolid;
if ftBottom in vFrame then
begin
if fsSolid in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := xlSolid;
if fsDash in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := $FFFFEFED;
if fsDot in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := $FFFFEFEA;
if fsDashDot in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := $00000004;
if fsDashDotDot in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := $00000005;
if fsDouble in vFrameStyle then
vBorders.Item[xlEdgeBottom].Linestyle := $FFFFEFE9;
end;}
// vBorders.Item[xlEdgeBottom].Linestyle := xlSolid;
vBorders.Item[xlEdgeLeft].Linestyle := xlSolid;
vBorders.Item[xlEdgeRight].Linestyle := xlSolid;
vBorders.Item[xlEdgeTop].Linestyle := xlSolid;
vBorders.Item[xlEdgeBottom].Linestyle := xlSolid;
end;
except
end;
end;