コード例 #1
0
ファイル: PdfFontFactory.cs プロジェクト: mwilian/demos
        private void LoadAllFonts(string FontPath, DirectoryInfo di, string FontExtension, Boolean ErrorIfEmpty)
        {
            // Create an array representing the files in the current directory.
            FileInfo[] fi = di.GetFiles(FontExtension);
            if (ErrorIfEmpty && fi.Length == 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrEmptyFolder, FontPath, FontExtension);
            }


            foreach (FileInfo fontFile in fi)
            {
                if (FFontFiles.ContainsKey(fontFile.Name))
                {
                    continue;
                }

                FFontFiles.Add(fontFile.Name, null);
                try
                {
                    LoadFont(fontFile.FullName);
                }
                catch (Exception ex)
                {
                    //Invalid font. nothing to do, just continue reading the other fonts.
                    // What we will do is just ignore it here, and throw an exception when (and if) the user actually tries to use this font.

                    if (FlexCelTrace.HasListeners)
                    {
                        FlexCelTrace.Write(new TPdfCorruptFontInFontFolderError(ex.Message, fontFile.FullName));
                    }
                }
            }
        }
コード例 #2
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        private static void AddExtraRelationships(IDataTableFinder TableFinder, VirtualDataTable aData, TRelationshipList Relations, TBand band, TMasterDetailLinkList MasterDetailLinkList)
        {
            foreach (TRelationship tr in Relations)
            {
                TDataSourceInfo dParent = TableFinder.TryGetDataTable(tr.ParentTable);
                if (dParent == null || dParent.Table == null)
                {
                    FlxMessages.ThrowException(FlxErr.ErrInvalidManualRelationshipDatasetNull, tr.ParentTable);
                }

                TDataSourceInfo dChild = TableFinder.TryGetDataTable(tr.ChildTable);
                if (dChild == null || dChild.Table == null)
                {
                    FlxMessages.ThrowException(FlxErr.ErrInvalidManualRelationshipDatasetNull, tr.ChildTable);
                }

                if (SameTable(dChild.Table, aData) && SameTable(dParent.Table, band.DataSource.Data))
                {
                    GetColIndexes(dParent.Table, tr.ParentColumns, true); //we do it here so it checks all columns exist in the parent. They might not exist in our table, and that is ok if our table is a distinct for example)
                    GetColIndexes(dChild.Table, tr.ChildColumns, true);
                    int[] ChildCols  = GetColIndexes(aData, tr.ChildColumns, false);
                    int[] ParentCols = GetColIndexes(band.DataSource.Data, tr.ParentColumns, false);

                    if (ChildCols != null && ParentCols != null)
                    {
                        MasterDetailLinkList.AddRelation(band.DataSource.DataState,
                                                         new TRelation(band.DataSource.Data, aData, ParentCols,
                                                                       ChildCols));
                    }
                }
            }
        }
コード例 #3
0
 private void CheckConnected()
 {
     if (CurrentChart == null)
     {
         FlxMessages.ThrowException(FlxErr.ErrNotConnected);
     }
 }
コード例 #4
0
        private static void PartialSort(TKeyList Items, ExcelFile xls, TXlsCellRange Range, bool ByRows, int FirstRow, int StagingRow)
        {
            int Slot     = FirstRow - Range.Top;
            int LastSlot = -1;
            int destRow  = StagingRow;
            int Row      = FirstRow;

            do
            {
                if (Row == destRow)
                {
                    FlxMessages.ThrowException(FlxErr.ErrInternal);
                }
                MoveRows(xls, Range, ByRows, Row, destRow);
                if (LastSlot >= 0)
                {
                    Items[LastSlot].Position = destRow;
                }

                int MovedFrom = Row;
                if (Slot == Items.Count)
                {
                    break;                      //we are moving from the staging area.
                }
                Row = Items[Slot].Position;
                if (Row == FirstRow)
                {
                    Row = StagingRow;
                }
                LastSlot = Slot;
                Slot     = Row - Range.Top;
                destRow  = MovedFrom;
            } while (true);
        }
コード例 #5
0
 internal TRKRecord(int aCol, int aXF, double Value) : base((int)xlr.RK, aCol, aXF)
 {
     if (!EncodeRK(Value, ref RK))
     {
         FlxMessages.ThrowException(FlxErr.ErrInvalidCellValue, Value.ToString());
     }
 }
