From ca00c9c90c75c6cfc16aea4c0de84ee952f568bf Mon Sep 17 00:00:00 2001 From: alexs75 Date: Mon, 14 Mar 2016 06:28:04 +0000 Subject: [PATCH] RxFPC:fix export from RxDBGrid to Spreadsheet data with collumn.field=nil git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4550 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../rx/trunk/rxdbgridexportspreadsheet.pas | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/components/rx/trunk/rxdbgridexportspreadsheet.pas b/components/rx/trunk/rxdbgridexportspreadsheet.pas index d61a67577..6b8db4d07 100644 --- a/components/rx/trunk/rxdbgridexportspreadsheet.pas +++ b/components/rx/trunk/rxdbgridexportspreadsheet.pas @@ -241,29 +241,31 @@ begin CT:=C.Title as TRxColumnTitle; if C.Visible then begin - - S:=C.Field.DisplayText; - if (C.KeyList.Count > 0) and (C.PickList.Count > 0) then + if Assigned(C.Field) then begin - J := C.KeyList.IndexOf(S); - if (J >= 0) and (J < C.PickList.Count) then - S := C.PickList[j]; - FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S); - end - else - if Assigned(C.Field.OnGetText) then - FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S) - else - if C.Field.DataType in [ftCurrency] then - FWorksheet.WriteCurrency(FCurRow, FCurCol, C.Field.AsCurrency, nfCurrency, '') - else - if C.Field.DataType in IntegerDataTypes then - FWorksheet.WriteNumber(FCurRow, FCurCol, C.Field.AsInteger, nfFixed, 0) - else - if C.Field.DataType in NumericDataTypes then - FWorksheet.WriteNumber(FCurRow, FCurCol, C.Field.AsFloat, nfFixed, 2) - else - FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S); + S:=C.Field.DisplayText; + if (C.KeyList.Count > 0) and (C.PickList.Count > 0) then + begin + J := C.KeyList.IndexOf(S); + if (J >= 0) and (J < C.PickList.Count) then + S := C.PickList[j]; + FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S); + end + else + if Assigned(C.Field.OnGetText) then + FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S) + else + if C.Field.DataType in [ftCurrency] then + FWorksheet.WriteCurrency(FCurRow, FCurCol, C.Field.AsCurrency, nfCurrency, '') + else + if C.Field.DataType in IntegerDataTypes then + FWorksheet.WriteNumber(FCurRow, FCurCol, C.Field.AsInteger, nfFixed, 0) + else + if C.Field.DataType in NumericDataTypes then + FWorksheet.WriteNumber(FCurRow, FCurCol, C.Field.AsFloat, nfFixed, 2) + else + FWorksheet.WriteUTF8Text(FCurRow, FCurCol, S); + end; if ressExportColors in FOptions then begin