コード例 #6
0
ファイル: UXlsxShapeReader.cs プロジェクト: mwilian/demos
        private static Dictionary <string, TShapeGeom> ReadShapes()
        {
            Dictionary <string, TShapeGeom> Result = new Dictionary <string, TShapeGeom>();

            using (Stream PresetStream = GetPresetStream())
            {
                using (TOpenXmlReader DataStream = TOpenXmlReader.CreateFromSimpleStream(PresetStream))
                {
                    DataStream.DefaultNamespace = "";
                    DataStream.NextTag();
                    Debug.Assert(DataStream.RecordName() == "presetShapeDefinitons", DataStream.RecordName());

                    string StartElement = DataStream.RecordName();
                    if (!DataStream.NextTag())
                    {
                        FlxMessages.ThrowException(FlxErr.ErrInternal);
                    }

                    TXlsxShapeReader ShapeReader = new TXlsxShapeReader(DataStream);
                    while (!DataStream.AtEndElement(StartElement))
                    {
                        Result[DataStream.RecordName()] = ShapeReader.ReadShapeDef(DataStream.RecordName());
                    }
                }
            }

            return(Result);
        }
コード例 #7
0
 public override void Flush()
 {
     if (HelperStream != null)
     {
         FlxMessages.ThrowException(FlxErr.ErrInternal);
     }
     VirtualStream.Flush();
 }
コード例 #8
0
ファイル: UReportCollections.cs プロジェクト: mwilian/demos
        public TConfigFormat GetValue(string Key)
        {
            TConfigFormat Result;

            if (!TryGetValue(Key, out Result))
            {
                FlxMessages.ThrowException(FlxErr.ErrInvalidFormat, Key);
            }
            return(Result);
        }
コード例 #9
0
        private static void LoadString(ResourceManager rm, string Id, ref string[] Tmp, TagEnum Tag)
        {
            string s = rm.GetString(Id);

            if (s == null || s.Length == 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrUndefinedId, Id, "TagTokens.resx");
            }
            Tmp[(int)Tag] = s;
        }
コード例 #10
0
ファイル: UXlsxShapeReader.cs プロジェクト: mwilian/demos
        private TShapePoint ReadPoint(TShapeGeom ShapeGeom, string TagName)
        {
            List <TShapePoint> Pts = ReadPts(ShapeGeom, TagName);

            if (Pts.Count != 1)
            {
                FlxMessages.ThrowException(FlxErr.ErrInternal);
            }
            return(Pts[0]);
        }
コード例 #11
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        public int GetColumn(string ColumnName)
        {
            int dc = Data.GetColumn(ColumnName);

            if (dc < 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrColumNotFound, ColumnName, Name);
            }
            return(dc);
        }
コード例 #12
0
        /// <summary>
        /// Returns an string token
        /// </summary>
        private static string GetString(string s, int MaxStringConstantLen)
        {
            string Result = s.Replace("\"", "\"\"");

            if (MaxStringConstantLen > 0 && s.Length > MaxStringConstantLen)
            {
                FlxMessages.ThrowException(FlxErr.ErrStringConstantInFormulaTooLong, Result, String.Empty);
            }
            return(Result);
        }
コード例 #13
0
        public override string GetColumnCaption(int columnIndex)
        {
            switch (columnIndex)
            {
            case 0: return("Position");

            case 1: return("Name");
            }
            FlxMessages.ThrowException(FlxErr.ErrInvalidColumn, columnIndex);
            return(String.Empty);
        }
コード例 #14
0
        internal static int TotalSizeWithArray(TParsedTokenList Data, TFormulaType FmlaType)
        {
            if (Data.TextLenght > FlxConsts.Max_FormulaLen97_2003)
            {
                FlxMessages.ThrowException(FlxErr.ErrFormulaTooLong, TFormulaConvertInternalToText.AsString(Data, 0, 0, null));
            }
            int DataLenNoArray;

            byte[] bData = TFormulaConvertInternalToBiff8.GetTokenData(null, Data, FmlaType, out DataLenNoArray);
            return(bData.Length);
        }
コード例 #15
0
ファイル: UReportCollections.cs プロジェクト: mwilian/demos
 internal IDbDataParameter this[string key]
 {
     get
     {
         IDbDataParameter Result = null;
         if (!FList.TryGetValue(key, out Result))
         {
             FlxMessages.ThrowException(FlxErr.ErrSqlParameterNotFound, key);
         }
         return(Result);
     }
 }
コード例 #16
0
        private static ImageCodecInfo GetTiffEncoder()
        {
            foreach (ImageCodecInfo ImageEncoder in ImageCodecInfo.GetImageEncoders())
            {
                if (ImageEncoder.MimeType == "image/tiff")
                {
                    return(ImageEncoder);
                }
            }

            FlxMessages.ThrowException(FlxErr.ErrTiffEncoderNotFound);
            return(null); //just to compile.
        }
コード例 #17
0
ファイル: UEscherLists.cs プロジェクト: mwilian/demos
        private void FillNotLoaded()
        {
            foreach (TEscherOPTRecord R in NotLoadedOpt)
            {
                long ShapeId = R.ShapeId();
                if (ShapeId == -1)
                {
                    FlxMessages.ThrowException(FlxErr.ErrInternal);
                }
                OptsByShapeId[ShapeId] = R;
            }

            NotLoadedOpt.Clear();
        }
コード例 #18
0
ファイル: UVirtualDataTable.cs プロジェクト: mwilian/demos
 /// <summary>
 /// This method will be called each time that the master datasource moves its position. Use it to filter the data returned
 /// if this is used on a master-detail relationship.
 /// </summary>
 /// <remarks>
 /// You do not need to implement this method if you are not using Master-Detail or Split relationships.</remarks>
 /// <param name="masterDetailLinks">List of all the master tables that are related to this one.
 /// If there are no parents on this VirtualDataTableState, this will be an empty array, not null.
 /// Use it on <see cref="GetValue"/> to filter the data and then return only the records that satisfy the master-detail relationships on <see cref="GetValue"/>
 /// </param>
 /// <param name="splitLink">Parent Split table if this dataset is on a Split relationship, or null if there is none.
 /// Use it to know how many records you should retun on <see cref="RowCount"/>. Note that a table might be on Master-Detail relationship
 /// *and* split relationship. In this case you need to first filter the records that are on the master detail relationship, and then apply the split to them.
 /// </param>
 public virtual void MoveMasterRecord(TMasterDetailLink[] masterDetailLinks, TSplitLink splitLink)
 {
     if (masterDetailLinks == null)
     {
         return;
     }
     for (int i = 0; i < masterDetailLinks.Length; i++)
     {
         if (masterDetailLinks[i].ParentDataSource.RowCount != 0)                  //Avoid throwing an exception if there is actually only one master record.
         {
             FlxMessages.ThrowException(FlxErr.ErrTableDoesNotSupportMasterDetail, FTableData.TableName);
         }
     }
 }
コード例 #19
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        private static void Filter(ref VirtualDataTable aTable, string RowFilter, ref bool TableNeedsDispose, string aName)
        {
            RowFilter = RowFilter.Trim();
            if (string.IsNullOrEmpty(RowFilter))
            {
                if (aTable.TableName != aName)
                {
                    VirtualDataTable nTable = aTable.FilterData(aName, null);
                    if (aTable != null && TableNeedsDispose)
                    {
                        aTable.Dispose();
                    }
                    aTable            = nTable;
                    TableNeedsDispose = true;
                }
                return;
            }

            int fPos = RowFilter.IndexOf(ReportTag.StrOpenParen);

            if (fPos > 2)
            {
                if (String.Equals(RowFilter.Substring(0, fPos).Trim(), ReportTag.ConfigTag(ConfigTagEnum.Distinct), StringComparison.InvariantCultureIgnoreCase))
                {
                    if (RowFilter[RowFilter.Length - 1] != ReportTag.StrCloseParen)
                    {
                        FlxMessages.ThrowException(FlxErr.ErrInvalidFilterParen, RowFilter);
                    }

                    VirtualDataTable bTable = aTable.GetDistinct(aName, GetColumnsForDistinct(aTable, RowFilter.Substring(fPos + 1, RowFilter.Length - fPos - 2)));
                    if (aTable != null && TableNeedsDispose)
                    {
                        aTable.Dispose();
                    }
                    aTable = bTable;

                    TableNeedsDispose = true;
                    return;
                }
            }

            VirtualDataTable cTable = aTable.FilterData(aName, RowFilter);

            if (aTable != null && TableNeedsDispose)
            {
                aTable.Dispose();
            }
            aTable            = cTable;
            TableNeedsDispose = true;
        }
コード例 #20
0
        internal static void SaveToStream(TNameRecordList Names, IDataStream Workbook, TFormulaType FmlaType, TParsedTokenList Data, bool WriteLen)
        {
            if (Data.TextLenght > FlxConsts.Max_FormulaLen97_2003)
            {
                FlxMessages.ThrowException(FlxErr.ErrFormulaTooLong, TFormulaConvertInternalToText.AsString(Data, 0, 0, null));
            }
            int FmlaNoArrayLen;

            byte[] bData = TFormulaConvertInternalToBiff8.GetTokenData(Names, Data, FmlaType, out FmlaNoArrayLen);
            if (WriteLen)
            {
                Workbook.Write16((UInt16)FmlaNoArrayLen);
            }
            Workbook.Write(bData, bData.Length);
        }
コード例 #21
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        public object GetValueForRow(int Row, int ColumnIndex)
        {
            if ((TPseudoColumn)ColumnIndex == TPseudoColumn.RowCount)
            {
                return(DataState.RowCount);                                                      //First so it does not check for eof.
            }
            if (Row >= RecordCount)
            {
                FlxMessages.ThrowException(FlxErr.ErrReadAfterEOF);
            }
            if (Row < 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrReadBeforeBOF);
            }

            if (ColumnIndex >= ColumnCount)
            {
                FlxMessages.ThrowException(FlxErr.ErrInvalidColumn, ColumnIndex);
            }

            if (ColumnIndex < 0)
            {
                switch ((TPseudoColumn)ColumnIndex)
                {
                case TPseudoColumn.RowPos: return(DataState.Position);

                default: FlxMessages.ThrowException(FlxErr.ErrInvalidColumn, ColumnIndex); break;
                }
            }

            if (Row == DataState.Position)
            {
                return(DataState.GetValue(ColumnIndex));                           //avoid an exception if movetorecord is not supported and we really don't need to move to record.
            }
            int SavePosition = DataState.Position;

            try
            {
                DataState.DoMoveToRecord(Row);
                return(DataState.GetValue(ColumnIndex));
            }
            finally
            {
                DataState.DoMoveToRecord(SavePosition);
            }
        }
コード例 #22
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        private static int[] GetColumnsForDistinct(VirtualDataTable aTable, string SortString)
        {
            if (SortString.Trim().Length == 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrInvalidDistinctParams);
            }

            int start = 0;
            int count = 0;

            do
            {
                start = SortString.IndexOf(ReportTag.ParamDelim, start);
                if (start > 0)
                {
                    count++;
                    start++;
                }
            }while (start > 0);

            start = 0;
            int oldStart = 0;

            int[] Result = new int[count + 1];
            for (int i = 0; i < count; i++)
            {
                start     = SortString.IndexOf(ReportTag.ParamDelim, oldStart);
                Result[i] = aTable.GetColumn(SortString.Substring(oldStart, start - oldStart).Trim());
                if (Result[i] < 0)
                {
                    FlxMessages.ThrowException(FlxErr.ErrColumNotFound, SortString.Substring(oldStart, start - oldStart).Trim(), aTable.TableName);
                }
                if (i < count)
                {
                    oldStart = start + 1;
                }
            }

            Result[count] = aTable.GetColumn(SortString.Substring(oldStart).Trim());
            if (Result[count] < 0)
            {
                FlxMessages.ThrowException(FlxErr.ErrColumNotFound, SortString.Substring(oldStart).Trim(), aTable.TableName);
            }

            return(Result);
        }
コード例 #23
0
        private static int FindName(TNameRecordList Names, string Name)
        {
            if (Names == null)
            {
                return(0);               //Calculating length.
            }
            for (int i = 0; i < Names.Count; i++)
            {
                if (String.Equals(Name, Names[i].Name, StringComparison.CurrentCultureIgnoreCase) && (Names[i].IsAddin))
                {
                    return(i + 1);
                }
            }

            FlxMessages.ThrowException(FlxErr.ErrCantFindNamedRange, Name);
            return(-1);
        }
コード例 #24
0
        private static void MoveRowRange(TKeyList Items, ExcelFile xls, TXlsCellRange Range, bool ByRows)
        {
            if (!ByRows)
            {
                Range = Range.Transpose();
            }
            //optimization if part (or all) of the range is already sorted.
            int FirstRow = Range.Top;

            FirstRow = AdvanceToNextUnsorted(Items, Range, FirstRow);
            if (FirstRow > Range.Bottom)
            {
                return;
            }
            int LastRow    = Range.Bottom;
            int StagingRow = LastRow + 1;

            if (ByRows)
            {
                xls.InsertAndCopyRange(new TXlsCellRange(StagingRow, Range.Left, StagingRow, Range.Right), StagingRow, Range.Left, 1, TFlxInsertMode.ShiftRangeDown, TRangeCopyMode.None);                 //add a row at the bottom to swap rows.
            }
            else
            {
                xls.InsertAndCopyRange(new TXlsCellRange(Range.Left, StagingRow, Range.Right, StagingRow), Range.Left, StagingRow, 1, TFlxInsertMode.ShiftRangeRight, TRangeCopyMode.None);                 //add a column at the right to swap columns.
            }
            do
            {
                PartialSort(Items, xls, Range, ByRows, FirstRow, StagingRow);
                int fr = FirstRow;
                FirstRow = AdvanceToNextUnsorted(Items, Range, FirstRow);
                if (fr == FirstRow)
                {
                    FlxMessages.ThrowException(FlxErr.ErrInternal);
                }
            } while (FirstRow < Range.Bottom);

            if (ByRows)
            {
                xls.DeleteRange(new TXlsCellRange(StagingRow, Range.Left, StagingRow, Range.Right), TFlxInsertMode.ShiftRangeDown);
            }
            else
            {
                xls.DeleteRange(new TXlsCellRange(Range.Left, StagingRow, Range.Right, StagingRow), TFlxInsertMode.ShiftRangeRight);
            }
        }
コード例 #25
0
        public override int GetColumn(string columnName)
        {
#if (COMPACTFRAMEWORK)
            switch (columnName.ToLower(CultureInfo.InvariantCulture))
#else
            switch (columnName.ToLowerInvariant())
#endif
            {
            case "position": return(0);

            case "name": return(1);

            default:
                break;
            }
            FlxMessages.ThrowException(FlxErr.ErrInvalidColumn, columnName);
            return(0);
        }
コード例 #26
0
ファイル: PdfRecords.cs プロジェクト: mwilian/demos
        public static void WriteStringInStream(TPdfStream DataStream, string Text, real FontSize, TPdfFont aFont, ref string LastFont, string EndNewText, string StartNewText2, string EndNewText2, TTracedFonts TracedFonts)
        {
            TPdfFont LastFallbackFont = aFont;
            int      StartText        = 0;

            int TLen = Text.Length;

            for (int i = 0; i <= TLen; i++)
            {
                TPdfFont FallbackFont = null;

                if (i < TLen)
                {
                    FallbackFont = aFont.Fallback(Text[i], 0);
                    if (FallbackFont == null)
                    {
                        FallbackFont = aFont;
                    }
                }

                if (FallbackFont != LastFallbackFont)
                {
                    WriteSimpleString(DataStream, Text.Substring(StartText, i - StartText), LastFallbackFont, EndNewText);

                    StartText = i;

                    if (FallbackFont != null)
                    {
                        TPdfBaseRecord.Write(DataStream, EndNewText2);
                        FallbackFont.Select(DataStream, FontSize, ref LastFont);

                        if (FlexCelTrace.HasListeners && FallbackFont != aFont && !TracedFonts.ContainsKey(aFont.FontName + ";" + FallbackFont.FontName))
                        {
                            TracedFonts.Add(aFont.FontName + ";" + FallbackFont.FontName, String.Empty);
                            FlexCelTrace.Write(new TPdfUsedFallbackFontError(FlxMessages.GetString(FlxErr.ErrUsedFallbackFont, aFont.FontName, FallbackFont.FontName), aFont.FontName, FallbackFont.FontName));
                        }

                        TPdfBaseRecord.Write(DataStream, StartNewText2);
                        LastFallbackFont = FallbackFont;
                    }
                }
            }
        }
コード例 #27
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        public TFlexCelDataSource(string dtName, VirtualDataTable aData, TRelationshipList ExtraRelations, TRelationshipList StaticRelations,
                                  TBand MasterBand, string Sort, IDataTableFinder TableFinder)
        {
            SplitLink = null;

            TBand band = MasterBand;
            TMasterDetailLinkList MasterDetailLinkList = new TMasterDetailLinkList();

            while (band != null)
            {
                if (band.DataSource != null)
                {
                    TRelation RelToMaster = band.DataSource.Data.GetRelationWith(aData);
                    if (RelToMaster != null)
                    {
                        MasterDetailLinkList.AddRelation(band.DataSource.DataState, RelToMaster);
                    }

                    //Create the splitlink.
                    TMasterSplitDataTableState SplitMaster = band.DataSource.DataState as TMasterSplitDataTableState;
                    if (SplitMaster != null && String.Equals(SplitMaster.DetailName, dtName, StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (SplitLink != null)
                        {
                            FlxMessages.ThrowException(FlxErr.ErrSplitNeedsOnlyOneMaster, dtName, SplitMaster.TableName, SplitLink.ParentDataSource.TableName);
                        }
                        SplitLink = new TSplitLink(SplitMaster, SplitMaster.SplitCount);
                    }

                    AddExtraRelationships(TableFinder, aData, ExtraRelations, band, MasterDetailLinkList);
                    AddExtraRelationships(TableFinder, aData, StaticRelations, band, MasterDetailLinkList);
                }
                band = band.MasterBand;
            }

            MasterDetailLinks = MasterDetailLinkList.ToArray();

            Data                 = aData;
            DataState            = aData.CreateState(Sort, MasterDetailLinks, SplitLink);
            DataState.FTableName = dtName;
            FName                = dtName;
        }
コード例 #28
0
ファイル: UFlexCelReportAux.cs プロジェクト: mwilian/demos
        private void DoPreload(TBand aParentBand, string aRange, string aFileName, TDataSourceInfoList aDsInfoList, int aNestedLevel, ExcelFile Result, MemoryStream MStream, FlexCelReport aParentReport)
        {
            Result.Open(MStream);
            Result.ActiveFileName = aFileName;

            TXlsNamedRange XlsRange = Result.GetNamedRange(aRange, -1);

            if (XlsRange == null)
            {
                FlxMessages.ThrowException(FlxErr.ErrCantFindNamedRange, aRange);
            }
            FRangeName = aRange;
            MainBand   = CreateStartingBand(XlsRange, aParentBand, aRange);
            Report     = new FlexCelReport(aNestedLevel, FTagText, aDsInfoList, aParentReport);
            if (!StaticInclude)
            {
                Report.PreLoad(Result, ref MainBand, XlsRange.SheetIndex, ref FData, out KeepRows, out KeepCols);
            }
            Result.ActiveSheet = XlsRange.SheetIndex;
        }
コード例 #29
0
        UInt16 ActualRecordSize(ref int Pos)
        {
            if (Pos > SelectedCells.Length)
            {
                FlxMessages.ThrowException(FlxErr.ErrInternal);
            }
            int DeltaPos = ((XlsConsts.MaxRecordDataSize - XlsConsts.SizeOfTRecordHeader - 9) / 6) - 1;

            Pos += DeltaPos;
            int IncludedCells = DeltaPos;

            if (Pos > SelectedCells.Length)
            {
                IncludedCells = SelectedCells.Length - (Pos - DeltaPos);
                Pos           = SelectedCells.Length;
            }
            return((UInt16)(XlsConsts.SizeOfTRecordHeader +
                            9 + //Fixed part
                            IncludedCells * 6));
        }
コード例 #30
0
ファイル: UFlexCelDataSource.cs プロジェクト: mwilian/demos
        public object GetValue(int ColumnIndex)
        {
            if ((TPseudoColumn)ColumnIndex == TPseudoColumn.RowCount)
            {
                return(DataState.RowCount);                                                      //First so it does not check for eof.
            }
            if (Eof())
            {
                FlxMessages.ThrowException(FlxErr.ErrReadAfterEOF);
            }
            if (ColumnIndex < 0)
            {
                switch ((TPseudoColumn)ColumnIndex)
                {
                case TPseudoColumn.RowPos: return(DataState.Position);

                default: FlxMessages.ThrowException(FlxErr.ErrInternal); break;     //Should never come here.
                }
            }
            return(DataState.GetValue(ColumnIndex));
        }