spread windows forms developer’s guide · drawing (rendering) style 137-138 customizing row,...

741

Click here to load reader

Upload: buidang

Post on 16-May-2018

318 views

Category:

Documents


29 download

TRANSCRIPT

Page 1: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Developer's Guide

Thisguideprovidesintroductoryconceptualmaterialandhow-toexplanationsforroutinetasksfordevelopersusingSpreadWindowsForms.ItdescribeshowanapplicationdeveloperwouldusethepropertiesandmethodsinSpreadtocreatespreadsheetsonWindowsForms,bindtodatabases,andotherwisecreateagridondata-intensiveapplicationsforthe.NETplatform.

GettingStartedUnderstandingtheProductUnderstandingtheSpreadsheetObjectsUnderstandingtheUnderlyingModelsCustomizingtheSheetAppearanceCustomizingRow,Column,andCellAppearanceCustomizingSheetInteractionCustomizingRoworColumnInteractionCustomizingInteractionwithCellTypesCustomizingInteractioninCellsManagingDataBindingManagingDataonaSheetManagingKeyboardInteractionManagingEventsfromUserActionsManagingFileOperationsManagingPrintingWorkingwiththeChartControlUsingTouchSupportwiththeComponent

Formoreinformation,besuretolookattheadditionalhelpfulresources:

Forsampleinformation,refertoGettingStarted.

ForcompleteAPIreferenceinformation,refertotheAssemblyReference(on-linedocumentation).

Foracompletelistofdocumentation,refertotheSpreadWindowsFormsDocumentation(on-linedocumentation).

Spread Windows Forms Developer’s Guide 0

Copyright © GrapeCity, inc. All rights reserved.

Page 2: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1 Table of Contents

Developer'sGuide 0

1. TableofContents 1-20

GettingStarted 21

HandlingInstallation 21

InstallingtheProduct 21

LicensingaTrialProjectafterInstallation 21

End-UserLicenseAgreement 21-22

CreatingaBuildLicense 22-23

HandlingRedistribution 23-25

ProductRequirements 25

UsingWindowsRegionalSettingsorOptions 25-26

UsingSatelliteAssembliesforLanguages 26

WorkingwiththeComponent 26

AddingaComponenttoaVisualStudio2015or2017Project 26-28

AddingaComponenttoaVisualStudio2013Project 28-30

AddingaComponenttoaProject 30-32

UnderstandingPartsoftheComponent 32

UsingSmartTagsDrop-Down 32-34

UsingVerbsinthePropertyWindow 34-36

WorkingwithCollectionEditors 36-37

AddingSupportforHighDPISettings 37-38

UnderstandingtheSpreadWizard 38

StartingtheSpreadWizard 38

UsingtheSpreadWizard 38-39

GettingMorePractice 39

FindingtheDocumentation 39-41

GettingTechnicalSupport 41

Tutorial:CreatingaCheckbookRegister 41-42

Spread Windows Forms Developer’s Guide 1

Copyright © GrapeCity, inc. All rights reserved.

Page 3: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

AddingSpreadtotheCheckbookProject 42

SettingUpRowsandColumnoftheRegister 42-44

SettingtheCellTypesoftheRegister 44-46

AddingFormulastoCalculateBalances 46-47

UnderstandingtheProduct 48

ProductOverview 48-49

FeatureOverview 49-50

CameraShapes 50-51

CellTypesforCellFunctionality 51

ChartControlsonaSheet 51

ChildControlsonaSheet 51

ColumnFootersandGroupFooters 51

ConditionalFormatting 51

DataBinding 51

ExcelSupportwithImportandExportCapabilities 51-52

FilteringDataonaSheet 52

FormulaTextBox(FormulaBar) 52

FormulaProviderControl 52

FunctionsandFormulas 52-53

GradientsforButtonCells,Headers,andMore 53

GroupingRowsintheDisplay 53

GroupingRowsorColumnsinanOutline 53

HeaderswithMultipleColumnsandRows 53

HierarchicalDisplay 53

HitTestforLocatingtheCursor 53

IndicatorsandIconsintheInterface 53-54

InkNotationSupport 54

KeyboardActionMapping 54

MultipleSheets 54

Spread Windows Forms Developer’s Guide 2

Copyright © GrapeCity, inc. All rights reserved.

Page 4: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

NameBoxControl 54

NotesforCells 54-55

PanesorViewports 55

PrintingandPDF 55

QuickStartWizard 55

Right-to-LeftLayouts 55

RowPreview 55

SearchingandSearchDialog 55

Shapes,Drawing,andAnnotations(FreehandDrawing) 55-56

SortingRowsorColumns 56

SpannableCells 56

Sparklines 56

SpreadDesigner 56

StylesandSkinsforCustomizedAppearance 56-57

Tables 57

TabStripandSheetNameTabs 57

TextRenderingwithGDI 57

TitleandSubTitle 57-58

TouchSupport 58

UndoandRedoActions 58

VisualStylesforXPThemes 58

NamespaceOverview 58-59

ConceptsOverview 59

ShortcutObjects 59-62

ObjectParentage 62

FormattedversusUnformattedData 62-63

CellTypes 63-65

UnderlyingModels 65

UnderstandingtheSpreadsheetObjects 66

Spread Windows Forms Developer’s Guide 3

Copyright © GrapeCity, inc. All rights reserved.

Page 5: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

WorkingwithSheets 66

WorkingwiththeActiveSheet 66-67

WorkingwithMultipleSheets 67-68

AddingaSheet 68-69

CopyingandInsertingaSheet 69-70

MovingaSheet 70-71

RemovingaSheet 71-72

ShowingorHidingaSheet 72-73

WorkingwithRowsandColumns 73

CustomizingtheNumberofRowsorColumns 73-75

AddingaRoworColumn 75-76

RemovingaRoworColumn 76-77

ShowingorHidingaRoworColumn 77-78

WorkingwithHeaders 78

UnderstandingHeaders 78-79

CreatingaHeaderwithMultipleRowsorColumns 79-82

ShowingorHidingHeaders 82-84

WorkingwithCells 84

WorkingwiththeActiveCell 84-85

CreatingaRangeofCells 85-86

UnderstandingtheUnderlyingModels 87

UnderstandingtheTypesofSheetModels 87

UnderstandingtheSheetModelClassesandInterfaces 87-89

FindingMoreDetailsontheSheetModels 89-90

UnderstandingtheDataModel 90-91

UnderstandingtheAxisModel 91-92

UnderstandingtheSelectionModel 92-93

UnderstandingtheSpanModel 93

UnderstandingtheStyleModel 93-96

Spread Windows Forms Developer’s Guide 4

Copyright © GrapeCity, inc. All rights reserved.

Page 6: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreatingaCustomSheetModel 96-97

UnderstandingtheOptionalInterfaces 97-98

CustomizingtheSheetAppearance 99

CustomizingtheAppearanceoftheOverallComponent 99

SettingtheComponenttotheOriginalAppearance 99-101

ApplyingaSkintotheComponent 101-102

CreatingaCustomSkinforaComponent 102-105

CustomizingtheRenderers 105-109

CustomizingtheDimensionsoftheComponent 109-110

CustomizingtheOutlineoftheComponent 110-111

CustomizingtheDisplayofthePointer 111-112

CustomizingPaintingofPartsoftheComponent 112-113

UsingXPThemeswiththeComponent 113-114

HandlingRight-to-LeftLayouts 114-115

CustomizingtheIndividualSheetAppearance 115

SettingtheBackgroundColorsforaSheet 116-117

SettingaBackgroundImageforaSheet 117-118

DisplayingGridLinesonaSheet 118-120

AddingaTitleandSubtitletoaSheet 120-121

DisplayingaFooterforColumnsorGroups 121-124

ApplyingaSkintoaSheet 124-126

CreatingaCustomSkinforaSheet 126-128

CustomizingtheSheetCornerAppearance 128-129

GeneralStyleoftheSheetCorner 129-131

TextDisplayintheSheetCorner 131-132

TableDisplayintheSheetCorner 132-134

CustomizableCellintheSheetCorner 134-135

CellSpansintheSheetCorner 135-136

HeaderCountSynchronizationintheSheetCorner 136-137

Spread Windows Forms Developer’s Guide 5

Copyright © GrapeCity, inc. All rights reserved.

Page 7: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Drawing(Rendering)Style 137-138

CustomizingRow,Column,andCellAppearance 139

CustomizingtheRoworColumnAppearance 139

SettingtheRowHeightorColumnWidth 139-141

ResizingtheRoworColumntoFittheData 141-142

FindingRowsandColumnThatHaveData 142-143

CreatingAlternatingRows 143-145

CustomizingtheAppearanceofHeaders 145-146

CustomizingtheDefaultHeaderLabels 146-148

CustomizingHeaderLabelText 148-150

CustomizingtheStyleofHeaderCells 150-152

AddingaGradienttoHeaderCells 152-153

CustomizingtheHeaderGridLines 153-156

SettingtheHeightorWidthofHeaderCells 156-157

CreatingaSpaninaHeader 157-159

CustomizingtheAppearanceofaCell 159-160

ColoringaCell 160-162

SettingaBackgroundImagetoaCell 162-164

AligningCellContents 164-166

ResizingtheCelltoFittheData 166-167

ResizingtheDatatoFittheCell 167-168

CustomizingCellBorders 168

CreatingandCustomizingCellBorders 168-172

CreatingBorderswithDiagonalLines 172-174

CreatingaComplexBorderwithMultipleLines 174-176

CreatingaSpanofCells 176-178

AllowingCellstoMergeAutomatically 178-180

AllowingCellDatatoOverflow 180-182

CreatingandApplyingaStyleforCells 182-185

Spread Windows Forms Developer’s Guide 6

Copyright © GrapeCity, inc. All rights reserved.

Page 8: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingSparklines 185

AddingaSparklinetoaCell 185-187

CustomizingMarkersandPointers 187-189

SpecifyingHorizontalandVerticalAxes 189-190

WorkingwithSparklines 190-193

CustomizingSheetInteraction 194

CustomizingInteractionwiththeOverallComponent 194

CustomizingtheScrollBarsoftheComponent 194-198

CustomizingtheScrollBarTips 198-200

CustomizingtheSheetNameTabsoftheComponent 200-205

CustomizingtheUserInterfaceImages 205-207

AllowingtheUsertoZoomtheDisplayoftheComponent 207

CustomizingtheScaleMode 207-208

AddingaContextMenutoaComponent 208-209

HostingtheComponentonaWebPage 209

CustomizingClipboardOperationOptions 209-211

CustomizingUndoandRedoActions 211-212

LocatingthePointerUsingHitTest 212-213

CustomizingInteractionBasedonEvents 213

HandlingEventsofSubeditors 213-214

CustomizingtheUserErrorMessages 214

CustomizingInteractionwithaSheet 214

CustomizingViewports 214-218

CustomizingSplitBoxes 218-220

CustomizingthePositionintheDisplay 220-221

PlacingChildControlsonaSheet 221-222

CreatingTables 222-223

AddingaTable 223-224

UsingTableFilters 224-227

Spread Windows Forms Developer’s Guide 7

Copyright © GrapeCity, inc. All rights reserved.

Page 9: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ResizingaTable 227-228

SortingaTable 228-229

SettingTableStyles 229-232

AddingaTableFormula 232-233

UnderstandingStructuredReferences 233-234

UsingOperatorsandSpecialItems 234-235

UnderstandingStructuredReferenceSyntaxRules 235-236

UsingStructuredReferences 236

CustomizingUserSearchingofData 236-237

AllowingtheUsertoPerformaStandardSearch 237-238

AllowingtheUsertoPerformanAdvancedSearch 238

SearchingforDatawithCode 238-239

CustomizingUserSelectionofData 239

SpecifyingWhattheUserCanSelect 240-243

CustomizingtheSelectionAppearance 243-246

WorkingwithSelections 246-247

HidingtheSelectionWhenFocusisLost 247

UsingApplicationTags 247

AddingaTagtoaSheet 247

AddingaTagtoaRoworColumn 247-248

AddingaTagtoaCell 248-249

SettingandResettingUserInteraction 249

AllowingUserFunctionality 249-251

ResettingPartsoftheInterface 251-253

ClearingorRemovingPartsoftheInterface 253

CustomizingDrawing 253-254

WorkingwithShapesinCode 254-256

WorkingwithAnnotations 256-257

AllowingtheUsertoDrawwithaTabletPC 257-258

Spread Windows Forms Developer’s Guide 8

Copyright © GrapeCity, inc. All rights reserved.

Page 10: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreatingCameraShapes 258-260

CustomizingRoworColumnInteraction 261

AllowingUserInteractionwithRowsandColumns 261

AllowingtheUsertoEnterDatainRowsorColumns 261-262

AllowingtheUsertoMoveRowsorColumns 262-264

AllowingtheUsertoResizeRowsorColumns 264-265

SettingFixed(Frozen)RowsorColumns 265-267

SettingupPreviewRows 267-269

ManagingFilteringofRowsofUserData 269-271

AllowingtheUsertoFilterRows 271-272

CustomizingSimpleFiltering 272

UnderstandingSimpleRowFiltering 272-273

SettingtheAppearanceofFilteredRows 273-276

CustomizingtheFilterList 276

DefiningtheContentsoftheFilterItemList 276-280

DefiningtheOrderoftheItemsintheFilterItemList 280-281

SettingtheAppearanceoftheDisplayoftheFilterItemList 281-283

CreatingaCompletelyCustomFilter 283

SettingtheAppearanceofFilterIndicators 283

UseCustomFilterIndicatorImages 283-285

ShowingorHidingFilterIndicators 285

DeterminingWhichHeaderRowDisplaystheIndicators 285-286

CustomizingEnhancedFiltering 286

UnderstandingEnhancedRowFiltering 286-289

CustomizingtheFilterBar 290-291

ManagingGroupingofRowsofUserData 291

AllowingtheUsertoGroupRows 291-292

UsingGrouping 292-293

SettingtheAppearanceofGroupedRows 293-294

Spread Windows Forms Developer’s Guide 9

Copyright © GrapeCity, inc. All rights reserved.

Page 11: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingtheGroupBar 294-295

CreatingaCustomGroup 295

InteroperabilityofGroupingwithOtherFeatures 295-296

ManagingOutlines(RangeGroups)ofRowsandColumns 296

UsinganOutline(RangeGroup)ofRowsorColumns 296-298

CustomizingtheAppearanceofanOutline(RangeGroup) 298-299

InteroperabilityofOutlineswithOtherFeatures 299-300

ManagingSortingofRowsofUserData 300-301

AllowingtheUsertoAutomaticallySortRows 301-303

UsingAutomaticSorting 303

SortingRows,Columns,orRanges 303-305

SettingtheAppearanceofSortIndicators 305-307

CustomizingInteractionwithCellTypes 308

UnderstandingHowCellTypesWork 308

UnderstandingCellTypeBasics 308-309

DeterminingtheCellTypeoftheActiveCell 309

UnderstandingHowCellTypesDisplayandFormatData 309-312

UnderstandingHowCellTypeAffectsModelData 312-313

WorkingwithEditableCellTypes 313-314

SettingaCurrencyCell 314-315

SettingaDate-TimeCell 315-317

SettingaGcDateTimeCell 317-319

SettingaGcNumberCell 319-321

SettingaGcTextBoxCell 321-323

SettingaGeneralCell 323-325

SettingaMaskCell 325-326

SettingaNumberCell 326-331

SettingaPercentCell 331-333

SettingaRegularExpressionCell 333-334

Spread Windows Forms Developer’s Guide 10

Copyright © GrapeCity, inc. All rights reserved.

Page 12: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettingaTextCell 334-335

WorkingwithGraphicalCellTypes 335-336

SettingaBarcodeCell 336-341

SettingaButtonCell 341-345

SettingaCheckBoxCell 345-348

SettingaColorPickerCell 348-352

SettingaComboBoxCell 352-355

SettingaHyperlinkCell 355-359

SettinganImageCell 359-360

SettingaListBoxCell 360-362

SettingaMultiple-ColumnComboBoxCell 362-365

SettingaMultipleOptionCell 365-367

SettingaProgressIndicatorCell 367-370

SettingaRichTextCell 370-373

SettingaSliderCell 373-377

UnderstandingAdditionalFeaturesofCellTypes 377

DisplayingSpinButtons 377-379

AllowingaComboBoxCelltoHandleaDouble-Click 379-380

LimitingValuesforaNumericCell 380-382

CustomizingthePop-UpDate-TimeControl 382-384

CustomizingthePop-UpCalculatorControl 384-385

CustomizingAutomaticCompletion(TypeAhead) 385-386

WorkingwithaSubEditor 386-387

CreatingaCustomCellType 387-390

CustomizingInteractioninCells 391

UsingEditModeandFocus 391

UnderstandingEditModeinaCell 391-392

LockingaCell 392-394

AllowingtheDisplayofButtonsinaCell 394-395

Spread Windows Forms Developer’s Guide 11

Copyright © GrapeCity, inc. All rights reserved.

Page 13: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingtheFocusIndicatorforaCell 395-398

UsingDragOperationstoFillCells 398

FillingCellswithDragandDrop 398-399

FillingCellswithDragandFill 399-401

FillingCellswithDragandMove 401-402

UsingVisibleIndicatorsintheCell 402

DisplayingTextTipsinaCell 402-404

AddingaNotetoaCell 404-407

PreventingaCellfromHavingFocus 407

GettingInformationofaClickedCell 407-408

DisplayingErrorIconsinCellsorRows 408

UsingConditionalFormattingofCells 408-409

CreatingConditionalFormattingwithRules 409

ColorScaleRules 409-411

DataBarRule 411-413

HighlightingRules 413-415

IconSetRule 415-416

Top,Bottom,orAverageRules 416-417

SettingupConditionalFormattingofaCell 417-419

ManagingFormulasinCells 419

PlacingaFormulainCells 420-421

SpecifyingaCellReferenceinaFormula 421-423

SpecifyingaSheetReferenceinaFormula 423-424

UsingaCircularReferenceinaFormula 424-425

NestingFunctionsinaFormula 425

RecalculatingandUpdatingFormulasAutomatically 425-426

FindingaValueusingGoalSeek 427

AllowingtheUsertoEnterFormulas 427-428

CreatingandUsingaCustomName 428-429

Spread Windows Forms Developer’s Guide 12

Copyright © GrapeCity, inc. All rights reserved.

Page 14: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreatingandUsingaCustomFunction 429-432

UsingtheAdditionalSpreadControls 432-433

SettinguptheFormulaTextBox 433-434

SettinguptheFormulaProvider 434-436

SettinguptheNameBox 436-437

ManagingDataBinding 438

BindingtoData 438

BindingSpreadtoanExternalDataSet 438-439

BindingaCellRangeinSpreadtoanExternalDataSource 439-441

BindingaCellRangeinSpreadasaDataSourcetoanExternalControl 441-443

CustomizingColumnandFieldBinding 443-446

BindingaComboBoxtoaDataReader 446-447

AddingtoBoundData 447

AddingaRowtoaBoundSheet 447-448

AddinganUnboundRowtotheSheet 448-450

AddinganUnboundColumntoaBoundSheet 450-451

CustomizingDataBinding 451

CustomizingColumnHeadersforBoundSheets 451-453

CustomizingCellTypesforBoundSheets 453-455

WorkingwithHierarchicalDataDisplay 455-461

CreatingaHierarchicalDisplayManually 461-463

CreatingCustomHierarchyIcons 463

Tutorial:BindingtoaCorporateDatabase 463

AddingSpreadtoaDataBindProject 463

SettinguptheDatabaseConnection 463-464

SpecifyingtheDatatoUse 464-465

CreatingtheDataSet 465-466

BindingSpreadtotheDatabase 466

ImprovingtheDisplaybyChangingtheCellType 466-467

Spread Windows Forms Developer’s Guide 13

Copyright © GrapeCity, inc. All rights reserved.

Page 15: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ManagingDataonaSheet 468

PlacingandRetrievingData 468

HandlingDataUsingSheetMethods 468-471

HandlingDataUsingCellProperties 471-472

RepeatedlyFillingaRangeofCellswithCopiedCells 472-473

ValidatingUserInput 473-477

RearrangingDataonaSheet 477

CopyingDataonaSheet 477

MovingDataonaSheet 477-478

SwappingDataonaSheet 478-479

RemovingDatafromaSheet 479-480

ImprovingPerformancebySuspendingtheLayout 480-483

ManagingKeyboardInteraction 484

UnderlyingKeystrokeProcessing 484-485

FactorsofKeyboardMapUsage 485-487

DefaultKeyboardNavigation 487-493

DefaultKeyboardMaps 493-494

DefaultMapforExcelCompatibility 494-495

DefaultMapforNormalandWhenFocused 495

DefaultMapforNormalandWhenAncestorOfFocused 495-497

DefaultMapforReadOnlyandWhenFocused 497

DefaultMapforReadOnlyandWhenAncestorOfFocused 497-498

DefaultMapforRowModeandWhenFocused 498

DefaultMapforRowModeandWhenAncestorOfFocused 498-499

DefaultMapforSingleSelectandWhenFocused 499

DefaultMapforSingleSelectandWhenAnscestorFocused 499-500

DefaultMapforMultiSelectandWhenFocused 500

DefaultMapforMultiSelectandWhenAncestorOfFocused 500

DefaultMapforExtendedSelectandWhenFocused 500

Spread Windows Forms Developer’s Guide 14

Copyright © GrapeCity, inc. All rights reserved.

Page 16: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DefaultMapforExtendedSelectandWhenAncestorOfFocused 500-501

DeactivatingtheDefaultKeyboardMap 501-502

ChangingtheDefaultKeyboardMap 502-503

UsingInputMapswithActionMaps 503-507

CustomizingtheInputMaps 507-509

ChanginganInputMapforaChildView 509-512

UsingtheExcelCompatibilityInputMaps 512

SavingandLoadingMapFiles 512-513

ManagingEventsfromUserActions 514

ClickingActions 514-517

SelectingActions 517-518

EnteringDataActions 518

Sheet-LevelActions 518-519

InteractivityActions 519

ShapeActions 519

PrintActions 519-520

ManagingFileOperations 521

SavingDatatoaFile 521

SavingtoaSpreadXMLFile 521-522

SavingtoanExcelFile 522-523

SavingtoaTextFile 523-524

SavingtoanHTMLTable 524-525

SavingSpreadsheetDatatoSimpleXML 525-526

OpeningExistingFiles 526

OpeningaSpreadXMLFile 526-527

OpeninganExcelFile 527-528

OpeningaSpreadCOMFile 528-529

OpeningaCustomTextFile 529-530

UsingSerialization 530

Spread Windows Forms Developer’s Guide 15

Copyright © GrapeCity, inc. All rights reserved.

Page 17: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ImplementingaSerializerClass 530-536

ParsingFormulasinCustomXMLDeserialization 536

SavingandLoadingaSkin 536-537

SavingaSkin 537

LoadingaSkin 537-538

ManagingPrinting 539

SpecifyingWhattoPrint 539

PrintinganEntireSheet 539-540

PrintingtoPDF 540-542

PrintingaChildViewofaHierarchicalDisplay 542

PrintingParticularPages 542-544

PrintingthePortionoftheSheetwithData 544-545

PrintingaRangeofCellsonaSheet 545-547

PrintinganAreaoftheSheet 547-548

PrintingaSheetwithCellNotes 548-549

PrintingaSheetwithShapes 549-550

CustomizingtheAppearanceofthePrinting 550

UnderstandingthePrintingOptions 550-554

CustomizingthePrintJobSettings 554-556

CustomizingthePrintedPageLayout 556-557

CustomizingthePrintedPageHeaderorFooter 557-562

RepeatingRowsorColumnsonPrintedPages 562-563

AddingaPageBreak 563-564

AddingaWatermarktoaPrintedPage 564-565

OptimizingthePrinting 565

OptimizingthePrintingUsingRules 565-568

OptimizingthePrintingUsingSize 568

DisplayingDialogsforUsers 568-569

DisplayingaPrintDialogfortheUser 569

Spread Windows Forms Developer’s Guide 16

Copyright © GrapeCity, inc. All rights reserved.

Page 18: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DisplayinganAbortMessagefortheUser 569

ProvidingaPreviewofthePrinting 570

WorkingwiththeChartControl 571

UnderstandingCharts 571

ChartUserInterfaceElements 571-572

ChartObjectModel 572-573

ChartTypesandViews 573-575

PlotTypes 575

YPlotTypes 575-576

AreaCharts 576-578

BarCharts 578-581

LineCharts 581-582

MarketData(High-Low)Charts 582-584

PointCharts 584-585

StripeCharts 585-586

XYPlotTypes 586

XYBubbleCharts 586-587

XYLineCharts 587

XYPointCharts 587-588

XYStripeCharts 588

XYZPlotTypes 588-589

XYZPointCharts 589-590

XYZLineCharts 590-591

XYZSurfaceCharts 591-592

XYZStripeCharts 592

PiePlotTypes 592

DoughnutCharts 592-593

PieCharts 593

PolarPlotTypes 593-594

Spread Windows Forms Developer’s Guide 17

Copyright © GrapeCity, inc. All rights reserved.

Page 19: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

PolarPointCharts 594-595

PolarLineCharts 595-596

PolarAreaCharts 596-597

PolarStripeCharts 597

RadarPlotTypes 597-598

RadarPointCharts 598-599

RadarLineCharts 599-600

RadarAreaCharts 600

RadarStripeCharts 600-601

DataPlotTypes 601-602

PlotsandSeries 602-604

Walls 604-605

AxisandOtherLines 605-606

FillEffects 606-609

ChartLineStyle 609-611

ElevationandRotation 611-612

Lighting,Shapes,andBorders 612-614

Size-Height,Width,andDepth 614-615

Labels 615-616

Legends 616-617

CreatingCharts 617

CreatingPlotTypes 617-618

CreatingaYPlot 618-620

CreatinganXYPlot 620-622

CreatinganXYZPlot 622-625

CreatingaPiePlot 625-627

CreatingaPolarPlot 627-630

CreatingaRadarPlot 630-633

CombiningPlotTypes 633-635

Spread Windows Forms Developer’s Guide 18

Copyright © GrapeCity, inc. All rights reserved.

Page 20: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ConnectingtoData 635

UsingaBoundDataSource 635-637

UsinganUnboundDataSource 637

UsingRawandRepresentedData 637-638

SavingorLoadingaChart 638-639

UsingtheChartDesigner 639-640

OpeningtheChartDesigner 640-641

CreatingaChartControl 641-644

ChartCollectionEditors 644

LabelCollectionEditor 644-645

LegendCollectionEditor 645

PlotCollectionEditor 645-646

LightCollectionEditor 646-647

SeriesCollectionEditor 647

ChartDesignerToolbar 647-648

UsingtheChartControl 648

AddingaChartControl 648-655

ChangingChartOptions 655-657

UsingtheChartDesigner 657-658

BindingtheChartControl 658-660

AllowingtheUsertoChangetheChart 660-661

AddingaContextMenu 662

UsingTouchSupportwiththeComponent 663

UnderstandingTouchSupport 663

UnderstandingTouchGestures 663

UnderstandingTouchMessages 663

UsingTouchSupport 663-664

UsingaTouchKeyboard 664-665

UsingtheTouchMenuBar 665-667

Spread Windows Forms Developer’s Guide 19

Copyright © GrapeCity, inc. All rights reserved.

Page 21: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingTouchSupportwithAutoFit 667

UsingTouchSupportwithCellNotes 667

UsingTouchSupportwithCharts 667-668

UsingTouchSupportwithClipboardOperations 668

UsingTouchSupportwithDragandFill 668-670

UsingTouchSupportwithDrop-DownElements 670-671

UsingTouchSupportwithEditableCells 671-672

UsingTouchSupportwithInputManCells 672-675

UsingTouchSupportwithFiltering 675

UsingTouchSupportwithGrouping 675-676

UsingTouchSupportwithRangeGrouping 676-677

UsingTouchSupportwhenMovingColumnsorRows 677-679

UsingTouchSupportwhenResizingColumnsorRows 679-680

UsingTouchSupportwithScrolling 680-681

UsingTouchSupportwithSelections 681-683

UsingTouchSupportwithShapes 683

UsingTouchSupportwhenSorting 683-684

UsingTouchSupportwithViewports 684

UsingTouchSupportwiththeTabStrip 684

UsingTouchSupportwithZooming 684-685

2. Index 686-740

Spread Windows Forms Developer’s Guide 20

Copyright © GrapeCity, inc. All rights reserved.

Page 22: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Getting Started

ThistopicdescribeshowtogetstartedwiththeSpreadcomponent.Itincludes:

HandlingInstallationWorkingwiththeComponentUnderstandingtheSpreadWizardGettingMorePracticeTutorial:CreatingaCheckbookRegister

Formorein-depthexplanationoftheproduct,refertoUnderstandingtheProduct.

Handling Installation

Thefollowingtasksinvolveinstallingandredistributingtheproduct:

InstallingtheProductLicensingaTrialProjectafterInstallationEnd-UserLicenseAgreementCreatingaBuildLicenseHandlingRedistributionProductRequirementsUsingWindowsRegionalSettingsorOptionsUsingSatelliteAssembliesforLanguages

Installing the Product

InstallationinstructionsandalistofinstalledfilesforSpreadWindowsFormsisprovidedintheReadMefilethataccompaniesthisproduct.ToviewtheReadMefile,dooneofthefollowing:

1. FromtheStartmenuchoosePrograms->GrapeCity->SpreadStudio10->SpreadWindowsForms->SpreadWindowsFormsReadMe.SelecttheReadMeundertheGrapeCitynameontheStartscreenwithMicrosoftWindows8,8.1,or10.

2. Ifyouperformedadefaultinstallation,inWindowsExplorerbrowseto\GrapeCity\SpreadStudio10\Docs\WindowsFormsundertheprogramfilesdirectoryandthendouble-clickthereadme.chmfile.

YoucanalsoaccesstheReadMeonthewebsite.

Licensing a Trial Project after Installation

TolicenseWindowsFormsprojectsmadewiththetrialversiondothefollowing:

1. EnsurethatSpreadislicensedonthemachinebyfollowingtheinstallationstepsintheReadMeonthewebsite.2. OpentheprojectinMicrosoftVisualStudio.3. OpentheVisualStudioBuildmenuandselectRebuildSolution.4. Theexecutableapplicationisnowlicensedandnonagscreensorevaluationbannersappearwhenyourunit.You

candistributetheapplicationtounlicensedmachinesandnonagscreensorevaluationbannersappear.

Ifyouhaveinstalledatrialversionoftheproduct,youcanlicensetheproductusingtheproductsplashscreenintheMicrosoftVisualStudioproject.

Spread Windows Forms Developer’s Guide 21

Copyright © GrapeCity, inc. All rights reserved.

Page 23: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

End-User License Agreement

TheGrapeCitylicensinginformation,includingtheGrapeCityend-userlicenseagreements,frequentlyaskedlicensingquestions,andtheGrapeCitylicensingmodel,isavailableonlineathttp://spread.grapecity.com/Pages/Licensing-FAQs/andhttp://spread.grapecity.com/Pages/EULA/.

Creating a Build License

Youcancreateabuildlicensetouseonabuildmachine.

Licensesarebuiltusingthelicensecompilertool(lc.exe)toproduceaspecialresourcefilewiththe.licensesfileextension.VisualStudioVB.NETandC#projectsautomaticallyhandlecompilingthelicenses.licxintheprojecttoproducethe.licensesresourcefile,whichislinkedintothetargetexecutable.Thecomponents’run-timelicensekeysinthatlicensesresourcefileareloadedandverifiedwhenthefirstinstanceofeachcomponentwiththeLicenseProviderattributeiscreatedintheapplication.Youcanremovethelicenses.licxfromyourVisualStudioprojectandaddthe.licensesresourceinitsplaceusingthefollowingsteps:

1. Buildtheprojectusingthelicensedcomponentsonadevelopermachinewhichislicensedfordevelopmentwithallthecomponentsreferencedintheproject(thiscreatesthe.licensesresource).

2. Findthelicenses.licxintheSolutionExplorerwindow.YoucanusetheShowAllFilestoolbarbuttontoseeitorexpandthePropertiesfolder.

3. Right-clickthelicenses.licxintheSolutionExplorerwindow,andthenselectExcludeFromProject.

4. UseWindowsExplorer(outsideVisualStudio)tofindthe.licensesfileintheobj\{configuration}folder(obj\Debugorobj\Release).Thefileshouldhavethename{target}.{ext}.licenses(forexample:project1.exe.licenses).

5. Copythatfiletotheprojectfolderandrenameittoremovethetargetname(renameitfrom{target}.{ext}.licensesto{ext}.licenses).Forexample:project1.exe.licensestoexe.licenses.

6. IntheVisualStudioSolutionExplorerwindow,findthe{ext}.licenses(youmightneedtorefreshthewindow),thenright-clickthefileandselectIncludeInProject.

Spread Windows Forms Developer’s Guide 22

Copyright © GrapeCity, inc. All rights reserved.

Page 24: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

7. ChangetheBuildActionforthe{ext}.licensesfromContenttoEmbeddedResource.

8. Theprojectcannowbebuiltwithoutrequiringadeveloperlicenseonthemachine,sincethelicensehasalreadybeenbuiltandlinkedintotheproject.

Notethefollowingrestrictions:

Thelicensesresourcecontainsthenameofthetargetmoduleencodedinitscontents,sothatlicensesresourceisspecifictothatparticularproject.Thestepsdescribedabovewillnotbypassanypartofthedesign-timelicenseenforcement.Thedeveloperlicenseisstillrequiredtoopenformscontaininginstancesofthelicensedcontrols.Ifthelicensedcomponentsintheprojectchange,thenspecialcareshouldbetaken.Thelicenses.licxshouldbeaddedbacktotheprojectfirst,sothatitdoesnotgetrecreated(empty)byVisualStudioandcausetypereferences(andembeddedlicensesintheresource)tobelost.Afterthenewlicensedcomponentsareaddedorchangedinthelicx,theabovestepsshouldberepeated.Theabovestepsonlyapplyfor.NETmanagedcodeapplicationswhichusethestandard.NETFrameworkcomponentlicensingmodel(ActiveXcontrollicensinginmanaged.NETapplicationsdoesnotusethismechanism).

Handling Redistribution

WhenyoudeployapplicationsthatyouhavedevelopedusingSpreadWindowsForms,yourusers'systemsmustmeet

Spread Windows Forms Developer’s Guide 23

Copyright © GrapeCity, inc. All rights reserved.

Page 25: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thefollowingrequirementsandyoumustdistributethefileslistedinthefollowingsections:

SystemRequirements

Yourusers'systemsmustmeetthefollowingrequirements:

Operating SystemMustbeoneofthefollowing:

MicrosoftWindows98MicrosoftWindows98SEMicrosoftWindowsMEMicrosoftWindows2000(SP3)MicrosoftWindowsServer2003MicrosoftWindowsServer2008MicrosoftWindowsServer2012R2MicrosoftWindowsXP(SP2)MicrosoftWindowsVistaMicrosoftWindows7MicrosoftWindows8MicrosoftWindows8.1MicrosoftWindows10

SoftwareYoumusthavetheMicrosoft.NETFrameworkinstalled.

FilestoDistribute

Youmustdistributethefollowingfilestoyourusers'systems:

ThefollowingassembliesthatcomewithSpreadWindowsForms:FarPoint.CalcEngine.dllFarPoint.Excel.dllFarPoint.PluginCalendar.WinForms.dllFarPoint.Win.dllFarPoint.Win.Spread.dllFarPoint.Localization.dll

InstallationforyourapplicationmustcopytheseDLLsfromtheSpreadWindowsFormsdirectorytothedirectorywheretheapplication'sexecutablefileresidesorinstallthemintheglobalassemblycache(GAC).FormoreinformationontheGAC,refertotheMicrosoftVisualStudio.NETand.NETFrameworkdocumentation.

The.NETFrameworkredistributablepackage,iftheusersdonothavethe.NETFrameworkontheirsystems.Formoreinformationonthispackage,refertothe.NETFrameworkdocumentation.IfyouusetheinknotationfeatureinyourprojectthenyouwillalsoneedtodistributetheFarPoint.Win.Ink.dll.ThisDLLwouldneedtobeinstalledtothedirectorywheretheapplication'sexecutablefileresidesorbeinstalledintheglobalassemblycache(GAC).ThisalsorequirestheruntimecomponentsoftheMicrosoftTabletPCSDK.TheFarPoint.Win.Inkassemblyiscurrentlybuiltwithversion1.7oftheMicrosoftTabletPCSDK.IfyouusethetextrendererfeatureinyourprojectthenyouwillalsoneedtodistributetheFarPoint.Win.TextRenderer.dll.ThisDLLwouldneedtobeinstalledtothedirectorywheretheapplication'sexecutablefileresides.Thisfeatureisonlyavailablewiththe.NET2.0Framework.IfyouusetheexporttoPDFfeatureinyourprojectthenyouwillalsoneedtodistributetheFarPoint.PDF.dll.IfyouusetheexporttoHTMLfeatureinyourprojectthenyouwillalsoneedtodistributethe

Spread Windows Forms Developer’s Guide 24

Copyright © GrapeCity, inc. All rights reserved.

Page 26: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.Html.dllandtheSystem.Web.dll.IfyouuseaSpreaddesignerdialogatruntimethenyoualsoneedtodistributetheFarPoint.Win.Spread.Design.dll.IfyouusethechartcontrolinyourprojectthenyouneedtodistributetheFarPoint.Win.Chart.dll.

HostingtheControlonaWebPage

IfyouarehostingtheSpreadWindowsFormscontrolasausercontrolonaWebpageinMicrosoftInternetExplorer(IE),makethesesecuritypermissionadjustments:

1. InIE,selectTools->InternetOptions->SecurityandselectTrustedSites.ClicktheSitesbuttonandaddtheWebsitewhereyourusercontrolresides(forexample,http://localhost).

2. InWindows,selectStart->Settings->ControlPanelandselectAdministrativeTools.SelectMicrosoft.NETFrameworkConfiguration.Inthe.NETFrameworkConfigurationwindow,selectRuntimeSecurityPolicyandclickAdjustZoneSecurity.IntheAdjustZoneSecurityWizard,answerthefirstscreen(whichcomputeritappliesto)andinthenextscreen,clickTrustedSitesandslidetheindicatortogivethatzoneFullTrust.FinishthewizardbyclickingNext.

Product Requirements

Developingapplicationswiththe.NET4.0versionofSpreadWindowsForms

Fordevelopingapplicationswiththe.NET4.0versionofSpreadWindowsForms,youmusthavethefollowingsystemandsoftwarespecifications:

Operating SystemOneofthefollowing:

MicrosoftWindows2000Professional(SP4)

MicrosoftWindows2000Server

MicrosoftWindows2003Server(SP1)

MicrosoftWindowsServer2012R2

MicrosoftWindows2008

MicrosoftWindowsXP(SP2)

MicrosoftWindowsVista

MicrosoftWindows7

MicrosoftWindows8

MicrosoftWindows8.1

MicrosoftWindows10

SoftwareThereleaseversionoftheMicrosoft.NET4.0Frameworkorlater.

Theseareminimumrequirementstoruntheproduct.

IfyouwanttotakeadvantageoftheinkcapabilitiesofSpreadWindowsForms,youwillneedtoinstalltheruntimecomponentsoftheMicrosoftTabletPCSDK.TheFarPoint.Win.Inkassemblyiscurrentlybuiltwithversion1.7oftheMicrosoftTabletPCSDK.

Spread Windows Forms Developer’s Guide 25

Copyright © GrapeCity, inc. All rights reserved.

Page 27: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Using Windows Regional Settings or Options

TheSpreadcomponentreadstheWindowsregionalsettingsoroptions,whicharesetbytheuserthroughtheControlPanel,butduetovariationsinhowWindowshandlesthosesettings,yourusermightexperienceunexpectedresults.

IngeneralinWindowsoperatingsystems,theSpreadcomponentdoesnotrecognizechangesmadetotheWindowsregionalsettingsuntilyourestartyourdevelopmentenvironmentoryourapplicationorperformanyoperationthatunloadsandreloadsthecurrentassemblyanddependentassemblies.Thisisbecausehandlingtheregionalsettingsisveryprocessorintensive.Tooptimizeperformancethesesettingsarenotcheckedeachtimeasimpleoperationisperformed.

InmostWindowsoperatingsystems,theregionaloptionsarereadfromthesystemregistry.Incertainsituations,Windowsdoesnotclearpreviousregionaloptionswhenreadingchangesfromthesystemregistry.Beawareofthiswhenworkingwithregionalsettings.

Using Satellite Assemblies for Languages

Youcanplaceresourcesfordifferentlanguagesusingsatelliteassemblies.Theassemblyisthenloadedinmemoryiftheuserviewstheapplicationinthatlanguage.Theresourcesmustbeplacedinspecificlocationssotheycanbelocatedandused.Iftheresourcecannotbefound,thedefaultresourceisused.

Usethefollowingstepstoaddalanguageresource:

1. Findtheresourcesinthelocalizationfolderundertheinstalledbinfolder(forexample,ko-KRorzh-CN).

2. CopythefoldertothebinfolderoftheapplicationorinstalltotheGAC.

3. SetthecurrentUIculturetothelanguage(forexample,Korean)usingthefollowingcode.System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ko-KR")

Ifyouwishtousetheresourceatdesigntime,installthesatelliteassembliestotheGACandselectthelanguageinVisualStudio.NET.

Thestand-alonedesignerusestheresourcesintheGACiftheoperatingsystemandtheGACresourcesusethesamelanguage.Ifthelanguageisdifferent,thedefaultresourceisapplied(English).

Working with the Component

ThetasksinvolvedwithusingtheSpreadcomponentonaWindowsFormare:

AddingaComponenttoaVisualStudio2015or2017ProjectAddingaComponenttoaVisualStudio2013ProjectAddingaComponenttoaProjectUnderstandingPartsoftheComponentUsingSmartTagsDrop-DownUsingVerbsinthePropertiesWindowWorkingwithCollectionEditorsAddingSupportforHighDPISettings

Adding a Component to a Visual Studio 2015 or 2017 Project

UsethefollowingstepstoaddthecomponenttoaprojectinVisualStudio.NET.

ThefirststepistocreateanewprojectinVisualStudio.NET,andtoaddaSpreadWindowsFormscomponenttotheproject.

1. StartVisualStudio.NET.

Spread Windows Forms Developer’s Guide 26

Copyright © GrapeCity, inc. All rights reserved.

Page 28: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. FromtheFilemenu,chooseNew,Project.3. IntheNewProjectdialog,intheInstalledarea,selectaprojecttypedependingonthelanguageenvironmentin

whichyouaredeveloping.Forexample,chooseWindowsunderVisualBasic.

a. ChoosethetypeofprojectsuchasWindowsFormsApplication.b. IntheNamebox,typethenameofthenewproject.ThedefaultisWindowsApplication1forthefirst

WindowsFormsapplication.c. IntheLocationbox,leavethelocationpathasthedesignatedpath,orclickBrowsetochangethepathtoanewdirectory.

d. ClickOK.IfyourprojectdoesnotdisplaytheSolutionExplorer,fromtheViewmenu,chooseSolutionExplorer.

4. IntheSolutionExplorer,right-clickontheformname,Form1.ChooseRenamefromthepop-upmenu,thentypethenewformnameyoupreferforthenewformname.

Usethefollowingstepstoaddthecomponenttothetoolboxifthecomponentisnotlistedinthetoolbox.

1. IftheToolboxisnotdisplayed,fromtheViewmenuchooseToolbox.2. OncetheToolboxisdisplayed,lookintheGrapeCitySpreadcategory(orinanyothercategoryifyouhaveinstalled

Spreadandplacedthetoolboxiconinadifferentcategory).3. IftheSpreadcomponentisnotintheToolbox:

a. Right-clickintheToolbox,andfromthepop-upmenuchooseChooseItems.b. IntheChooseToolboxItemsdialog,clickthe.NETFrameworkComponentstab.c. Inthe.NETFrameworkComponentstab,theFpSpreadcomponent(intheFarPoint.Win.Spreadnamespace)shouldbedisplayedinthelistofcomponents.SelecttheSpreadcomponentcheckboxandclickOK.SelectfpChart(FarPoint.Win.Chartnamespace)forthechartcontrol.

Spread Windows Forms Developer’s Guide 27

Copyright © GrapeCity, inc. All rights reserved.

Page 29: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

IftheSpreadcomponentisnotdisplayedinthelistofcomponents,clickBrowseandbrowsetotheinstallationpathfortheSpreadWindowsFormscomponent.Oncethere,selecttheFarPoint.Win.Spread.dllandclickOpen.TheSpreadcomponentisnowdisplayedinthelistofcomponents.SelectitandclickOK.SelectFarPoint.Win.Chart.dllforthechartcontrol.

d. Youcantestthatthecomponenthasbeenaddedbyopeningaprojectandinsertingthecomponent.

ThenextstepistoaddtheSpreadcomponenttoaproject.

1. Withanopenproject,intheToolboxunderGrapeCitySpread(orwhatevercategorytowhichyouaddedit),selecttheFpSpreadcomponent.

2. OnyourWindowsFormspage,drawaSpreadcomponentbydraggingarectanglethesizethatyouwouldliketheinitialcomponentorsimplydouble-clickonthepage.TheSpreadcomponentappears.TheSpreadDesigneralsoappearsbydefault.Closethedesigner.

Yourprojectshouldlooksimilartothefollowingpicture.

YouhaveaddedtheSpreadcomponenttotheproject.

Adding a Component to a Visual Studio 2013 Project

Ifyouarenewtothe.NETplatform,youmightbeunfamiliarwithhowtostartanewprojectusingacomponent.TousetheSpreadWindowsFormsproduct,youneedtoaddthecomponenttoaprojectinVisualStudio.NET.

ThefirststepistocreateanewprojectinVisualStudio.NET,andtoaddaSpreadWindowsFormscomponenttotheproject.

1. StartVisualStudio.NET.2. FromtheFilemenu,chooseNew,ProjectorselectNewProject...underStart.3. IntheNewProjectdialog,intheInstalledarea,selectaprojecttypedependingonthelanguageenvironmentin

whichyouaredeveloping.Forexample,chooseWindowsunderVisualBasic.

Spread Windows Forms Developer’s Guide 28

Copyright © GrapeCity, inc. All rights reserved.

Page 30: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

a. ChoosethetypeofprojectsuchasWindowsFormsApplication.b. IntheNamebox,typethenameofthenewproject.ThedefaultisWindowsApplication1forthefirst

WindowsFormsapplication.c. IntheLocationbox,leavethelocationpathasthedesignatedpath,orclickBrowsetochangethepathtoanewdirectory.

d. ClickOK.IfyourprojectdoesnotdisplaytheSolutionExplorer,fromtheViewmenu,chooseSolutionExplorer.

4. IntheSolutionExplorer,right-clickontheformname,Form1.ChooseRenamefromthepop-upmenu,thentypethenewformnameyoupreferforthenewformname.

ThenextstepistoaddtheSpreadcomponenttothetoolbox.Thisonlyhastobedoneonce.

1. IftheToolboxisnotdisplayed,fromtheViewmenuchooseToolbox.2. OncetheToolboxisdisplayed,lookintheGrapeCitySpreadcategory(orinanyothercategoryifyouhaveinstalled

Spreadandplacedthetoolboxiconinadifferentcategory).3. IftheSpreadcomponentisnotintheToolbox:

a. Right-clickintheToolbox,andfromthepop-upmenuchooseChooseItems.b. IntheChooseToolboxItemsdialog,clickthe.NETFrameworkComponentstab.c. Inthe.NETFrameworkComponentstab,theFpSpreadcomponent(intheFarPoint.Win.Spreadnamespace)shouldbedisplayedinthelistofcomponents.SelecttheSpreadcomponentcheckboxandclickOK.SelectfpChart(FarPoint.Win.Chartnamespace)forthechartcontrol.IftheSpreadcomponentisnotdisplayedinthelistofcomponents,clickBrowseandbrowsetotheinstallationpathfortheSpreadWindowsFormscomponent.Oncethere,selecttheFarPoint.Win.Spread.dllandclickOpen.TheSpreadcomponentisnowdisplayedinthelistofcomponents.SelectitandclickOK.SelectFarPoint.Win.Chart.dllforthechartcontrol.

Spread Windows Forms Developer’s Guide 29

Copyright © GrapeCity, inc. All rights reserved.

Page 31: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

d. Youcantestthatthecomponenthasbeenaddedbyopeningaprojectandinsertingthecomponent.

ThenextstepistoaddtheSpreadcomponenttoaproject.

1. Withanopenproject,intheToolboxunderGrapeCitySpread(orwhatevercategorytowhichyouaddedit),selecttheFpSpreadcomponent.

2. OnyourWindowsFormspage,drawaSpreadcomponentbydraggingarectanglethesizethatyouwouldliketheinitialcomponentorsimplydouble-clickonthepage.TheSpreadcomponentappears.TheSpreadDesigneralsoappearsbydefault.Closethedesigner.

Yourprojectshouldnowlooksimilartothepictureshownhere.

YouhaveaddedtheSpreadcomponenttotheproject.

Adding a Component to a Project

Ifyouarenewtothe.NETplatform,youmightbeunfamiliarwithhowtostartanewprojectusingacomponent.TousetheSpreadWindowsFormsproduct,youneedtoaddthecomponenttoaprojectinVisualStudio.NET.

ThefollowinggeneralstepsareforMicrosoftVisualStudio2012orearlier.

ThefirststepistocreateanewprojectinVisualStudio.NET,andtoaddaSpreadWindowsFormscomponenttotheproject.

1. StartVisualStudio.NET.2. FromtheFilemenu,chooseNew,Project.3. IntheNewProjectdialog,intheProjectTypearea,selectaprojecttypedependingonthelanguage

environmentinwhichyouaredeveloping.Forexample,intheProjectTypeslist,chooseVisualC#Projects.4. IntheNewProjectdialog,

a. IntheProjectTypeslist,chooseVisualC#ProjectsorVisualBasicProjectsdependingonthelanguageyouareusing.

b. IntheTemplateslist,chooseWindowsApplication.c. IntheNamebox,typethenameofthenewproject.ThedefaultisWindowsApplication1forthefirstWindowsFormsapplication.

Spread Windows Forms Developer’s Guide 30

Copyright © GrapeCity, inc. All rights reserved.

Page 32: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

d. IntheLocationbox,leavethelocationpathasthedesignatedpath,orclickBrowsetochangethepathtoanewdirectory.

e. ClickOK.IfyourprojectdoesnotdisplaytheSolutionExplorer,fromtheViewmenu,chooseSolutionExplorer.

5. IntheSolutionExplorer,right-clickontheformname,Form1.ChooseRenamefromthepop-upmenu,thentypethenewformnameyoupreferforthenewformname.

ThenextstepistoaddtheSpreadcomponenttotheToolbox.Thisonlyhastobedoneonce.

1. IftheToolboxisnotdisplayed,fromtheViewmenuchooseToolbox.2. OncetheToolboxisdisplayed,lookintheGrapeCitySpreadcategory(orinanyothercategoryifyouhave

installedSpreadandplacedthetoolboxiconinadifferentcategory).3. IftheSpreadcomponentisnotintheToolbox,right-clickintheToolbox,andfromthepop-upmenuchooseCustomizeToolbox,Add/RemoveItems,orChooseItems(dependingontheversionofVisualStudio).

4. IntheCustomizeToolboxdialog,clickthe.NETFrameworkComponentstab.5. Inthe.NETFrameworkComponentstab,theFpSpreadcomponent(intheFarPoint.Win.Spreadnamespace)shouldbedisplayedinthelistofcomponents.SelecttheFpSpreadcomponentcheckboxandclickOK.SelectfpChart(FarPoint.Win.Chartnamespace)forthechartcontrol.IftheSpreadcomponentisnotdisplayedinthelistofcomponents,clickBrowseandbrowsetotheinstallationpathfortheSpreadWindowsFormscomponent.Oncethere,selecttheFarPoint.Win.Spread.dllandclickOpen.TheSpreadcomponentisnowdisplayedinthelistofcomponents.SelectitandclickOK.SelectFarPoint.Win.Chart.dllforthechartcontrol.

6. Youcantestthatthecomponenthasbeenaddedbyopeningaprojectandinsertingthecomponent.

ThenextstepistoaddtheSpreadcomponenttoaproject.

1. Withanopenproject,intheToolboxunderWindowsForms(orwhatevercategorytowhichyouaddedit),selecttheSpreadcomponent.

2. OnyourWindowsFormspage,drawaSpreadcomponentbydraggingarectanglethesizethatyouwouldliketheinitialcomponentorsimplydoubleclickonthepage.TheSpreadcomponentappears.

Spread Windows Forms Developer’s Guide 31

Copyright © GrapeCity, inc. All rights reserved.

Page 33: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Yourprojectshouldnowlooksimilartothepictureshownhere.

YouhaveaddedtheSpreadcomponenttotheproject.

Understanding Parts of the Component

TheSpreadcomponentismadeupofthespreadsheetthatdisplaysthedataalongwithscrollbarsand,ifmultiplesheets,sheettabsinatabstrip.ThefigurebelowshowsthemajorpartsoftheSpreadcomponent.Severalofthesecanbehidden,butthisshowsthedefaultdisplay.

Formoreinformationon... Referto...sheetcorner CustomizingtheSheetCornerAppearance

sheettabs CustomizingtheSheetNameTabsoftheComponent

scrollbars CustomizingtheScrollBarsoftheComponent

rowandcolumnheaders CustomizingtheAppearanceofHeaders

focusindicator(ofactivecell) CustomizingtheFocusIndicatorforaCell

selections CustomizingUserSelectionofData

activesheet WorkingwiththeActiveSheet

Using Smart Tags Drop-Down

Youcanperformanyofseveraltasks,launchvariouseditors,andsetvariouspropertiesfromthesmarttagsdrop-downavailablefromtheSpreadcomponentonaForminVisualStudio.NET.Thesmarttagisthearrowiconatthetop,rightedgeofthecontrol.TheSpreadtasksavailableinthesmarttagsaresummarizedbelow.

Spread Windows Forms Developer’s Guide 32

Copyright © GrapeCity, inc. All rights reserved.

Page 34: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Task ExplanationorReferenceChooseDataSource RefertoManagingDataBinding.

EditSheets RefertoCustomizingtheIndividualSheetAppearanceandCustomizingSheetInteraction.

EditCells RefertoCustomizingtheAppearanceofaCellandCustomizingInteractioninCells.

ComponentName ThisisthenameoftheSpreadcomponent.

OperationMode RefertoSpecifyingWhattheUserCanSelect.

UserOptionsEditModePermanent

RefertoAllowingtheUsertoMoveRowsorColumns,AllowingtheUsertoZoomtheDisplayoftheComponent,FillingCellswithDragandDrop,

Spread Windows Forms Developer’s Guide 33

Copyright © GrapeCity, inc. All rights reserved.

Page 35: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

EditModeReplaceAllowColumnMoveAllowRowMoveAllowUserZoomAllowDragDropAllowDragFillAllowUserFormulas

FillingCellswithDragandFill,AllowingtheUsertoEnterFormulas,andUnderstandingEditModeinaCell.

AutoClipboard Thisallowstheshortcutkeystowork.

ClipboardOptions Thisdetermineswhatcanbecopiedandpasted.

VisualStyles Whethertoallowthevisualstyles.

EditSheetSkins Thiscanbeusedtoeditsheetskins.

EditNamedStyles Thiscanbeusedtoeditnamedstyles.

SpreadDesigner Thiscanbeusedtobringupthedesigner.

QuickStartWizard Thiscanbeusedtobringupthewizard.RefertoUnderstandingtheSpreadWizard.

AutoLaunchSpreadDesigner Thiscanbeuncheckedtopreventtheautolaunchofthedesigner.

DockinginParentContainer Thissetsthedockingtofill.

ProductVersion Versionoftheproduct.

Thesheettasksavailableinthesmarttagaresummarizedbelow.

Tasks DescriptionEditCells

ThisopenstheCellEditorandallowsyoutoeditvariouspropertiesoftheselectedcellorcellsofasheet.Formoreinformationonsettingcellproperties,refertoCustomizingtheAppearanceofaCell.

ResetSheet

Thisrestoresallthesettingsoftheselectedsheettotheirdefaultvalues.Formoreinformationonresettingproperties,refertoResettingPartsoftheInterface.

EditSkins

ThisopenstheSpreadSkinEditorandallowsyoutoeditvariouspropertiesoftheskinthatapplytothespreadsheet.Formoreinformationonmanagingskins,refertoCreatingaCustomSkinforaComponentandApplyingaSkintotheComponent.

EditCharts

ThisopenstheSpreadChartCollectionEditor.Formoreinformation,refertoSpreadChartCollectionEditor(on-linedocumentation).

Using Verbs in the Properties Window

YoucanlaunchvariouseditorsorresetvaluesfromtheverbsinthepropertywindowinVisualStudio.NETasaquickwayofhandlingsomesettings.Therearedifferentverbsavailabledependingontheitemselected.

Right-clickonthePropertieswindowandselectCommandstoseetheverbs.

Spread Windows Forms Developer’s Guide 34

Copyright © GrapeCity, inc. All rights reserved.

Page 36: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThefollowingimagedisplaysSpreadverbs.

ThefollowingtablesummarizestheSpreadcomponentverbs:

Verb DescriptionSpreadDesigner

ThisopenstheSpreadDesignerandallowsyoutoeditvariouspropertiesofmostofthespreadsheetanditspartsaswellastheoverallcomponent.FormoreinformationontheuseoftheSpreadDesigner,refertoSpreadDesignerGuide(on-linedocumentation).

ResetControl

ThisrestoresallthesettingsfortheSpreadcomponenttotheirdefaultvalues.Formoreinformationonresettingproperties,refertoResettingPartsoftheInterface.

EditSkins

ThisopenstheSpreadSkinEditorandallowsyoutoeditvariouspropertiesoftheskinthatapplytothespreadsheet.Formoreinformationonmanagingskins,refertoCreatingaCustomSkinfora

Spread Windows Forms Developer’s Guide 35

Copyright © GrapeCity, inc. All rights reserved.

Page 37: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ComponentandApplyingaSkintotheComponent.

Thefollowingimagedisplaysthesheetverbs.

Thefollowingtablesummarizesthesheetverbs:

Verbs DescriptionEditCells

ThisopenstheCellEditorandallowsyoutoeditvariouspropertiesoftheselectedcellorcellsofasheet.Formoreinformationonsettingcellproperties,refertoCustomizingtheAppearanceofaCell.

ResetSheet

Thisrestoresallthesettingsoftheselectedsheettotheirdefaultvalues.Formoreinformationonresettingproperties,refertoResettingPartsoftheInterface.

EditSkins

ThisopenstheSpreadSkinEditorandallowsyoutoeditvariouspropertiesoftheskinthatapplytothespreadsheet.Formoreinformationonmanagingskins,refertoCreatingaCustomSkinforaComponentandApplyingaSkintotheComponent.

EditCharts

ThisopenstheSpreadChartCollectionEditor.Formoreinformation,refertoSpreadChartCollectionEditor(on-linedocumentation).

Working with Collection Editors

SeveralpropertiesthatappearinthePropertieswindowareassociatedwithcollections.Toviewandmodifythesesettings,clickontheBrowsebutton(...)andaseparateCollectionEditorwindowappears.ThisisthecasefortheNamedStyles('NamedStylesProperty'intheon-linedocumentation)propertyandtheSheets('SheetsProperty'intheon-linedocumentation)propertyintheSpreadcomponent.

Spread Windows Forms Developer’s Guide 36

Copyright © GrapeCity, inc. All rights reserved.

Page 38: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Withthesecollectioneditors,youmustclickOKtoseetheresultsofachangetoasetting.(ThecollectioneditorsrelyonpartoftheMicrosoft.NETframeworkanddonothaveanApplybutton.)

Adding Support for High DPI Settings

SpreadsupportshighDPIsettingsprovidedthattheapplicationhashighDPIsupportenabled.

RefertoMicrosoft'swebsiteformoreinformationaboutenablingDPIsupportforyourapplication.

YoucanrefertothefollowingstepsforageneralexampleofhowtoenableDPIsupportin.NET4.5.2.

1. Addcodesuchasthefollowingtotheapplicationmanifest.

Code<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application></assembly>

2. UsetheWindowsAPIwiththefollowingcode.

Codestatic class Program{ /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { SetProcessDPIAware(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } [System.Runtime.InteropServices.DllImport("user32.dll")] public extern static IntPtr SetProcessDPIAware();}

Spread Windows Forms Developer’s Guide 37

Copyright © GrapeCity, inc. All rights reserved.

Page 39: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Note:TheSetProcessDPIAwareAPImustbecalledbeforeanywindowiscreated;otherwise,awindowcreatedbeforeusingthisAPIwillhavethewrongsizeandfont.

3. EnableWindowsFormsHighDPIsupportbyaddingcodetotheApp.config.

Code<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings></configuration>

Understanding the Spread Wizard

YoucanusetheSpreadWizardtoquicklyandeasilybinddata,setupthecolumnstructure,andcustomizetheappearanceofaspreadsheet.Seethefollowingtopicsformoreinformation:

StartingtheSpreadWizardUsingtheSpreadWizard

Starting the Spread Wizard

YoucanlaunchtheSpreadWizardfromtheSmartTagsontheFpSpreadcomponentontheforminVisualStudioasshowninthisfigure.Thesmarttagisthearrowiconatthetop,rightedgeofthecontrol.

Using the Spread Wizard

YoucanusetheSpreadWizardtobindtoadatasource,setcolumnproperties,settheoperationmode,specifytitles,selectaskin,andperformmanyothertasks.

Selectthemenuoptionofthefeatureyouwishtocustomize,locatedontheleftsideofthedialog.SelectthevariousoptionsforthatfeatureandthenclickNexttogotothenextstep.Whenyouarefinished,clickFinish.

Spread Windows Forms Developer’s Guide 38

Copyright © GrapeCity, inc. All rights reserved.

Page 40: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Getting More Practice

IfyouneedmoretipsaboutcustomizingSpreadandtakingadvantageofitsmanyfeatures,wehaveprovidedtheseadditionalsourcesofinformationtohelpyougetstarted.

FindingtheDocumentationGettingTechnicalSupport

Finding the Documentation

ThereareseveraldifferentwaystoaccomplishthesameresultwhencreatingaWindowsFormspagewithaSpreadcomponent.Inthisdocumentation,theproceduresoftendescribemorethanoneway,includingusingthePropertieswindowinVisualStudio.NET,writingcodeincludingusingshortcutobjects,andusingtheSpreadDesigner.TheSpreadDesignersetspropertiesandcallsmethodsfortheSpreadcomponent,includingpropertiesnotavailableatdesigntimethroughVisualStudio.NET,withoutproducinganyeditablecode.

Eachofthesehasitsadvantagesanddisadvantages.Usingshortcutobjectsistheshortest,quickestwayofaddingcodeusingdotnotationandsettingapropertyofashortcutobject.Usingcodewithoutusingshortcutobjectsgenerallymeansdeclaringobjectsandsettingpropertiesforthem.

Spread Windows Forms Developer’s Guide 39

Copyright © GrapeCity, inc. All rights reserved.

Page 41: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DocumentationProvided

TheSpreadWindowsFormsdocumentationprovidesintroductoryinformationabouttheproduct,conceptualinformation,how-totopics,andadetailedassemblyandformulafunctionreferenceinahelpfileandinPDFfiles.AdditionalinformationisprovidedintheReadmefile.

AccessingtheHelp

YoucanaccessthehelpthroughF1supportprovidedinVisualStudioNET.WhiletheSpreadcomponentoroneofitsmembershasfocus,pressF1todisplaytheSpreadWindowsFormshelp.

Youcanalsoaccessthehelpfileinastand-alonewindowbychoosingPrograms‑>GrapeCity‑>...->ProductNameandthenselectingthehelp.

DocumentationConventions

TheformatofthehelpissimilartothehelpprovidedforVisualStudio.NET.Referencematerialformembersprovidesmultiplelanguagereferenceforthemember.Youcanchangewhichlanguage'ssyntaxisdisplayedbyclickingtheLanguagesbuttoninthetitleofthetopic.

ListofHow-To’s

HereisalistoftheHowTo’s:

AddingaNotetoaCellAddingaRoworColumnAddingaSheetAllowingtheUsertoEnterFormulasAllowingtheUsertoAutomaticallySortRowsAllowingtheUsertoPerformaStandardSearchApplyingaSkintoaSheetCreatingaCustomSkinforaSheetCreatingandUsingaCustomFunctionCreatingandUsingaCustomNameCreatingAlternatingRowsCustomizingtheOutlineoftheComponentCustomizingtheInputMapsCustomizingtheScrollBarsoftheComponentCustomizingSplitBoxesCustomizingtheDimensionsoftheComponentCustomizingtheNumberofRowsorColumnsCustomizingViewportsCustomizingtheSelectionAppearanceCustomizingtheSheetCornerAppearanceDisplayingGridLinesonaSheetCustomizingtheSheetNameTabsoftheComponentDisplayingTextTipsinaCellLockingaCellNestingFunctionsinaFormulaOpeningExistingFiles

Spread Windows Forms Developer’s Guide 40

Copyright © GrapeCity, inc. All rights reserved.

Page 42: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

OptimizingthePrintingUsingRulesUsingAutomaticSortingPlacingaFormulainCellsPlacingChildControlsonaSheetPrintinganEntireSheetPrintingParticularPagesPrintingaRangeofCellsonaSheetPrintinganEntireSheetProvidingaPreviewofthePrintingRemovingaRoworColumnRemovingaSheetSavingDatatoaFileSearchingforDatawithCodeSettingtheBackgroundColorsforaSheetSettingtheRowHeightorColumnWidthSortingRows,Columns,orRangesSpecifyingaCellReferenceinaFormulaSpecifyingWhattheUserCanSelectUsingaCircularReferenceinaFormulaUsingDragOperationstoFillCellsWorkingwithEditableCellTypesWorkingwithGraphicalCellTypesWorkingwithSelections

Getting Technical Support

Ifyouhaveatechnicalquestionaboutthisproduct,consultthefollowingsources:

Helpandotherdocumentationfilesinstalledwiththeproduct.Forinstructionsforaccessingthehelpandotherdocumentation,seeFindingtheDocumentation.Productforumathttp://sphelp.grapecity.com/forums/forum/spreadsheets/

Ifyoucannotfindtheanswerusingthesesources,pleasecontactTechnicalSupportusingoneofthesemethods:

Website: http://sphelp.grapecity.com/

E-mail: [email protected]

Fax: (412)681-4384

Phone (412)681-4738

TechnicalSupportisavailablebetweenthehoursof9:00a.m.and5:00p.m.Easterntime,MondaythroughFriday.

Tutorial: Creating a Checkbook Register

ThefollowingtutorialwalksyouthroughcreatingaprojectinVisualStudio.NETusingtheSpreadWindowsFormscomponent.Bycreatingacheckbookregister,youwilllearnhowtomodifytheappearanceofaspreadsheet,workwithcelltypes,andaddsomeformulasforperformingcalculations.

Inthistutorial,themajorstepsare:

AddingSpreadtotheCheckbookProject

Spread Windows Forms Developer’s Guide 41

Copyright © GrapeCity, inc. All rights reserved.

Page 43: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettingUptheRowsandColumnsoftheRegisterSettingtheCellTypesoftheRegisterAddingFormulastoCalculateBalances

Adding Spread to the Checkbook Project

UsethefollowingstepstoaddSpreadtotheproject.

1. StartanewVisualStudio.NETproject.

2. Nametheprojectcheckbook.Nametheformintheprojectregister.

3. AddtheFpSpreadcomponenttoyourproject,andthenplacethecontrolontheform.

IfyoudonotknowhowtoaddtheFpSpreadcomponenttotheproject,completethestepsinAddingaComponenttoaProject.

GotoSettingUptheRowsandColumnsoftheRegistertocontinuethetutorial.

Setting Up the Rows and Columns of the Register

TheSpreadcontrolonyourformalreadyhasasheet,readyforyoutoconfigure.Inthisstep,youaregoingtosetupthecolumnsandcellsinthesheettoresembleacheckbookregister.

UsingCode

1. Double-clickontheforminyourprojecttoopenthecodewindow.2. IntheFormLoadevent,typethefollowingcode:

Thiscodesetsupthecontroltobe300pixelshighand763pixelswide,andthesheettohave8columnsand100rows.

Example

C#// Set up control and rows and columns in sheet.fpSpread1.Height = 330;fpSpread1.Width = 765;fpSpread1.Sheets[0].ColumnCount = 8;fpSpread1.Sheets[0].RowCount = 100;

VB' Set up control and rows and columns in sheet.FpSpread1.Height = 330FpSpread1.Width = 765FpSpread1.Sheets(0).ColumnCount = 8FpSpread1.Sheets(0).RowCount = 100

3. Nextsetupthecolumnstoaddcustomheadings.AddthefollowingcodebelowthecodeyouaddedinStep2:

Example

C#// Add text to column heading.

Spread Windows Forms Developer’s Guide 42

Copyright © GrapeCity, inc. All rights reserved.

Page 44: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "Check #";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "Date";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "Description";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "Tax?";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "Cleared?";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 5].Text = "Debit";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 6].Text = "Credit";fpSpread1.Sheets[0].ColumnHeader.Cells[0, 7].Text = "Balance";

VB' Add text to column heading.FpSpread1.Sheets(0).ColumnHeader.Cells(0, 0).Text = "Check #"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 1).Text = "Date"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 2).Text = "Description"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 3).Text = "Tax?"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 4).Text = "Cleared?"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 5).Text = "Debit"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 6).Text = "Credit"FpSpread1.Sheets(0).ColumnHeader.Cells(0, 7).Text = "Balance"

4. Nowsetupthecolumnwidthstoproperlydisplaytheheadingsandthedatayouwilladd.AddthefollowingcodebelowthecodeyouaddedinStep3:

Example

C#// Set column widths.fpSpread1.Sheets[0].Columns[0].Width = 50;fpSpread1.Sheets[0].Columns[1].Width = 50;fpSpread1.Sheets[0].Columns[2].Width = 175;fpSpread1.Sheets[0].Columns[3].Width = 40;fpSpread1.Sheets[0].Columns[4].Width = 65;fpSpread1.Sheets[0].Columns[5].Width = 100;fpSpread1.Sheets[0].Columns[6].Width = 100;fpSpread1.Sheets[0].Columns[7].Width = 125;

VB' Set column widths.FpSpread1.Sheets(0).Columns(0).Width = 50FpSpread1.Sheets(0).Columns(1).Width = 50FpSpread1.Sheets(0).Columns(2).Width = 175FpSpread1.Sheets(0).Columns(3).Width = 40FpSpread1.Sheets(0).Columns(4).Width = 65FpSpread1.Sheets(0).Columns(5).Width = 100FpSpread1.Sheets(0).Columns(6).Width = 100FpSpread1.Sheets(0).Columns(7).Width = 125

5. Saveyourproject,thenclicktheStartbuttoninthetoolbartorunyourproject.6. Yourformshouldlooksimilartothefollowingpicture.

Spread Windows Forms Developer’s Guide 43

Copyright © GrapeCity, inc. All rights reserved.

Page 45: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

GotoSettingtheCellTypesoftheRegistertocontinuethetutorial.

Setting the Cell Types of the Register

Tosetcelltypes,foreachcustomcelltype,youhavetocreateacelltypeobject,setthepropertiesforit,andthenassignthatobjecttotheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacellorrangeofcells.

1. SetthecelltypefortheCheck#columnbyaddingthefollowingcodebelowthecodeyouhavealreadyadded:

Example

C#// Create Check # column of number cells.FarPoint.Win.Spread.CellType.NumberCellType objNumCell = new FarPoint.Win.Spread.CellType.NumberCellType();objNumCell.DecimalPlaces = 0;objNumCell.MinimumValue = 1;objNumCell.MaximumValue = 9999;objNumCell.ShowSeparator = false;fpSpread1.Sheets[0].Columns[0].CellType = objNumCell;

VB' Create Check # column of number cells.Dim objNumCell As New FarPoint.Win.Spread.CellType.NumberCellType()objNumCell.DecimalPlaces = 0objNumCell.MinimumValue = 1objNumCell.MaximumValue = 9999objNumCell.ShowSeparator = FalseFpSpread1.Sheets(0).Columns(0).CellType = objNumCell

2. SetthecelltypefortheDatecolumnbyaddingthefollowingcodebelowthecodeyouhavealreadyadded:

Example

Spread Windows Forms Developer’s Guide 44

Copyright © GrapeCity, inc. All rights reserved.

Page 46: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#// Create Date column of date-time cells.FarPoint.Win.Spread.CellType.DateTimeCellType objDateCell = new FarPoint.Win.Spread.CellType.DateTimeCellType();objDateCell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDate;fpSpread1.Sheets[0].Columns[1].CellType = objDateCell;

VB' Create Date column of date-time cells.Dim objDateCell As New FarPoint.Win.Spread.CellType.DateTimeCellType()objDateCell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateFpSpread1.Sheets(0).Columns(1).CellType = objDateCell

3. SetthecelltypefortheDescriptioncolumnbyaddingthefollowingcodebelowthecodeyouhavealreadyadded:

Example

C#// Create Description column of text cells.FarPoint.Win.Spread.CellType.TextCellType objTextCell = new FarPoint.Win.Spread.CellType.TextCellType();objTextCell.MaxLength = 100;fpSpread1.Sheets[0].Columns[2].CellType = objTextCell;

VB' Create Description column of text cells.Dim objTextCell As New FarPoint.Win.Spread.CellType.TextCellType()objTextCell.MaxLength = 100FpSpread1.Sheets(0).Columns(2).CellType = objTextCell

4. SetthecelltypefortheTax?andCleared?columnsbyaddingthefollowingcodebelowthecodeyouhavealreadyadded:

Example

C#/// Create Tax? and Cleared? columns of check box cells.FarPoint.Win.Spread.CellType.CheckBoxCellType objCheckCell = new FarPoint.Win.Spread.CellType.CheckBoxCellType();objCheckCell.ThreeState = false;fpSpread1.Sheets[0].Columns[3].CellType = objCheckCell;fpSpread1.Sheets[0].Columns[4].CellType = objCheckCell;

VB' Create Tax? and Cleared? columns of check box cells.Dim objCheckCell As New FarPoint.Win.Spread.CellType.CheckBoxCellType()objCheckCell.ThreeState = FalseFpSpread1.Sheets(0).Columns(3).CellType = objCheckCellFpSpread1.Sheets(0).Columns(4).CellType = objCheckCell

Spread Windows Forms Developer’s Guide 45

Copyright © GrapeCity, inc. All rights reserved.

Page 47: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. SetthecelltypefortheDebit,Credit,andBalancecolumnsbyaddingthefollowingcodebelowthecodeyouhavealreadyadded:

Example

C#// Create the Debit, Credit, and Balance columns of currency cells.FarPoint.Win.Spread.CellType.CurrencyCellType objCurrCell = new FarPoint.Win.Spread.CellType.CurrencyCellType();objCurrCell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.Yes;objCurrCell.NegativeRed = true;objCurrCell.FixedPoint = true;fpSpread1.Sheets[0].Columns[5].CellType = objCurrCell;fpSpread1.Sheets[0].Columns[6].CellType = objCurrCell;fpSpread1.Sheets[0].Columns[7].CellType = objCurrCell;

VB' Create the Debit, Credit, and Balance columns of currency cells.Dim objCurrCell As New FarPoint.Win.Spread.CellType.CurrencyCellType()objCurrCell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.YesobjCurrCell.NegativeRed = TrueobjCurrCell.FixedPoint = TrueFpSpread1.Sheets(0).Columns(5).CellType = objCurrCellFpSpread1.Sheets(0).Columns(6).CellType = objCurrCellFpSpread1.Sheets(0).Columns(7).CellType = objCurrCell

6. Saveyourproject,thenclicktheStartbuttoninthetoolbartorunyourproject.7. Yourformshouldlooksimilartothefollowingpicture.

GotoAddingFormulastoCalculateBalancestocontinuethetutorial.

Adding Formulas to Calculate Balances

Spread Windows Forms Developer’s Guide 46

Copyright © GrapeCity, inc. All rights reserved.

Page 48: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Yourcheckbookregisterisnowsetuptolooklikeacheckbookregister;however,itdoesnotbalancethecurrencyfiguresyouenterintheregister.Thisstepsetsuptheformulaforbalancingthefigures.

1. ProvidethefollowingcodeintheFormLoadeventafterthecodeyouhavealreadyadded:

Example

C#// Set formula for calculating balance.fpSpread1.Sheets[0].ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1;int i;for (i = 0; i <= fpSpread1.ActiveSheet.RowCount - 1; i++){if (i == 0)fpSpread1.Sheets[0].Cells[i, 7].Formula = "RC[-1] - RC[-2]" ;elsefpSpread1.Sheets[0].Cells[i, 7].Formula = "RC[-1] - RC[-2] + R[-1]C";}

VB' Set formula for calculating balance.FpSpread1.Sheets(0).ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.R1C1Dim i As IntegerFor i = 0 To FpSpread1.ActiveSheet.RowCount - 1If i = 0 ThenFpSpread1.Sheets(0).Cells(i, 7).Formula = "RC[-1] - RC[-2]"ElseFpSpread1.Sheets(0).Cells(i, 7).Formula = "RC[-1]-RC[-2]+R[-1]C"End IfNext

2. Saveyourproject,thenclicktheStartbuttoninthetoolbartorunyourproject.3. Yourformshouldlooksimilartothefollowingpicture.Typedataintoyourcheckbookregistertotestitandseehowit

operates.

4. YouhavecreatedacheckbookregisterusingSpread.Youhavecompletedthistutorial.

ReviewthelistofstepsforTutorial:CreatingaCheckbookRegister.

Spread Windows Forms Developer’s Guide 47

Copyright © GrapeCity, inc. All rights reserved.

Page 49: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Understanding the Product

SpreadWindowsFormsprovidesacustomizable,extendable,andobject-orientedspreadsheetcomponentforuseintheMicrosoftNETframework.SpreadWindowsFormsalsoprovidesExcelsupportandcustomizationdowntothecelllevel,withacapableuser-interfacedesignandback-endcalculationefficiency.Thefollowingsectionsexplainsomeoftheunderlyingconceptsforthisuniqueandpowerfulproduct.

ProductOverviewFeatureOverviewNamespacesOverviewConceptsOverview

Product Overview

SpreadWindowsFormsisacomprehensivespreadsheetcomponentforWindowsFormsapplicationsthatcombinesgridcapabilities,spreadsheetfunctionality,andincludestheabilitytobindtodatasources.AsingleSpreadcomponentsupportsmanysheets,rows,andcolumns.Cross-sheetreferencingallowscalculationstomakeuseofdataandformulasonavarietyofsheets.SpreadWindowsFormsusesdotnotationforobject-orientedcodingin.NET.

TheSpreadcomponentmaybedroppedonaWindowsFormandcustomizedforarangeofapplications.Youcancustomizetheappearanceandtheuserinteractioninavarietyofways.Withabuilt-inDesigner,youcanquicklycreateaprototypeorcustomizeyourfinisheddesign.WithmostoftheSpread’sappearanceandfunctionalitybasedonunderlyingmodels,theadvanceddeveloperhascompletecontroloverthecomponent.FordetailsontheSpreadDesigner,refertoSpreadDesignerGuide(on-linedocumentation).

Importandexportcapabilitiesprovideanothersourceofflexibilitywhendevelopingandexchangingdesigns.SpreadWindowsFormscanhandledatafromcomma-delimitedtextfilesaswellasmultiplespreadsheetsfromMicrosoftExcelfiles.ThecontentsofasheetmaybesavedasaBIFF8ortextfilecompatiblewithMicrosoftExcelorasaSpreadXMLfile.Formoreinformationonexportingto(andimportingfrom)afile,refertotheImportandExportReference(on-linedocumentation).

ThefollowingfigureprovidesaconceptualoverviewofSpreadWindowsForms.

Spread Windows Forms Developer’s Guide 48

Copyright © GrapeCity, inc. All rights reserved.

Page 50: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

InSpread,youcanusethedefaultmodelsorextendthemthroughinheritance.Formoreinformationonmodels,refertoUnderlyingModels.

Stylesforcellsandskinsforsheetsprovidewaystosavecustomizedappearancesthatcanbeappliedtoothergroupsofcellsoranentiresheet.Formoreinformationonstylesforcells,refertoCreatingandApplyingaStyleforCells.Formoreinformationonskinsforsheets,refertoCreatingaCustomSkinforaSheet.

Formoreinformationaboutshapes,refertoCustomizingDrawing.

Formoreinformationontheformulasandfunctionsthatcanbeenteredinacell,refertotheManagingFormulasinCells.

Formoreinformationonthepartsoftheinterface,refertoUnderstandingPartsoftheComponent.

Foralistofmanyofthefeatures,seeFeatureOverview.

Feature Overview

SpreadWindowsFormsintroducessomepowerfulfeatures,asdescribedinthefollowingtopics.Eachtopicreferstoothertopicsinthedocumentationthatprovidemoreinformation.

CameraShapesCellTypesforCellFunctionality

Spread Windows Forms Developer’s Guide 49

Copyright © GrapeCity, inc. All rights reserved.

Page 51: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ChartControlsonaSheetChildControlsonaSheetColumnFootersandGroupFootersConditionalFormattingDataBindingExcelSupportwithImportandExportCapabilitiesFilteringDataonaSheetFormulaTextBox(FormulaBar)FormulaProviderControlFunctionsandFormulasGradientsforButtonCells,Headers,andMoreGroupingRowsintheDisplayGroupingRowsorColumnsinanOutlineHeaderswithMultipleColumnsandRowsHierarchicalDisplayHitTestforLocatingtheCursorIndicatorsandIconsintheInterfaceInkNotationSupportKeyboardActionMappingMultipleSheetsNameBoxControlNotesforCellsPanesorViewportsPrintingandPDFQuickStartWizardRight-To-LeftLayoutsRowPreviewSearchingandSearchDialogShapes,Drawings,andAnnotations(FreehandDrawing)SkinsandStylesforCustomizedAppearanceSortingRowsorColumnsSpannableCellsSparklinesSpreadDesignerStatusBar(on-linedocumentation)TablesTabStripandSheetNameTabsTextRenderingwithGDITitleandSubTitleTouchSupportUndoandRedoActionsVisualStylesforXPThemes

Camera Shapes

Youcanaddcamerashapestothesheet.Camerashapesarecreatedbytakingasnapshotofthecontentinarangeofcells.Changesinthecellrangewillupdatethecontentofthecamerashape.

Spread Windows Forms Developer’s Guide 50

Copyright © GrapeCity, inc. All rights reserved.

Page 52: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformation,refertoCreatingCameraShapes.

Cell Types for Cell Functionality

Youcanusethefeature-richsetofcelltypesorextendthefunctionalitybydefiningyourown.Useanyofthemorethan20pre-definedcelltypesorcreateyourowntodeterminewhatkindofdatacanbeenteredintoacell,avoidingunnecessarychecksandvalidationsbythedeveloper,andprovidinganaturalwayforyourusertoenterdata.

Youcansetbarcodecelltypesfordisplayingbarcodes,fractionsincellsusingthepropertiesaddedtothenumbercelltype,andallowyouruserstoselectacolorfromacolorpickercell.

GcDateTime,GcNumber,andGcTextBoxcellsarenowavailableinadditiontothestandardSpreaddate-time,number,andtextcells.

Formoreinformationaboutcelltypes,refertoCustomizingInteractionwithCellTypes.

Chart Controls on a Sheet

Youcanaddchartcontrolstoasheet.Therearemanydifferenttypesandviewsofchartsthatyoucancreate.YoucanusetheChartDesigner,SpreadDesigner,orcodetoaddachartcontrol.

Formoreinformation,refertoUsingtheChartControl.

Child Controls on a Sheet

Youcanhostchildcontrolsonasheettoprovidemoreinteractionwiththeuser.

Formoreinformation,refertoPlacingChildControlsonaSheet.

Column Footers and Group Footers

Youcanaddcolumnandgroupfooterstothesheet.Youcanputinformationinthefootersuchasformulasortext.

Formoreinformation,refertoDisplayingaFooterforColumnsorGroups.

Conditional Formatting

Youcansetupconditionalformatswithincellsthatdeterminetheformattingofthecellbasedontheoutcomeofaconditionaloperation.Youcanuserulesorcomparisonoperatorsintheconditionalformat.

Formoreinformation,refertoUsingConditionalFormattingofCells.

Data Binding

WithSpreadWindowsForms,youhavemanydatabindingoptions.

Youcanbindthespreadsheettoadatasettodisplayandallowyouruserstoeditinformation.Spreadcanautomaticallyupdatethedatasetwiththechanges.

Youcanalsoallowpartofyourspreadsheettobeunbound.Youcanalsobindtoarangeofcells.

Formoreinformation,refertoManagingDataBinding.

Excel Support with Import and Export Capabilities

Spread Windows Forms Developer’s Guide 51

Copyright © GrapeCity, inc. All rights reserved.

Page 53: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanimportdatafromandexportdata(andformatting)toMicrosoftExcel,bothinindividualspreadsheetsandentireworkbooks.Youcanimportandexportentirespreadsheet(s)withdataandformattingtoandfromXML.SeveralversionsofExcelaresupportedandseveralfiletypes,includingXLS,XLSX,CSV,andTXT.

Formoredetailsaboutwhathappensduringimportingorexporting,refertotheImportandExportReference(on-linedocumentation).

Formoreinformationaboutsavingandloadingfiles,refertoSavingDatatoaFileandOpeningExistingFiles.

Filtering Data on a Sheet

Youcancustomizetheuserexperienceforfilteringdataonasheet.Withrowfiltering,youcanallowtheusertofilterthedataincolumnsonasheetanddisplayonlytherowsofdatawhichmeetcriteriafromadrop-downlistorchangetheappearanceofrowsbasedonthatfiltering.

Formoreinformation,refertoManagingFilteringofRowsofUserData.

Formula Text Box (Formula Bar)

Youcanaddaformulatextboxforeditingformulas.Theformulatextboxissimilartotheformulaeditoravailabletothedeveloperandhastheappearanceofatextbox.Theformulabarprovidesalistofcalculationfunctionsandprovidesavisualmethodofselectingcellrangesfortheformula.

Formoreinformation,refertoUsingtheAdditionalSpreadControls.

Formula Provider Control

Youcanaddaformulaprovidercontroltotheformthatwillprovideformulasforothercontrolsontheform.

Formoreinformation,refertoUsingtheAdditionalSpreadControls.

Functions and Formulas

Youcanusebuilt-infunctionsandoperatorstodevelopformulasandperformcalculations.Addcalculationsquicklytoyourapplicationsbyusinganyofover300pre-definedfunctionsoraddyourowncustomfunctions.Choosefromanyofthesetypesoffunctions:

DatabaseDateandTimeEngineeringFinancialInformationLogicLookupandReferenceMathandTrigonometryStatisticsTextVolatile

Spreadalsooffersafloatingformulabarthatyoucanprovidetoyourenduserstoallowthemtopickfunctions.

Youcanalsocreatecustomformulasorcustomnamestouseinformulas.RefertoCreatingandUsingaCustomFunctionandCreatingandUsingaCustomNameformoreinformation.

Spread Windows Forms Developer’s Guide 52

Copyright © GrapeCity, inc. All rights reserved.

Page 54: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FormoreinformationonenteringformulasusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Formoreinformationonformulasingeneral,refertoManagingFormulasinCellsandtotheFormulaReference.

Gradients for Button Cells, Headers, and More

Youcansetgradientsforbuttoncellsandheaders.

Formoreinformationsee,AddingaGradienttoHeaderCells.

Formoreinformationsee,SettingaButtonCell.

Grouping Rows in the Display

Youcansetupthespreadsheettogiveuserstheabilitytogrouprowsofdatabasedonaparticularcolumnnamebydraggingthecolumnheadertothegroupingbar.Thisisusefulfordisplayinglargeamountsofdatainorganizedgroupsandorganizingrowsbasedonthecategoryofacolumn.ThisissometimesreferredtoasOutlook-stylegrouping.

Formoreinformationaboutoutlinessee,ManagingGroupingofRowsofUserData.

Grouping Rows or Columns in an Outline

Youcansetupthespreadsheettogiveuserstheabilitytoformarangeofexpandableandcollapsiblerowsorcolumns.Thisisusefulforhandlingrowsorcolumnsofdatathatdonotneedtobevisibleallthetimebutarerelatedtoadjacentrowsorcolumns.ThisissometimesreferredtoasrangegroupingorExcel-likegroupingoroutlines.

Formoreinformationaboutgroupingsee,ManagingOutlines(RangeGroups)ofRowsandColumns.

Headers with Multiple Columns and Rows

Youcanhavemultiplecolumnheadersandrowheaders.Youcanalsospanheadercells.Useheaderswithmultiplecolumnsorrowstoorganizeyourcolumnandrowinformation.

Formoreinformationaboutheaders,refertoCreatingaHeaderwithMultipleRowsorColumns.

Hierarchical Display

Youcancreateasheetwithinarowtodisplayrelationaldatahierarchically,withparentrowsandchildviewsofrelateddata.

Formoreinformationabouthierarchicaldisplayofdata,refertoWorkingwithHierarchicalDataDisplay.

HitTest for Locating the Cursor

YoucanusetheHitTestmethodforfindingthelocationofthecursor(pointer)onthespreadsheetcomponenttohelpwithdevelopmentofapplicationswhereaccessibilityissuesareconcerned.

FormoreinformationabouttheHitTestmethodofthespreadsheetcomponent,refertoLocatingthePointerUsingHitTest.

Indicators and Icons in the Interface

Spread Windows Forms Developer’s Guide 53

Copyright © GrapeCity, inc. All rights reserved.

Page 55: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcancreatecustomrowfilteringindicatorsandcustomsortingindicatorstodisplayinthecolumnheader.Youcanalsocreatecustomimagesforthehierarchydisplayiconsforexpandingandcollapsingthehierarchy.

Youcanalsomakeamarquee(animated)focusindicatoraswellasotherenhancedfocusindicators.

Formoreinformation,refertoCustomizingtheUserInterfaceImages.

Ink Notation Support

YoucanusetheinknotationforwritingordrawingonSpreadwithyourTabletPC.Withasimplemethod,youcanturnonsupportforthisinkingfeature.

FormoredetailsaboutinknotationandsupportfortheTabletPC,refertoAllowingtheUsertoDrawwithaTabletPC.

Keyboard Action Mapping

SpreadWindowsFormsprovidesmultiplewaystocustomizenavigationwithinthecomponent,includingkeyboardnavigationandactionkeys.Withinputmapsandactionmaps,youcandetermineactionsintheSpreadcomponentthatoccurwhentheuserpresseskeys.Adefaultmappingofkeysandrelatedactionsisprovided;however,youcancustomizethesemapsthatdefinethemappingofkeystoactions.Forexample,youcanmaptheEnterkeysothatthecomponentmovesthefocustothecellbelowthecurrentcell.

YoucanloadanExcelcompatibilityinputactionmaporothermapfile.Youcanalsosaveaninputactionmaptoafile.

Formoreinformationaboutnavigationkeys,inputmaps,andactionmaps,refertothedescriptionsinManagingKeyboardInteraction.

Multiple Sheets

SpreadWindowsFormssupportsmultiplesheetsinasinglecomponenteachuniquelynamed.Usemultiplesheetstocategorizeyourinformation,similartousingworksheetsinMicrosoftExcel.

Sheetscanhavemanyrowsandcolumnsaswell.Youcandefinestylesforsheetsandapplythosestylesacrossmultiplesheets.

Formoreinformationaboutsheets,refertoCustomizingtheSheetAppearanceandCustomizingSheetInteraction.

Name Box Control

Thenameboxcontrolcanbeusedtocreateordisplaycustomnamesatruntime.

Formoreinformation,refertoSettinguptheNameBox.

Notes for Cells

SpreadWindowsFormsallowscellstohavenotesattachedtoprovideadditionalinformationtousers.Thecellnotehasthefollowingfunctionality:

automaticallysizescellnotesbasedoncontentsprintscellnotesprovidescustomizablelocationsforthecellnotesletsyoucustomizethenoteindicatorcolorprovidesstickynotesthatstaywheretheyareplaced

Spread Windows Forms Developer’s Guide 54

Copyright © GrapeCity, inc. All rights reserved.

Page 56: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformation,refertoAddingaNotetoaCell.

Panes or Viewports

Youcanallowmorethanonepaneorviewportinthespreadsheettoallowyoutoviewdatafromdifferentpartsofthespreadsheetinonedisplay.Displaydatainmultipleviewportsandallowyourusertocustomizetheirownviewportviewbyprovidingsplitboxesalongwithscrollbars.

Formoreinformationaboutscrollableviewportsandsplitbars,refertoCustomizingViewports.

Printing and PDF

Youcancustomizetheprintingofyourspreadsheetswithmanydifferentprintingoptions.Forexample,youcanhavecolorsandimagesinheadersandfooters.Formoreinformation,seeCustomizingtheAppearanceofthePrinting.

Youcanprintpartsofthesheetasneeded.YoucanalsoprintafiletoaPortableDocumentFormat(PDF)file.Formoreinformation,seeSpecifyingWhattoPrint.

TherearemanyeventsrelatedtoprintingincludingthePrintPreviewShowing('PrintPreviewShowingEvent'intheon-linedocumentation)event.Formoreinformation,refertoProvidingaPreviewofthePrinting.YoucanalsosetyourownPrintPreviewDialogwiththeSetPrintPreview('SetPrintPreviewMethod'intheon-linedocumentation)method.

Quick Start Wizard

Youcanusethewizardtoquicklysetupdatabindingandotherareasofthecontrol.

Formoreinformation,refertoUnderstandingtheSpreadWizard.

Right-To-Left Layouts

Youcanhandlesupportforright-to-leftlayoutsintheSpreadcomponent.

Formoreinformation,refertoHandlingRight-to-LeftLayouts.

Row Preview

Youcanaddapreviewrowthatcontainsextrainformationaboutarow.Thepreviewrowisdisplayedbelowtherowitprovidesinformationfor.Youcanspecifycolorsandotherformattingforthepreviewrowaswell.

Formoreinformation,refertoSettingupPreviewRows.

Searching and Search Dialog

Youcanperformsearchesincodeorprovideasearchdialogwithvariousoptionstoyouruser.

Formoreinformation,refertoCustomizingUserSearchingofData.

Shapes, Drawings, and Annotations (Freehand Drawing)

Youcandrawshapesandcustomizedrawingobjectsontopofasheettohighlightpartsofthesheetorpointtheuserthroughtheuseofaform.

Spread Windows Forms Developer’s Guide 55

Copyright © GrapeCity, inc. All rights reserved.

Page 57: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanallowtheusertodrawinfreehandonthesheetwithannotations.Thedrawingisdoneonthesamelayerasshapes.Thisabilityiscalledannotationmode.

Formoreinformationaboutshapes,refertotheDesigningShapes(on-linedocumentation)andCustomizingDrawing.

Sorting Rows or Columns

Youcanprogrammaticallysortrowsorcolumnsorarangeofcells.Youcanspecifytheorderofsortingandthecomparisonmethodforsorting.Youcanallowyouruserstosortrowsautomaticallysimplybyclickingonthecolumnheader.Usemethodsatthesheetleveltoperformthesekindsofsorting:

automaticallysortingbycolumnmanuallysortingcolumnsorrowssortingdatainarangeofcells

Formoreinformationaboutsorting,refertoManagingSortingofRowsofUserData.

Spannable Cells

Youcanspancells.Createcellspanstojoincellstogether,allowingonecelltospanacrossmultiplecellstoinclude,forexample,yourcompanylogo.Youcanspandatacellsorheaders.YoucanalsohaveSpreadautomaticallymergecellsthatarethesamevalue.

Formoreinformationaboutspanningcells,refertoCreatingaSpanofCells.Formoreinformation,refertoAllowingCellstoMergeAutomatically.

Sparklines

Youcanaddsparklinestoacell.Asparklineisasmallgraphthatfitsinsideacellandusesdatafromarangeofcells.

Formoreinformation,refertoUsingSparklines.

Spread Designer

YoucanusetheSpreadDesignertodesignyourcomponentandtocreateaprototypequickly.UsetheSpreadDesignertoreducedevelopmenttimebyallowingyoutocustomizethelookandfeeloftheSpreadcomponentatdesigntimeusinganintuitive,easy-to-useinterface.

YoucanalsoshowtheSpreadDesignerinyourapplicationatruntime.

Formoreinformation,refertotheSpreadDesignerGuide(on-linedocumentation).

Skins and Styles for Customized Appearance

EasilyandquicklyconfiguretheappearanceofSpreadusingpredefinedskinsorcreateandsaveyourowncustomskinsthatdefinemanyoftheappearancesettingsforasheet.Customskinscanbesharedwitheveryoneinyourdevelopmentteam,allowingaconsistentlookofthecomponentacrossapplications.Youcanalsocreatespecificstylesthatcontainmanyoftheappearancesettingsforindividualcells.Namedstyleshelpyouquicklycustomizetheappearanceofacellorrangeofcells.

Forinformationonmanagingskins(thatapplytostylesandrenderersofthecomponent),refertoApplyingaSkintotheComponentandCreatingaCustomSkinforaComponent.

Forinformationaboutskinsforsheets(usingtheolderwayofsettingstylesforindividualsheets),refertoApplyinga

Spread Windows Forms Developer’s Guide 56

Copyright © GrapeCity, inc. All rights reserved.

Page 58: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SkintoaSheetandCreatingaCustomSkinforaSheet.

Forinformationonsavingtheskintoafile,refertoSavingandLoadingaSkin.

Formoreinformationonstylesforindividualcells,refertoCreatingandApplyingaStyleforCells.

FormoreinformationonVisualStyles(andXPThemes),refertoUsingXPThemeswiththeComponent.

Tables

Youcanaddtablestothesheet.Youcanalsosortorfilterthetabledata.

Formoreinformation,refertoCreatingTables.

Tab Strip and Sheet Name Tabs

Youcancustomizethepaintingofvariouspartsoftheinterfaceincludingthesheetnametabsandthetabstripthatcontainsthem.

Formoreinformationaboutthetabstrip,refertoCustomizingtheSheetNameTabsoftheComponentandCustomizingPaintingofPartsoftheComponent.

Text Rendering with GDI

YoucanuseGDI(insteadofGDI+)fordrawingtextinVisualStudio2005byusingthespecialFarPoint.Win.TextRendererDLLandaddingittothereferencesinaproject.IfyouusethetextrendererfeatureinyourprojectfortextdrawingthatisGDI-basedratherthanGDI+-based,inversion2.0ofthe.NETFramework,thenyoumustdistributetheFarPoint.Win.TextRenderer.dllfile.OnlyuserswhoareusingVisualStudio2005canbenefitfromthisfile,asthatenvironmentisrequiredtotargetversion2.0ofthe.NETFramework.

TheFarPoint.Win.TextRenderer.dllisathinwrapperforthenewSystem.Windows.FormsTextRendererclassin.NET2.0.TheSpreadcomponenttriestolocatetheFarPoint.Win.TextRendererassemblyifitcanfindtheframeworkSystem.Windows.Forms.TextRendererclassintheSystem.Windows.Formsassembly(thatis,ifSpreadisrunningunder.NET2.0).Ifitcan,SpreadloadstheFarPointTextRendererandusesreflectiontomakedynamiccallsintoittodothetextdrawingwithSystem.Windows.Forms.TextRendererinsteadofSystem.Drawing.Graphics.DrawString.SpreadusesdynamiccallsthroughreflectionsothattheFarPointSpreadassemblyisnotdependentontheFarPoint.Win.TextRendererassembly;iftheFarPointassemblyisnotfound,oriftheSystem.Windows.Forms.TextRendererclassisnotfoundintheSystem.Windows.Formsassembly,thenSpreadusesGraphics.DrawStringtodrawtextasithasalwaysdone.FormoreinformationabouthowthenewTextRendererclassin.NET2.0differsfromthewaytheGraphicsobjectdrawstext,inparticularhowTextRendererusesGDIdrawingAPIsinWindowsinsteadofGDI+APIsinthe.NETframework,refertothe.NETframeworkdocumentationaboutusingTextRendererclass.

SpreadcanuseGDI+drawingwhileothertextdrawingintheapplicationusesGDIwiththenewTextRendererclass;SpreadcanusethenewTextRendererclassforGDIdrawingwhileothertextdrawingintheapplicationusesGDI+.Thedifferencesareverysmall(afewpixelsinthespacingandalignment)andnotverynoticeable.

ThisDLLmustbeinstalledtothedirectorywheretheapplication’sexecutablefileresides(thebinfolder)onsystemswhereGDIdrawingintheSpreadispreferred.ThefilemaybeinstalledtotheGACtoensurethatallSpreadcontrolsinallapplicationsthatuseversion2.0ofthe.NETFrameworkwillusetheTextRendererfortextdrawing.Thefilecanbeinstalledtothebinfolderonanapplication-by-applicationbasis,andtheFrameworkwillfinditthere.

FormoreinformationonGDI-basedtextdrawing,refertothewebsite,HowtoDrawTextwithGDI.

FormoreinformationintheMicrosoft.NETFrameworkdocumentation,refertoMicrosoft.NETTextRendererClass.

Title and SubTitle

Spread Windows Forms Developer’s Guide 57

Copyright © GrapeCity, inc. All rights reserved.

Page 59: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanaddaspeciallyformattedareaatthetopofthespreadsheetthatincludesatitleandsubtitle.

Formoreinformation,refertoAddingaTitleandSubtitletoaSheet.

Touch Support

Spreadsupportstouchgesturesinmanyareasofthecontrol.

Formoreinformation,refertoUsingTouchSupportwiththeComponent.

Undo and Redo Actions

Youcanallowtheendusertoundoandredovarioustypesofuseractions.Thisincludescellediting,copying,andpastingfromtheClipboard,andotheractions.

Formoreinformation,refertoCustomizingUndoandRedoActions.

Visual Styles for XP Themes

YoucanassignvisualstylestotheSpreadcomponenttoachievethelookandfeelofXPthemes.

Formoreinformation,refertoUsingXPThemeswiththeComponent.

Namespaces Overview

InSpreadWindowsForms,namespacesareorganizedtocontainobjectsaccordingtohowtheyareusedinthecomponentandthefeaturestheyprovide.TheobjectsintheSpreadWindowsFormscomponentfallintothreecategories:

objectsthatrepresentpartsofthespreadsheet,likecolumn,rows,andcellsobjectsthatrepresentcelltypesandtheformattingofdatainthosecellsobjectsthatareconceptualrepresentationsofunderlyingaspectsofthespreadsheet

Foreachofthesethereisaspecificnamespace.Thenamespacesareorganizedasfollows:

Namespace DescriptionFarPoint.Win.Spread('FarPoint.Win.SpreadNamespace'intheon-linedocumentation)

Providesthebaseclasses,interfaces,enumerations,anddelegatesforthepartsofthespreadsheetinSpread.

FarPoint.Win.Spread.CellType('FarPoint.Win.Spread.CellTypeNamespace'intheon-linedocumentation)

Providesthebaseclasses,interfaces,andenumerationsforthecelltypes.

FarPoint.Win.Spread.DrawingSpace('FarPoint.Win.Spread.DrawingSpaceNamespace'intheon-linedocumentation)

Providesthebaseclasses,interfaces,andenumerationsforthevariousshapesandobjectsthatcanbedrawninthedrawingspace.

FarPoint.Win.Spread.Model('FarPoint.Win.Spread.ModelNamespace'intheon-linedocumentation)

Providesthebaseclasses,interfaces,andenumerationsforthemodelsinSpread.

Thespreadsheetandcelltypeobjectscallthemodelobjects.IfyouarenewtoworkingwithSpread,orarenewtodevelopinginanobject-orientedenvironment,youmightwanttousethespreadsheetandcelltypeobjectsatfirst,asyoubecomefamiliarwithfeaturesofSpread.However,intensiveuseoftheseobjectscandegradeyourapplication’s

Spread Windows Forms Developer’s Guide 58

Copyright © GrapeCity, inc. All rights reserved.

Page 60: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

performance.

Ifyouareanexperiencedprogrammer,youmightwanttousethemodelobjectsdirectly,insteadofaccessingthemthroughtheshortcutobjects.IfyouwanttoextendSpreadWindowsForms,youmustusethemodelobjectstodoso.

ThespreadsheetobjectsandeventargumentsareinclassesinthemainFarPointSpreadnamespace.Foradiscussionofhowtoworkwiththeseobjects,refertoShortcutObjects.

Thecelltypeobjectsprovidewaysforyoutosetupdifferenttypesofcellstohelptheuserorlimitthetypesofinput.Theyareseparatedintotheirownnamespace,theCellTypenamespacemainlytoallowyoutoseeallthecelltypeinformationinoneplace,separatefromthespreadsheetobjects.Fordetailsonthedifferentcelltypes,refertoCustomizingInteractionwithCellTypes.

Theconceptualobjects,themoreabstractobjects,arereferredtoas"models."Thesemodelsareresponsibleformanagingthestyleinformation,formatting,anddatainthecomponent.ThesearefoundintheModelnamespace.InSpread,youcanusethedefaultmodelsorextendthemthroughinheritance.RefertoUnderlyingModelsformoreinformationonmodels.

Concepts Overview

UserswhoarenewtousingSpreadproductsmightwanttoreviewthefollowingtopicsregardingobjectorientation.

ShortcutObjectsObjectParentageFormattedversusUnformattedDataCellTypesUnderlyingModels

Shortcut Objects

ThespreadsheetobjectsintheFarPointSpreadnamespace,whichrepresentvariouspartsofthespreadsheet,canbeaccessedthroughabuilt-insetofshortcutobjects.Cells,rows,columnsandothersarewrapperstootherobjects,andmakecustomizationeasierbyallowingyoutomanipulatethem.Theshortcutobjectsrepresentpartsofavisiblespreadsheet,suchascolumns,rows,andcells;andthereareconceptualrepresentationsofunderlyingpiecesofthespreadsheetwhichareimplementedintheunderlyingmodels.TounderstandmoreabouttheobjectsinSpread,lookatthesimplifiedobjectmodeldiagramsfortheFpSpread('FpSpreadClass'intheon-linedocumentation)classandtheSheetView('SheetViewClass'intheon-linedocumentation)classasshownhere.

Spread Windows Forms Developer’s Guide 59

Copyright © GrapeCity, inc. All rights reserved.

Page 61: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Spread Windows Forms Developer’s Guide 60

Copyright © GrapeCity, inc. All rights reserved.

Page 62: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheSpreadWindowsFormscomponentprovidesthefollowingshortcutobjectsintheFpSpread('FpSpreadClass'intheon-linedocumentation)class:

Shortcut CorrespondingClasses

Spread Windows Forms Developer’s Guide 61

Copyright © GrapeCity, inc. All rights reserved.

Page 63: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Objectcell Cell('CellClass'intheon-line

documentation)Cells('CellsClass'intheon-linedocumentation)

column Column('ColumnClass'intheon-linedocumentation)

Columns('ColumnsClass'intheon-linedocumentation)

header ColumnHeader('ColumnHeaderClass'intheon-linedocumentation)

RowHeader('RowHeaderClass'intheon-linedocumentation)

row Row('RowClass'intheon-linedocumentation)

Rows('RowsClass'intheon-linedocumentation)

alternatingrow

AlternatingRow('AlternatingRowClass'intheon-linedocumentation)

AlternatingRows('AlternatingRowsClass'intheon-linedocumentation)

sheet SheetView('SheetViewClass'intheon-linedocumentation)

SheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)

Tousetheshortcutobjects,settheirpropertiesorcalltheirmethods.Manyoftheobjectsprovideindexesforspecifyingthesheet,row,column,orcellwithwhichyouwanttowork.

Usetheshortcutobjectsfortheireaseofuse.Theshortcutobjectsarefairlyself-documenting;however,inVisualStudio.NET,theIntellisensefeatureprovidesadditionalinformationthathelpyouusetheseobjects.

Object Parentage

FortheobjectsintheSpreadcomponent,suchasthesheet,column,andcell,thereareformattingandotherpropertiesthateachobjectinheritsfromwhatiscalledits"parent."Acellmayinheritsomeformatting,forexamplethebackgroundcolor,fromthesheet.Ifyousetthealignmentoftextforallthecellsinacolumn,thecellinheritsthataswell.Becauseofthisobjectparentage,manypropertiesandmethodscanbeappliedindifferentwaystodifferentpartsofaspreadsheet.

Ofcourse,youcanoverridetheformattingthatanindividualcellinherits.Butbydefault,objectsinheritpropertiesfromtheirparents.Soinagivencontext,thesettingsofanyobjectarethecompositeofthesettingsofitsparentsthatarebeingappliedtothatobject.Forexample,youmaysetthetextcolorforacellatthecelllevel,butitmayinherittheverticalalignmentfromtherowandtheborderfromitscolumn,andthebackgroundcolorfromthesheet.Sincethebackgroundcolormaybesetatseveraloftheselevels,certainrulesofprecedencemustapply.

Theclosertothecelllevel,thehighertheprecedence.Soifyousetthebackgroundcolorofthecell,thesettingsinheritedfromtheparentsareoverridden.Refertothelisttoseetheorderofprecedenceoftheseproperties.Theclosertothecell(thelowerthenumber)thehighertheprecedence.

1. Cell2. Row3. Column4. AlternatingRow5. Sheet6. Component

FormoreinformationonthesettingofpropertiesofanobjectandhowtousetheParentpropertyofanobject,refertoCustomizingtheAppearanceofaCellandCustomizingInteractioninCells.Forinformationoncelltypes,whichissetinadifferentwaythaninheritingfromaparent,refertoCustomizingInteractionwithCellTypes.

Formatted versus Unformatted Data

TheSpreadWindowsFormscomponentprovidesbothtext(formatteddata)andvalue(unformatteddata)propertiesforacell.Forexample,inacurrencycell,theformatteddatacouldbe$1,432.56,butthevaluewouldbe1432.56.TheText

Spread Windows Forms Developer’s Guide 62

Copyright © GrapeCity, inc. All rights reserved.

Page 64: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

propertyofthecellwouldreturntheentireformattedstringwithcurrencysymbolandthousandseparator.TheValuepropertyofthecellcouldbeusedinformulasorothercalculations.Everycellhasbothproperties.Dependingonthecelltype,thedatainacellmaybehandleddifferently.Forcelltypesthathavebuttonsorcheckboxes,thedistinctionisimportant.

Formoredetailedinformationonthedifferencebetweenformattedandunformatteddata,andasummaryoftheresultsforspecificcelltypes,refertoHandlingDataUsingSheetMethods.

Cell Types

Thereareseveraldifferenttypesofcellsthatcanbesetinasheettocustomizehowtheuserinteractswiththeinformationinthatcell.Youcanspecifythecelltypeforindividualcells,columns,rows,arangeofcells,oranentiresheet.Foreachcelltypetherearepropertiesofacellthatcanbeset.Ingeneral,workingwithcelltypesincludesdefiningthecelltype,settingtheproperties,andapplyingthatcelltypetocells.

Spread Windows Forms Developer’s Guide 63

Copyright © GrapeCity, inc. All rights reserved.

Page 65: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Ingeneralthecelltypesaregroupedintotwobroadcategories:editablecelltypes(suchastext,currency,andnumber)andgraphicalorcontrolcelltypes(suchasbutton,progress,andslider).Foralistofcelltypesanddetailsaboutusingthem,refertoCustomizingInteractionwithCellTypes.

HeaderCells

Whileyoucanassignacelltypetothecellsintherowheaderorcolumnheader,thecelltypeisonlyusedforpaintingpurposes.Itisrarethatyouwouldsetthecelltypesofheadercells.

Details

InSpread,acellhasbothaneditor,whichdetermineshowtheuserinteractswiththevalueinthecell,aformatter,whichdetermineshowthevalueisdisplayed,andarendererwhichdoesthepaintingofthecell.Theeditorisanactual

Spread Windows Forms Developer’s Guide 64

Copyright © GrapeCity, inc. All rights reserved.

Page 66: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

controlinstancethatSpreadcreatesandplacesinthelocationofthecellwhenyougointoeditmode.Theformatterdecideshowthedisplayedtextappears.Therendererissimplycodethatpaintsthatcontrolinsidethecellrectanglewhentheeditorisnotthere.

Formoredetailedinformationontheseobjects,refertotheindividualinterfacesintheAssemblyReference.Formoregeneralinformationaboutcelltypesandapplyingthemtocells,columns,rows,orwholesheets,refertoCustomizingInteractionwithCellTypes.

Underlying Models

TheSpreadcomponentprovidesthemodelsthatprovideabasisformuchofthecustomizationthatispossiblewiththecomponent.Themodelsaretheunderlyingtemplatefromwhichthemorecommonlyusedshortcutobjectsarederived.

Theshortcutobjectsaccesstheunderlyingmodels.Whenyouworkwithshortcutobjects,youareactuallyworkingwiththemodelsinthecomponent.Forexample,ifyouchangethenumberofcolumnsinasheetusingtheSheetsshortcutobject,themodelforthis(thedefaultsheetaxismodel)isupdatedwiththatinformation.

Toprovidedifferentfeaturesorcustomizethebehaviororappearanceofyourapplication,youcanextendthemodelstocreatenewclasses.Forexampleyoumaydothistocreateatemplatecomponentforallthedevelopersinyourorganization.Bycreatingyourownclassbasedononeofthemodels,youcancreateacustomizedclassandprovideittoallthedeveloperstouse.

Usetheobjectmodelsforthefollowingbenefits:

Forbetterperformance:ifyouaresettingseveralproperties,forexample,yourapplicationwillbefasterifyousetthepropertiesforanobject,andthenassignthatobjecttoSpread.Forspecializedfeatures:ifyouwanttocreateyourowncustomizedfeatures,suchasextendingthedatamodeltobringinatab-delimitedfile,youcanextendtheBaseSheetDataModeltodoso.Ifyouwanttocreateyourowncelltypeorcustomizethebehaviorofhowusersselectcells,youcandothatthroughthemodels.Forconsistencyindevelopment:ifyouareadevelopmentteamthatwouldliketohaveconsistencyinsomecustomstyleandcustombehavior,makethechangesinthemodelsandtheentireteamcanbenefit.Formorecompleteunderstandingoftheproduct:ifyouareusingmanyofthefeaturesofthecomponent,themostefficientwaytocustomizethecomponentisbyfirstunderstandingtheworkingsofthemodelsuponwhichtheobjectsarebased.

Formoreinformationabouttheunderlyingmodelsandhowtousethem,refertoUnderstandingtheUnderlyingModels.

Spread Windows Forms Developer’s Guide 65

Copyright © GrapeCity, inc. All rights reserved.

Page 67: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Understanding the Spreadsheet Objects

YoucancustomizetheappearanceofvariouspartsoftheSpreadcomponent.Roughlyspeaking,theobjectsintheSpreadWindowsFormscomponentfallintotwocategories:objectsthatrepresentrealworldthingsinaspreadsheet,likecolumn,rows,andcells,andobjectsthatareconceptualrepresentationsofunderlyingpiecesofthespreadsheet,suchasdataandagrid.

Therealworldobjectscanbeaccessedthroughabuilt-insetofshortcutobjects.TheshortcutobjectshelpyouinteractwiththeSpreadWindowsFormscomponentinawaythatisprobablyfamiliartoyoufromworkingwithothercomponentsorapplications.Theconceptualobjects,themoreabstractobjects,arereferredtoas"models."Thesemodelsareresponsibleformanagingthestyleinformation,formatting,anddataintheSpreadcomponent.

Inactuality,theshortcutobjectscallthemodelobjects.However,theshortcutobjectsallowyoutointeractwiththeSpreadWindowsFormscomponentwithoutdealingtoomuchwiththeunderlyingobjectmodels.IfyouarenewtoworkingwithSpread,orarenewtodevelopinginanobject-orientedenvironment,youmightwanttousetheshortcutobjectsatfirst,asyoubecomefamiliarwithfeaturesofSpreadWindowsForms.However,intensiveuseoftheshortcutobjectscandegradeyourapplication’sperformance.

ThetasksthatrelatetosettingtheappearanceofobjectsintheSpreadcomponentinclude:

WorkingwithSheetsWorkingwiththeRowsandColumnsWorkingwithHeadersWorkingwithCells

ForinformationoncustomizingtheappearanceusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Working with Sheets

Youcanhavemultiplesheetswithinaworkbook.Eachsheetisaseparatespreadsheetandcanhaveitsownappearanceandsettingsforuserinteraction.Eachsheethasauniquenameandsheetnametabforeasynavigationbetweensheets.

ThesetasksrelatetoworkingwithandsettingtheappearanceofthesheetsinsidetheSpreadcomponent:

WorkingwiththeActiveSheetWorkingwithMultipleSheetsAddingaSheetCopyingandInsertingaSheetMovingaSheetRemovingaSheetShowingorHidingaSheet

Whenyouworkwithsheets,youcanworkwiththeobjectsusingtheshortcutobjectsincode,(SheetView('SheetViewClass'intheon-linedocumentation)andSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)classes)oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.Formoreinformationonmodels,refertoUnderstandingtheUnderlyingModels.

Settingsappliedtoaparticularroworcolumnorcellcanoverridethesettingsthataresetatsheetlevel.RefertoObjectParentage.

Formoredetailsontheobjectsinvolved,refertotheSheetView('SheetViewClass'intheon-linedocumentation)classandSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)class.

Working with the Active Sheet

Spread Windows Forms Developer’s Guide 66

Copyright © GrapeCity, inc. All rights reserved.

Page 68: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Theactivesheetisthesheetthatcurrentlyreceivesanyuserinteraction.YoucanspecifytheactivesheetprogrammaticallybyusingtheActiveSheet('ActiveSheetProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)object.YoucanalsospecifytheindexoftheactivesheetbyusingtheActiveSheetIndex('ActiveSheetIndexProperty'intheon-linedocumentation)property.

Usually,theactivesheetisdisplayedontopofothersheets.

UsingaShortcut

YoucanuseActiveSheetasashortcutobjectfortheactivesheetwhenspecifyingpropertiesofthesheet.

Example

Setpropertiesoftheactivesheetandassigntheactivesheettosheetnumber2.

C#// Create three sheets in the component.fpSpread1.Sheets.Count = 3;// Set third sheet (in zero-based index) be set to active sheet.fpSpread1.ActiveSheetIndex = 2;// Set some properties of the active sheet.fpSpread1.ActiveSheet.ColumnCount = 8;fpSpread1.InterfaceRenderer = NULL;fpSpread1.ActiveSheet.GrayAreaBackColor = Color.Purple;

VB' Create three sheets in the component.FpSpread1.Sheets.Count = 3' Set third sheet (in zero-based index) be set to active sheet.FpSpread1.ActiveSheetIndex = 2' Set some properties of the active sheet.FpSpread1.ActiveSheet.ColumnCount = 8FpSpread1.InterfaceRenderer = NothingFpSpread1.ActiveSheet.GrayAreaBackColor = Color.Purple

Working with Multiple Sheets

Thecomponentallowsmultiplesheets.YoucanspecifythenumberofsheetswiththeCount('CountProperty'intheon-linedocumentation)propertyoftheSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)class.Forexample,youcansettheSpreadtohave5sheets(andeachsheethasasheetnametab)usingthiscode:

fpSpread1.Sheets.Count = 5;

Youcanspecifypropertiesforanindividualsheetorforseveralsheetsatatime.UsetheSheetViewclassortheActiveSheetshortcutincode.Formoreinformation,refertoCustomizingtheIndividualSheetAppearance.

Youcannamethesheetsorusethedefaultsheetnames.Thedefaultsheetnameis"Sheet1"andasothersheetsareadded,thesheetarenamedincrementally"Sheet2","Sheet3",andsoon.UsetheSheetName('SheetNameProperty'intheon-linedocumentation)propertyintheSheetView('SheetViewClass'intheon-linedocumentation)classtonamethesheetprogrammatically.

Toaddanewsheet,refertoAddingaSheet.Toremoveasheet,refertoRemovingaSheet.

Spread Windows Forms Developer’s Guide 67

Copyright © GrapeCity, inc. All rights reserved.

Page 69: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanusecodesuchasthefollowingtocopyasheettoanotherSpreadcomponent.

FpSpread2.Sheets(0) = FpSpread1.Sheets(1)

SincethetwosheetsusethesameSheetViewobject,anychangesmadeinonesheetareautomaticallyreflectedintheother.

Toreturnasheetbyname,youcanusetheSheetViewCollection.Find('FindMethod'intheon-linedocumentation)methodasshowninthefollowingcode.

FpSpread1.Sheets.Find("Sheet1").Cells(0,0).Value = "test"

TheFpSpread.Sheets('SheetsProperty'intheon-linedocumentation)propertycanbeusedwhenyouwishtouseanintegerforthesheetvalue.ThismethodhasaSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)objectasitsvalueandtakesanintegerastheindexerinsteadofastringforasheetname.

Forinformationaboutthedisplayofthesheetnamesinthesheetnamebuttons,refertoCustomizingtheSheetNameTabsoftheComponent.

Adding a Sheet

YoucanaddasheetoraddseveralsheetstotheSpreadcomponent.Bydefault,thecomponenthasonesheet,namedSheet1andreferencedassheetindex0.Thesheetindexiszero-based.Incode,youcansimplychangethesheetcountoryoucanexplicitlyaddthesheet(s).Ifyouareusingcustomsheetnamesbesuretospecifythenameofthesheet.

Theuserisallowedtoaddnewsheetsbydefault.Theycandothisbyclickingonthenewsheeticononthetabstripnexttothesheetname(providedthetabstripisvisible).Ifthesheetcountisgreaterthan1,thetabstripisdisplayedbydefault.YoucanchangethisbysettingtheTabStripPolicy('TabStripPolicyProperty'intheon-linedocumentation)property.YoucanpreventtheuserfromaddingnewsheetsbysettingtheTabStripInsertTab('TabStripInsertTabProperty'intheon-linedocumentation)propertytofalse.

Formoreinformationonhowthesheetnamesappearinthesheettabs,andhowtocustomizethesheettabs,refertoCustomizingtheSheetNameTabsoftheComponent.

Toaddasheettothecomponent,completethefollowinginstructions.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. ClicktheAddbuttontoaddasheettothecollection.

AnewsheetnamedSheetViewn(wherenisaninteger)isaddedtothecomponent.

5. Ifyouwanttochangethenameofthenewsheet,clicktheSheetNamepropertyinthepropertylist,andthentypethenewnameforthesheet.

6. ClickOKtoclosetheeditor.

UsingaShortcut

1. CreateanewSheetView('SheetViewClass'intheon-linedocumentation)object.2. Ifyouwanttodoso,setpropertiesforthesheet,suchasitsname.3. CalltheSheetsshortcutobjectAdd('AddMethod'intheon-linedocumentation)methodtoaddthenew

sheettotheSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)forthecomponent.

Example

Spread Windows Forms Developer’s Guide 68

Copyright © GrapeCity, inc. All rights reserved.

Page 70: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexamplecodeaddsanewsheettothecomponent,thennamesthesheet"North"andsetsittohave10columnsand100rows.

C#// Create a new sheet.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();newsheet.SheetName = "North";newsheet.ColumnCount = 10;newsheet.RowCount = 100;// Add the new sheet to the component.fpSpread1.Sheets.Add(newsheet);

VB' Create a new sheet.Dim newsheet As New FarPoint.Win.Spread.SheetView()newsheet.SheetName = "North"newsheet.ColumnCount = 10newsheet.RowCount = 100' Add the new sheet to the component.FpSpread1.Sheets.Add(newsheet)

Copying and Inserting a Sheet

YoucancopyandinsertasheettothesameSpreadcomponentoranotherSpreadcomponentontheform.Spreaddoesnotprovideawaytocopythesheet,butwiththecodegivenbelowyoucaneasilycreateyourownCopySheetmethod.Tocopyasheetandinsertitinthecomponent,simplycreateanewmethod,calledCopySheet,asshownhereandthenusetheAdd('AddMethod'intheon-linedocumentation)orInsert('InsertMethod'intheon-linedocumentation)methodsintheSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)class.

TheCopySheetmethodalsocopiesallshapesonthatsheet.

CopyingasheetusingtheCopySheetmethodalsocopiestheNamedStyleCollectioninthesheet,andcreatesseparatecopiesofanyNamedStyleobjectsinthecollectionthatareprivatetothecopyandnotsharedwiththeoriginalNamedStyleCollectioninthecopiedsheet.Ifyouwanttosharethenamedstylesinsteadofcreatingseparatecopies,youcanassigntheNamedStyleCollectionyouwanttosharetotheNamedStylespropertyofthecopy.YoumightalsowanttotemporarilyremovetheNamedStyleCollectionfromthesheetbeingcopied,sothatitisnotcopiedunnecessarily.ThiscanbedonebyassigningtheNamedStyleCollectiontoavariable,thensettingtheNamedStylespropertytoNothing(nullinC#),thenmakingthecopy,thenassigningthevariablebacktotheNamedStylesproperty.

TheSpreadDesignercanbeusedtocopyandpasteasheetatdesigntime.Right-clickonthesheettabiconinthedesignertobringuptheCopy,Cut,andPastecontextmenu.

TheSpreadActions('SpreadActionsClass'intheon-linedocumentation)classhasoptionsfortheclipboardcopy,cut,andpasteofasheet.

UsingCode

1. CreateanewCopySheetmethodtobeusedforcopyingsheets.2. Handlethenamedstylesforthatsheetasdescribedabove.3. CalltheSheetsshortcutobjectAdd('AddMethod'intheon-linedocumentation)methodtoaddthenewsheetortheInsertmethod

toinsertthesheettotheSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)forthecomponent.

Example

ThisisthecodefortheCopySheetmethod.

C#private void Form1_Load(object sender, EventArgs e){ fpSpread1.Sheets.Count = 3;}

private void button1_Click(object sender, EventArgs e)

Spread Windows Forms Developer’s Guide 69

Copyright © GrapeCity, inc. All rights reserved.

Page 71: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

{ FarPoint.Win.Spread.SheetView s = new FarPoint.Win.Spread.SheetView(); s.Cells[0, 0].Text = "test"; FarPoint.Win.Spread.DrawingSpace.FourWayArrowShape sh = new FarPoint.Win.Spread.DrawingSpace.FourWayArrowShape(); sh.Name = "Arrow"; s.AddShape(sh); fpSpread1.Sheets.Add(CopySheet(s));}

public FarPoint.Win.Spread.SheetView CopySheet(FarPoint.Win.Spread.SheetView sheet) { FarPoint.Win.Spread.SheetView newSheet = null; if (sheet != null) { newSheet = (FarPoint.Win.Spread.SheetView)FarPoint.Win.Serializer.LoadObjectXml(typeof(FarPoint.Win.Spread.SheetView), FarPoint.Win.Serializer.GetObjectXml(sheet, "CopySheet"), "CopySheet"); } return newSheet; }

VBPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load FpSpread1.Sheets.Count = 3End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim s As New FarPoint.Win.Spread.SheetView() s.Cells(0, 0).Text = "test" Dim sh As New FarPoint.Win.Spread.DrawingSpace.FourWayArrowShape() sh.Name = "Arrow" s.AddShape(sh) FpSpread1.Sheets.Add(CopySheet(s))End Sub

Public Function CopySheet(sheet As FarPoint.Win.Spread.SheetView) As FarPoint.Win.Spread.SheetView Dim newSheet as FarPoint.Win.Spread.SheetView = Nothing If Not IsNothing(sheet) Then newSheet = FarPoint.Win.Serializer.LoadObjectXml(GetType(FarPoint.Win.Spread.SheetView), FarPoint.Win.Serializer.GetObjectXml(sheet, "CopySheet"), "CopySheet") End If Return newSheetEnd Function

Moving a Sheet

Ifyouhavemultiplesheets,youcanmoveasheet.Ifyoumovethefirstsheetlocationtothelastsheetlocation,thentheothersheetsaremovedtotheleft.Ifyoumovethesheetlocationtothelocationofthesheetnexttoit,thenthiseffectivelyswapsthesheets.

Specifythefromandtolocationusingthesheetindex.Thesheetindexiszero‑based.

Movingasheetdoesnotchangethesheetname.

TheAllowSheetMove('AllowSheetMoveProperty'intheon-linedocumentation)propertyoftheFpSpreadclasscanbesettotruetoallowtheusertomovethesheetsusingthesheettabs.Youcanalsohideasheet.Formoreinformation,refertoShowingorHidingaSheet.

YoucanpreventauserfrommovingaspecificsheetwiththeSheetDragMoving('SheetDragMovingEvent'intheon-linedocumentation)andSheetDragMoved('SheetDragMovedEvent'intheon-linedocumentation)events.Selectasheettabonthetabstrip,dragthesheettabtoanothertab,thenreleasethemousetomovethesheetfromtheoldindextothenewindex.TheSheetDragMoving('SheetDragMovingEvent'intheon-linedocumentation)eventoccurswhentheuserstartsdraggingthesheettabname.TheSheetDragMoved

Spread Windows Forms Developer’s Guide 70

Copyright © GrapeCity, inc. All rights reserved.

Page 72: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('SheetDragMovedEvent'intheon-linedocumentation)eventoccursrightaftertheusermovesthesheet.YoucanpreventspecificsheetsfrombeingmovedbysettingtheCancelpropertytotrueintheSheetDragMoving('SheetDragMovingEvent'intheon-linedocumentation)event.

Tomoveanexistingsheet,completethefollowinginstructions.

UsingaShortcut

CalltheSheetsMove('MoveMethod'intheon-linedocumentation)method(tomovethesheetfromonelocationtoanother).

Example

Thisexamplecodemovesthesecondsheettothelocationofthethirdsheet.

C#// Move sheet 2 to the location of sheet 3.FpSpread1.Sheets.Count = 5;FpSpread1.Sheets.Move(2, 3);

VB' Move sheet 2 to the location of sheet 3.FpSpread1.Sheets.Count = 5FpSpread1.Sheets.Move(2, 3)

Removing a Sheet

Ifyouhavemultiplesheets,youcanremoveasheetorremoveseveralsheetsfromtheSpreadcomponent.Theremustalwaysbeatleastonesheetinthecomponent.

Incode,youcansimplychangethesheetcountoryoucanexplicitlyremovethesheetsbyspecifyingtheirindexes.Thesheetindexiszero-based.

Removinganexistingsheetdoesnotchangethedefaultsheetnamesprovidedtotheothersheets.Forexample,aSpreadcomponentwiththreesheetswouldbydefaultnamethemSheet1,Sheet2,andSheet3.Ifyouremovethesecondsheet,thenamesfortheremainingsheetsareSheet1andSheet3.Theindexesforthesheetsare0and1,becausethesheetindexiszerobased.

Youcanalsohideasheet.Formoreinformation,refertoShowingorHidingaSheet.

Toremoveanexistingsheet,completethefollowinginstructions.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheettoremove.5. ClicktheRemovebuttontoremovethesheetfromthecollection.6. ClickOKtoclosetheeditor.

UsingaShortcut

CalltheSheetsshortcutobjectRemove('RemoveMethod'intheon-linedocumentation)method(toremove

Spread Windows Forms Developer’s Guide 71

Copyright © GrapeCity, inc. All rights reserved.

Page 73: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thesheetfromtheSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)forthecomponent)andspecifythesheettoremove.

Example

ThisexamplecoderemovesthesecondsheetfromaSpreadcomponentthathastwoormoresheets.

C#// Remove the second sheet.fpSpread1.Sheets.Remove(fpSpread1.Sheets[1]);

VB' Remove the second sheet.FpSpread1.Sheets.Remove(FpSpread1.Sheets(1))

Showing or Hiding a Sheet

Ifyouhavemorethanonesheetinthecomponent,youcanhideasheetsothatitisnotdisplayedtotheuser.Eventhoughitisnotdisplayed,itisnotremovedfromthecomponent.Theremustbeatleastonesheetinthecomponent.Forinformationonaddingasheet,refertoAddingaSheet.

Hidingasheetdoesnotchangethedefaultsheetnamesprovidedfortheothersheets.Forexample,aSpreadcomponentwiththreesheetswouldbydefaultnamethemSheet1,Sheet2,andSheet3.Ifyouhidethesecondsheet,thenamesfortheremainingsheetsareSheet1andSheet3.

Hidingasheetdoesnotremoveitanddoesnotaffectformulasonthatsheetorreferencestothatsheet.Formoreinformationonremovingthesheetcompletely,refertoRemovingaSheet.

Forprogrammingdetails,refertotheVisible('VisibleProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheettohide.5. SelecttheVisiblepropertyinthepropertylist,andthenselectfalse.6. ClickOKtoclosetheeditor.

UsingaShortcut

SettheSheetsshortcutobjectVisible('VisibleProperty'intheon-linedocumentation)propertyforthesheet.

Example

ThisexamplecodehidesthesecondandfourthsheetsinaSpreadcomponentthathaseightsheets.

C#private void Form1_Load(object sender, System.EventArgs e) { // Set the Spread to have eight sheets. fpSpread1.Sheets.Count = 8;

Spread Windows Forms Developer’s Guide 72

Copyright © GrapeCity, inc. All rights reserved.

Page 74: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Hide the second and fourth sheets. fpSpread1.Sheets[1].Visible = false; fpSpread1.Sheets[3].Visible = false; }

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Set the Spread to have eight sheets. FpSpread1.Sheets.Count = 8 ' Hide the second and fourth sheets. FpSpread1.Sheets(1).Visible = False FpSpread1.Sheets(3).Visible = FalseEnd Sub

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetproperties.2. Inthepropertylist,selecttheVisibleproperty.3. SelectFalse.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Working with the Rows and Columns

Thesetasksrelatetosettingtheappearanceofcolumnsorrowsinthesheet:

CustomizingtheNumberofRowsorColumnsAddingaRoworColumnRemovingaRoworColumnShowingorHidingaRoworColumn

Whenyouworkwithrowsandcolumns,youcanworkwiththeobjectsusingtheshortcutsincode(Row,Rows,Column,Columns,AlternatingRow,andAlternatingRowsclasses)oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.Forinformationontheunderlyingmodelresponsibleforrowsandcolumns,refertotheUnderstandingtheAxisModel.

YoucaneditpropertiesoftheRowsandColumnsclassesinthePropertieswindow(inSpreadDesignerorinVisualStudio.NET).FormoreinformationontheCells,Columns,andRowsEditorthatisavailablefromthePropertieswindow,refertotheexplanationofthiseditorintheSpreadDesignerGuide.

Similartoothergridproductsyoumighthaveused,Spreaddoesnotallowin-celleditingofthecellsintherowandcolumnheaders.

Formoreinformationabouttheappearanceofrowsasaresultoffiltering,refertoSettingtheAppearanceofFilteredRows.

Settingsappliedtoaparticularroworcolumnoverridethesettingsthataresetatthesheetlevelandsettingsappliedatacellleveloverridetheroworcolumnsettings.RefertoObjectParentage.

Formoreinformation,refertotheRow('RowClass'intheon-linedocumentation),Rows('RowsClass'intheon-linedocumentation),AlternatingRow('AlternatingRowClass'intheon-linedocumentation),AlternatingRows('AlternatingRowsClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),andColumns('ColumnsClass'intheon-linedocumentation)objectsintheAssemblyReference.

Spread Windows Forms Developer’s Guide 73

Copyright © GrapeCity, inc. All rights reserved.

Page 75: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing the Number of Rows or Columns

Whenyoucreateasheet,itisautomaticallycreatedwithfivehundredcolumnsandfivehundredrows.Youcanchangethenumbertozerooruptotwobillioncolumnandrows.

Formoredetails,refertotheSheetView.RowCount('RowCountProperty'intheon-linedocumentation)propertyandSheetView.ColumnCount('ColumnCountProperty'intheon-linedocumentation)property.

Youcanalsorestricttheuserfromaccessingvariousrowsandcolumns.Formoreinformation,refertoAllowingUserInteractionwithRowsandColumns.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosetthenumberofcolumnsorrows.5. Inthepropertieslist,settheColumnCountpropertytosetthenumberofcolumnsandtheRowCountpropertytosetthenumberofrows.

6. ClickOKtoclosetheeditor.

UsingaShortcut

SettheColumnCountorRowCountpropertyfortheSheetsshortcutobject.

Example

Thisexamplecodesetsthefirstsheettohave10columnsand100rows.

C#fpSpread1.Sheets[0].ColumnCount = 10;fpSpread1.Sheets[0].RowCount = 100;

VBFpSpread1.Sheets(0).ColumnCount = 10FpSpread1.Sheets(0).RowCount = 100

UsingCode

SettheColumnCount('ColumnCountProperty'intheon-linedocumentation)orRowCount('RowCountProperty'intheon-linedocumentation)propertyforaSheetView('SheetViewClass'intheon-linedocumentation)object.

Example

Thisexamplecodesetsthefirstsheettohave10columnsand100rows.

C#FarPoint.Win.Spread.SheetView Sheet0;Sheet0 = fpSpread1.Sheets[0];Sheet0.ColumnCount = 10;Sheet0.RowCount = 100;

Spread Windows Forms Developer’s Guide 74

Copyright © GrapeCity, inc. All rights reserved.

Page 76: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBDim Sheet0 As FarPoint.Win.Spread.SheetViewSheet0 = FpSpread1.Sheets(0)Sheet0.ColumnCount = 10Sheet0.RowCount = 100

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetthenumberofcolumnsorrows.2. Fromthepropertylistforthesheet,intheAppearancecategory,selectColumnsorRowstoexpandthe

propertiesforthecolumnsorrowsinthesheet.3. Inthelistofpropertiesforthecolumnsorrows,settheCountproperty.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Adding a Row or Column

Youcanaddoneormorecolumnsorrowstoasheet,andspecifywherethecolumnorrowisadded.YoucanusethemethodsintheSheetView('SheetViewClass'intheon-linedocumentation)classorthemethodsintheDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)class.

Ifyousetthecelltypeforthecolumnandarowisinserted,thenewcellsinthecolumnusethecelltypefortheentirecolumn.Ifyousetthecelltypeforindividualcellsandanewrowisinserted,thenthenewcellsusethedefaultcelltype,andyouwouldneedtosetthecelltypeforeachofthenewcells.

FormoredetailsrefertotheSheetView.AddRows('AddRowsMethod'intheon-linedocumentation)methodorSheetView.AddColumns('AddColumnsMethod'intheon-linedocumentation)method.

UsingaShortcut

CalltheAddColumnsorAddRowsmethodfortheSheetsshortcutobject.Setthecolumnorrowparametertospecifythecolumnorrowbeforewhichtoaddthecolumnsorrows.Setthecountparametertospecifythenumberofcolumnsorrowstoadd.

Example

Thisexamplecodeaddstwocolumnsbeforecolumn6.

C#fpSpread1.Sheets[0].AddColumns(6,2);

VBFpSpread1.Sheets(0).AddColumns(6,2)

UsingCode

1. UsetheAddRows('AddRowsMethod'intheon-linedocumentation)orAddColumns('AddColumnsMethod'intheon-linedocumentation)methodforaSheetView('SheetViewClass'intheon-linedocumentation)object.

2. Setthecolumnorrowparametertospecifythecolumnorrowbeforewhichtoaddthecolumnsorrows.3. Setthecountparametertospecifythenumberofcolumnsorrowstoadd.

Spread Windows Forms Developer’s Guide 75

Copyright © GrapeCity, inc. All rights reserved.

Page 77: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecodeaddstwocolumnsbeforecolumn6.

C#FarPoint.Win.Spread.SheetView Sheet0;Sheet0 = fpSpread1.Sheets[0];Sheet0.AddColumns(6,2);

VBDim Sheet0 As FarPoint.Win.Spread.SheetViewSheet0 = FpSpread1.Sheets(0)Sheet0.AddColumns(6, 2)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttoaddaroworcolumn.2. Selectarowabovewhichyouwanttoaddaroworacolumntotheleftofwhichyouwanttoaddacolumn.3. Right-clickontheroworcolumnandchooseInsert.

Anadditionalroworcolumnisaddedtothesheet.

4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Removing a Row or Column

Youcanremoveoneormorecolumnsorrowsfromasheet.YoucanusethemethodsintheSheetView('SheetViewClass'intheon-linedocumentation)classorthemethodsintheDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)class.

FormoredetailsrefertotheSheetView.RemoveRows('RemoveRowsMethod'intheon-linedocumentation)methodorSheetView.RemoveColumns('RemoveColumnsMethod'intheon-linedocumentation)method.

Ifyousimplywanttohidetheroworcolumnfromtheenduser,butnotremoveitfromthesheet,refertoShowingorHidingaRoworColumn.

UsingaShortcut

CalltheRemoveRowsorRemoveColumnsmethodfortheSheetsshortcutobject.Settheroworcolumnparametertospecifytheroworcolumnbeforewhichtoremovetherowsorcolumns.Setthecountparametertospecifythenumberofrowsorcolumnstoremove.

Example

Thisexamplecoderemovestwocolumnsbeforecolumn6.

C#fpSpread1.Sheets[0].RemoveColumns(6,2);

VBFpSpread1.Sheets(0).RemoveColumns(6,2)

UsingCode

Spread Windows Forms Developer’s Guide 76

Copyright © GrapeCity, inc. All rights reserved.

Page 78: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. CalltheRemoveRows('RemoveRowsMethod'intheon-linedocumentation)orRemoveColumns('RemoveColumnsMethod'intheon-linedocumentation)methodforaSheetView('SheetViewClass'intheon-linedocumentation)object.

2. Settheroworcolumnparametertospecifytheroworcolumnbeforewhichtoremovetherowsorcolumns.3. Setthecountparametertospecifythenumberofrowsorcolumnstoremove.

Example

Thisexamplecoderemovestwocolumnsbeforecolumn6.

C#FarPoint.Win.Spread.SheetView Sheet0;Sheet0 = fpSpread1.Sheets[0];Sheet0.RemoveColumns(6,2);

VBDim Sheet0 As FarPoint.Win.Spread.SheetViewSheet0 = FpSpread1.Sheets(0)Sheet0.RemoveColumns(6, 2)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttoremovearoworcolumn.2. Selecttherow(s)orcolumn(s)toremovebyselectingtheheader(s).3. Right-clickontheroworcolumnandchooseDelete.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Showing or Hiding a Row or Column

Bydefault,rowsandcolumnsarevisibleonasheet.Youcanhiderowsorcolumnsinasheetsothattheyarenotdisplayed.Youcanalsohiderowheadersandcolumnheaders.YouhidearoworcolumnbysettingtheRow.Visible('VisibleProperty'intheon-linedocumentation)propertyorColumn.Visible('VisibleProperty'intheon-linedocumentation)propertytofalse.Thehiddenrowsorcolumnsarenotdisplayedatruntime,butduringdesigntime,theyarestillvisible.

Whenyouhidearoworcolumn,thesizeoftheroworcolumnisrememberedbytheSpreadcomponent.Ifyouredisplaytheroworcolumn,itisdisplayedatthesizeitwasbeforeitwashidden.Forexample,ifthewidthofacolumnis100pixelsandyouhidethecolumn,whenyouredisplayit,thewidthis100.

Ifyouwanttodetermineifaroworcolumnispresentlyvisibletotheuser,thatis,whetheritappearsintheviewportthatiscurrentlybeingdisplayed,youcanusethemethodsofthesheet.Forexample,tofindoutifacolumnappears,usetheGetViewportLeftColumn('GetViewportLeftColumnMethod'intheon-linedocumentation)andGetViewportRightColumn('GetViewportRightColumnMethod'intheon-linedocumentation)methodstodeterminetheleft-mostandright-mostcolumnsintheviewportandthendetermineifthecolumnfallswithinthoseindexes.

Forinformationonhidingrowsorcolumnsinheaders,refertoShowingorHidingHeaders.

FormoreinformationonhidingrowsorcolumnsusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

UsingthePropertiesWindow

Spread Windows Forms Developer’s Guide 77

Copyright © GrapeCity, inc. All rights reserved.

Page 79: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetcollection.3. SelecttheRoworColumncollection.4. Clickoraroworcolumntoselectitandthenselectanoptionfromthedrop-downcombolistfortheVisible

property.

UsingCode

UsetheSetColumnVisible('SetColumnVisibleMethod'intheon-linedocumentation)orSetRowVisible('SetRowVisibleMethod'intheon-linedocumentation)methodforthesheet.

Example

C#fpSpread1.Sheets[0].SetColumnVisible(0,true);fpSpread1.Sheets[0].SetRowVisible(0,false);//Another option is to use the Visible property.fpSpread1.Sheets[0].Columns[1].Visible = false;fpSpread1.Sheets[0].Rows[1].Visible = true;

VBfpSpread1.Sheets(0).SetColumnVisible(0, False)fpSpread1.Sheets(0).SetRowVisible(0, True)'Another option is to use the Visible property.FpSpread1.Sheets(0).Columns(1).Visible = TrueFpSpread1.Sheets(0).Rows(1).Visible = False

UsingtheSpreadDesigner

1. Selecttheroworcolumnbyclickingontheheader.2. SelectanoptionfromtheVisibledrop-downcombolist.3. FromtheFilemenu,selectSaveandExittosavethechanges.

Working with Headers

Youcancustomizetheappearanceofheadercells.Thesetasksrelatetosettingtheappearanceofheadersforrowsorcolumnsinthesheet:

UnderstandingHeadersCreatingaHeaderwithMultipleRowsorColumnsShowingorHidingHeaders

Youcanalsocustomizeheaderappearanceinotherways.

Youcansetthestartingnumberforthedefaultheaderlabels.Ifyouhavemultiplerowsinthecolumnheaders,youcanselectwhichrowdisplaysthesortindicatorandwhichrowdisplaystheautomatictext.

Formoreinformation,refertoCustomizingtheAppearanceofHeadersandtheCell('CellClass'intheon-linedocumentation)andCells('CellsClass'intheon-linedocumentation)objects.

Understanding Headers

Spread Windows Forms Developer’s Guide 78

Copyright © GrapeCity, inc. All rights reserved.

Page 80: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingfigureshowsthesheetcorner,headers,andcellsandillustratesthecellcoordinatesinheaderswithmultiplerowsandcolumns.Thecoordinatesareshowninparentheses.

Whenyouworkwithrowheadersandcolumnheaders,youcanworkwiththeobjectsusingtheshortcutobjectsincode(RowHeader('RowHeaderClass'intheon-linedocumentation)andColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classes),oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.

Creating a Header with Multiple Rows or Columns

Youcanprovidemultiplerowsinthecolumnheaderandmultiplecolumnsintherowheader.Asshowninthefollowingfigure,theheadersmayhavedifferentnumbersofcolumnsandrows.

Spread Windows Forms Developer’s Guide 79

Copyright © GrapeCity, inc. All rights reserved.

Page 81: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Therowsorcolumnsintheheadercanalsocontainspans,forexample,ifyouwanttohaveaheadercellthatexplainstwocellsbeneathit(orsubheaders).Forinstructionsforcreatingaspaninaheader,seeCreatingaSpaninaHeader.

Youcancustomizethelabelsintheseheaders.Forinstructionsforcustomizingthelabels,seeCustomizingHeaderLabelText.Formoreinformationontheindividualproperties,refertotheColumn('ColumnClass'intheon-linedocumentation)Label('LabelProperty'intheon-linedocumentation)propertyortheRow('RowClass'intheon-linedocumentation)Label('LabelProperty'intheon-linedocumentation)property.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Clickthesheetforwhichyouwanttochangetheheaderdisplay.5. SettheColumnHeaderRowCountpropertytothenumberorrowsyouwantinthecolumnheaderortheRowHeaderColumnCountpropertytothenumberofcolumnsyouwantintherowheader.

6. ClickOKtoclosetheeditor.

UsingaShortcut

SettheColumnHeaderRowCount('ColumnHeaderRowCountProperty'intheon-linedocumentation)propertyortheRowHeaderColumnCount('RowHeaderColumnCountProperty'intheon-linedocumentation)propertyforaSheetsobject.UsetheAddColumnHeaderSpanCell('AddColumnHeaderSpanCellMethod'intheon-linedocumentation)methodtospanthecellsintheheader.UsetheLabelandTextpropertiestoaddthelabelstotheheadercells.

Example

Thisexamplecodecreatesaspreadsheetshowninthefigureabove,withtwocolumnsintherowheaderandthreerowsinthecolumnheader.

C#// Set the number or rows and columns in the headers.fpSpread1.Sheets[0].ColumnHeaderRowCount = 3;

Spread Windows Forms Developer’s Guide 80

Copyright © GrapeCity, inc. All rights reserved.

Page 82: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].RowHeaderColumnCount = 2;// Span the header cells as needed.fpSpread1.Sheets[0].AddColumnHeaderSpanCell(1, 0, 1, 2);fpSpread1.Sheets[0].AddColumnHeaderSpanCell(1, 2, 1, 2);fpSpread1.Sheets[0].AddColumnHeaderSpanCell(1, 4, 1, 2);fpSpread1.Sheets[0].AddColumnHeaderSpanCell(1, 6, 1, 2);fpSpread1.Sheets[0].AddColumnHeaderSpanCell(0, 0, 1, 8);fpSpread1.Sheets[0].AddRowHeaderSpanCell(0, 0, 12, 1);// Set the labels as needed -- using the Label property or// the cell Text property.fpSpread1.Sheets[0].ColumnHeader.Columns[0].Label = "East";fpSpread1.Sheets[0].ColumnHeader.Columns[1].Label = "West";fpSpread1.Sheets[0].ColumnHeader.Columns[2].Label = "East";fpSpread1.Sheets[0].ColumnHeader.Columns[3].Label = "West";fpSpread1.Sheets[0].ColumnHeader.Columns[4].Label = "East";fpSpread1.Sheets[0].ColumnHeader.Columns[5].Label = "West";fpSpread1.Sheets[0].ColumnHeader.Columns[6].Label = "East";fpSpread1.Sheets[0].ColumnHeader.Columns[7].Label = "West";fpSpread1.Sheets[0].ColumnHeader.Cells[0,0].Text = "Fiscal Year 2004";fpSpread1.Sheets[0].ColumnHeader.Cells[1,0].Text = "1st Quarter";fpSpread1.Sheets[0].ColumnHeader.Cells[1,2].Text = "2nd Quarter";fpSpread1.Sheets[0].ColumnHeader.Cells[1,4].Text = "3rd Quarter";fpSpread1.Sheets[0].ColumnHeader.Cells[1,6].Text = "4th Quarter";// Set the row header so that the label displays.fpSpread1.Sheets[0].RowHeader.Columns[0].Width = 45;fpSpread1.Sheets[0].RowHeader.Cells[0,0].Text = "Branch #";

VB’ Set the number or rows and columns in the headers.FpSpread1.Sheets(0).ColumnHeaderRowCount = 3FpSpread1.Sheets(0).RowHeaderColumnCount = 2’ Span the header cells as needed.FpSpread1.Sheets(0).AddColumnHeaderSpanCell(1, 0, 1, 2)FpSpread1.Sheets(0).AddColumnHeaderSpanCell(1, 2, 1, 2)FpSpread1.Sheets(0).AddColumnHeaderSpanCell(1, 4, 1, 2)FpSpread1.Sheets(0).AddColumnHeaderSpanCell(1, 6, 1, 2)FpSpread1.Sheets(0).AddColumnHeaderSpanCell(0, 0, 1, 8)FpSpread1.Sheets(0).AddRowHeaderSpanCell(0, 0, 12, 1)’ Set the labels as needed -- using the Label property or’ the cell Text property.FpSpread1.Sheets(0).ColumnHeader.Columns(0).Label = "East"FpSpread1.Sheets(0).ColumnHeader.Columns(1).Label = "West"FpSpread1.Sheets(0).ColumnHeader.Columns(2).Label = "East"FpSpread1.Sheets(0).ColumnHeader.Columns(3).Label = "West"FpSpread1.Sheets(0).ColumnHeader.Columns(4).Label = "East"FpSpread1.Sheets(0).ColumnHeader.Columns(5).Label = "West"FpSpread1.Sheets(0).ColumnHeader.Columns(6).Label = "East"FpSpread1.Sheets(0).ColumnHeader.Columns(7).Label = "West"FpSpread1.Sheets(0).ColumnHeader.Cells(0,0).Text = "Fiscal Year 2004"FpSpread1.Sheets(0).ColumnHeader.Cells(1,0).Text = "1st Quarter"FpSpread1.Sheets(0).ColumnHeader.Cells(1,2).Text = "2nd Quarter"FpSpread1.Sheets(0).ColumnHeader.Cells(1,4).Text = "3rd Quarter"FpSpread1.Sheets(0).ColumnHeader.Cells(1,6).Text = "4th Quarter"’ Set the row header so that the label displays.FpSpread1.Sheets(0).RowHeader.Columns(0).Width = 45FpSpread1.Sheets(0).RowHeader.Cells(0,0).Text = "Branch #"

Spread Windows Forms Developer’s Guide 81

Copyright © GrapeCity, inc. All rights reserved.

Page 83: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttodisplaymultipleheaderrowsorcolumns.2. Inthepropertieslist,intheAppearancecategory,double-clicktheColumnHeaderorRowHeaderproperty

todisplaythepropertiesforthecolumnorrowheader.3. SettheRowCountpropertytothenumberorrowsyouwantinthecolumnheaderortheColumnCount

propertytothenumberofcolumnsyouwantintherowheader.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Showing or Hiding Headers

Bydefault,Spreaddisplayscolumnheadersandrowheaders.Ifyouprefer,youcanturnthemoff,andhidefromviewtherowheadersorcolumnheadersorboth.Thefollowingfigureshowsasheetthatdisplaysonlycolumnheadersandhidestherowheaders.

Ifthesheethasmultipleheaders,usingtheseinstructionstohidetheheadershidesallheaderrowsorheadercolumnsorboth.Ifyouwanttohidespecificrowsorcolumnswithinaheader,youmustspecifytheroworcolumn.Formoredetailsonhidingspecificrowsorcolumns,refertoShowingorHidingaRoworColumn.

Thedisplayofheadersisdonebysimplysettingavisiblepropertyoftheheader.Thiscanbedoneincodewithanyoftheseproperties:

RowHeader('RowHeaderClass'intheon-linedocumentation)classVisible('VisibleProperty'intheon-linedocumentation)propertyColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classVisible('VisibleProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)classRowHeaderVisible('RowHeaderVisibleProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)classColumnHeaderVisible('ColumnHeaderVisibleProperty'intheon-linedocumentation)property

Alternatively,youcancustomizetheheadersbyprovidingcustomtextorheaderswithmultiplecolumnsorrows,asexplainedinCustomizingtheDefaultHeaderLabelsandCreatingaHeaderwithMultipleRowsorColumns.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 82

Copyright © GrapeCity, inc. All rights reserved.

Page 84: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. Clickthesheetforwhichyouwanttochangetheheaderdisplay.5. SettheColumnHeaderVisibleorRowHeaderVisiblepropertytofalsetoturnoffthedisplayoftheheader.6. ClickOKtoclosetheeditor.

UsingaShortcut

SettheColumnHeaderVisible('ColumnHeaderVisibleProperty'intheon-linedocumentation)orRowHeaderVisible('RowHeaderVisibleProperty'intheon-linedocumentation)propertyforaSheetsobjectortheVisible('VisibleProperty'intheon-linedocumentation)propertyoftheColumnHeaderorRowHeaderobject.

Example

Thisexampleturnsoffthedisplayofthecolumnheader.Youcanuseeitherlineofcode.

C#// Turn off the display of column headers.fpSpread1.Sheets[0].ColumnHeaderVisible = false;fpSpread1.Sheets[0].ColumnHeader.Visible = false;

VB' Turn off the display of column headers.FpSpread1.Sheets(0).ColumnHeaderVisible = FalseFpSpread1.Sheets(0).ColumnHeader.Visible = False

UsingCode

1. CreateanewSheetView('SheetViewClass'intheon-linedocumentation)object.2. SettheSheetView('SheetViewClass'intheon-linedocumentation)objectColumnHeaderVisible('ColumnHeaderVisibleProperty'intheon-linedocumentation)orRowHeaderVisible('RowHeaderVisibleProperty'intheon-linedocumentation)propertytofalse.

3. SetthesheetequaltotheSheetView('SheetViewClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplecodesetsthefirstsheettonotdisplaycolumnheaders.

C#// Create a new sheet.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();newsheet.ColumnHeaderVisible = false;// Set first sheet equal to SheetView object.fpSpread1.Sheets[0] = newsheet;

VB' Create a new sheet.Dim newsheet As New FarPoint.Win.Spread.SheetView()newsheet.ColumnHeaderVisible = False' Set first sheet equal to SheetView object.FpSpread1.Sheets(0) = newsheet

Spread Windows Forms Developer’s Guide 83

Copyright © GrapeCity, inc. All rights reserved.

Page 85: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttoturnoffheaderdisplay.2. Inthepropertieslist,intheAppearancecategory,double-clicktheColumnHeaderorRowHeaderproperty

todisplaythepropertiesforthecolumnorrowheader.3. SettheVisiblepropertytoFalsetoturnofftheheaderdisplay.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Working with Cells

Whenyouworkwithcellsinthedataareaofthespreadsheet,youcanworkwiththeobjectsusingtheshortcutobjectsincode(Cell('CellClass'intheon-linedocumentation)andCells('CellsClass'intheon-linedocumentation)classes),oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.

Thesetasksrelatetoworkingwithcellsinthedataareaofthespreadsheet:

WorkingwiththeActiveCellCreatingaRangeofCells

Note:Theword"appearance"isusedtomeanthegenerallookofthecell,notjustthesettingsintheAppearanceclass,whichcontainsonlyafewsettingsandisusedfortheappearanceofseveralpartsoftheinterface.MostoftheappearancesettingsforacellareintheStyleInfoclass.

Settingsappliedtoaparticularcelloverridethesettingsthataresetatthecolumnorrowlevel.RefertoObjectParentage.

Othercell-levelappearancesettingsaresetbythecelltype.Formoreinformationonsettingsrelatedtocelltypes,refertoCustomizingInteractionwithCellTypes.YoucaneditpropertiesoftheCellsclassesinthePropertieswindow(inSpreadDesignerorinVisualStudio.NET).FormoreinformationontheCells,Columns,andRowsEditorthatisavailablefromthePropertieswindow,refertotheexplanationofthiseditorintheSpreadDesignerGuide(on-linedocumentation).

ForinformationoncustomizingtheappearanceofcellsusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Working with the Active Cell

Theactivecellisthecellthatcurrentlyreceivesanyuserinteraction.Theactivecellisthesinglecellthathaskeyboardfocus.Thereisalwaysanactivecell.Usually,theactivecelldisplayssomeindicationthatitisinfocus.

YoucanspecifytheactivecellprogrammaticallyusingtheSetActiveCell('SetActiveCellMethod'intheon-linedocumentation)methodoftheSheetView('SheetViewClass'intheon-linedocumentation)class.YoucanalsousetheActiveCell('ActiveCellProperty'intheon-linedocumentation)propertytofindtheactivecellcoordinates.

TheactivecellisstoredintheActiveRowIndex('ActiveRowIndexProperty'intheon-linedocumentation)andActiveColumnIndex('ActiveColumnIndexProperty'intheon-linedocumentation)propertiesintheSheetViewclass.TheLeaveCell('LeaveCellEvent'intheon-linedocumentation)eventisraisedanytimetheactivecellchanges.

Youcanchangethefocusindicator;formoreinformation,refertoCustomizingtheFocusIndicatorforaCell.

Thecellselectionisoneormorecellsthathavebeenhighlightedbytheuserorapplication.Atanygiventime,theremayormaynotbeacellselectionpresent.Thecellselection(ifpresent)isstoredintheselectionmodelinsidetheSheetViewclass.TheChanged('ChangedEvent'intheon-linedocumentation)event(intheselectionmodel)israisedanytimethecellselectionchanges.

Spread Windows Forms Developer’s Guide 84

Copyright © GrapeCity, inc. All rights reserved.

Page 86: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SpreadWindowsFormshastwoimplementationsofselectioncoloring.WhentheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)propertyissettoSelectionColors,thecellispaintedusingselectioncolors(thatis,bothSelectionBackColorandSelectionForeColor).WhentheSelectionStylepropertyissettoSelectionRenderer(whichisthedefault),thecellispaintedusingnormalcoloringandthenoverpaintedwiththeSelectionRenderer.ThedefaultSelectionRendererusesasemi-transparentversionofthesystem'sselectioncolor.

InRowMode,whichisanoperationmodewhereonlyrowscanbeselected,thereisanactivecell.Theactiverowispaintedsimilartoaselectedrow.

SpreadWindowsFormsusesapaintingschemesimilartoExcel.Ifthecellistheactivecellthenthecellispaintedusingnormalcoloringandafocusbox.Ifthecellisselectedthenthecellispaintedusingselectioncoloring,orelsethecellispaintedusingnormalcoloring.

ThereisadifferentpaintingschemeinOpenOffice.Ifthecellisboththeactivecellandaselectedcellthenthecellispaintedusingselectioncoloringandafocusbox.SpreadWindowsFormsdoesnotsupportOpenOffice'spaintingscheme.

Youcanchangewhatcanbeselectedbytheuser.Formoreinformation,refertoSpecifyingWhattheUserCanSelect.Youcanalsocustomizehowtheselectionappears.Formoreinformation,refertoCustomizingtheSelectionAppearance.

UsingaShortcut

YoucanuseActiveCell('ActiveCellProperty'intheon-linedocumentation)asashortcutobjectfortheactivecellwhenspecifyingpropertiesofthatcell.UsetheSetActiveCell('SetActiveCellMethod'intheon-linedocumentation)tosettheactivecell.

Example

Settheactivecellanddonotclearpreviouslyselectedcells.

C#fpSpread1.ActiveSheet.SetActiveCell(2, 2, false);

VBFpSpread1.ActiveSheet.SetActiveCell(2, 2, False)

Creating a Range of Cells

Youcancreatearangeofcellstoallowyoutodefinepropertiesandbehaviorsforthosecells.Arangemaybeanysetofcells.

Tofillrangesusingdrag-and-dropordrag-and-fillactions,refertoUsingDragOperationstoFillCells.

UsingCode

1. DefinearangeofcellsusingtheCell('CellClass'intheon-linedocumentation)object.2. SetpropertiesfortherangesuchastheNote('NoteProperty'intheon-linedocumentation)property.

Example

ThisexamplecodesetstheNote('NoteProperty'intheon-linedocumentation)propertyforarangeofCell('CellClass'intheon-linedocumentation)objects.

C#

Spread Windows Forms Developer’s Guide 85

Copyright © GrapeCity, inc. All rights reserved.

Page 87: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.Cell range1;range1 = fpSpread1.ActiveSheet.Cells[1, 1, 3, 3];range1.Value = "Value Here";range1.Note = "This is the note that describes the value.";

VBDim range1 As FarPoint.Win.Spread.Cellrange1 = fpSpread1.ActiveSheet.Cells(1, 1, 3, 3)range1.Value = "Value Here"range1.Note = "This is the note that describes the value."

UsingtheSpreadDesigner

IntheCell,Column,orRoweditorandintheSpreadDesigner,selectthecellsthatyouwanttobeintherange.Propertiesyousetarethenappliedtothosecells.

Spread Windows Forms Developer’s Guide 86

Copyright © GrapeCity, inc. All rights reserved.

Page 88: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Understanding the Underlying Models

TheSpreadcomponentisbasedonasetofunderlyingmodels:classesthatprovidemostofthefeaturesforthecomponent.Youcanworkdirectlywiththesemodels,oryoucanworkwiththeSpreadDesignerorshortcutobjects.WhenyouperformtasksusingtheSpreadDesignerorshortcutobjects,thetasksactuallyaffectthemodelsthemselves.

Ifyouwanttoprovideextensivecustomizationsforthecomponent,increaseefficiency,orcreateatemplatetousewithinyourworkgroup,youwillprobablywanttocustomizetheSpreadmodels.

ConsultthefollowingtopicsforlistsoftheSpreadmodelsandmoreinformationaboutthemodelclasses.

Thesetopicscanhelpyoucustomizethecomponentusingmodels:

UnderstandingtheTypesofSheetModelsUnderstandingtheSheetModelClassesandInterfacesFindingMoreDetailsontheSheetModelsCreatingaCustomSheetModelUnderstandingtheOptionalInterfaces

Understanding the Types of Sheet Models

TheSpreadcomponentmodelsareillustratedconceptuallyinthefollowingdiagram:

Asshowninthefigure,thedataareaofthespreadsheethasitsownsetofmodels,andtherowheadersandcolumnheadershavemodelsassignedtoeachofthem.Finally,thesheetcornerhasitsownsetofmodels.

Asthediagramillustrates,itcanbeusefultothinkofthesheet(SheetViewobject)asacompositeofthefiveunderlyingmodels.

Axis:TheAxismodelhandleseverythingtodowiththeColumnsandRows(forexample,thecolumnwidth,rowheight,andwhetheraroworcolumnisvisible).Data:TheDatamodelhandleseverythingtodowiththedata(forexample,thevalue,theformula,andanyoptionalnotesortagsinacell)andcontainsthedatainthesheet.Selection:TheSelectionmodelhandlesanycellrangeselectionsthataremade.Span:TheSpanmodelhandlesanyspannedcells.Style:TheStylemodelhandlestheappearancesettingsforthecells(forexample,thebackgroundcolor,thefont,andthecelltype).

YoucandomanytaskswithouteverusingthemodelsbyusingtheSpreadDesignerorpropertiesoftheshortcutobjects(suchasCells,Columns,andRows).Sincesheetmodelsarethebasisforalltheshortcutobjects,usingmodelsisgenerallyfasterthanusingshortcutobjects.Forexample,codeusingtheshortcutobjecttosetavalue:

FpSpread1.Sheets(0).Cells(0,0).Value = "Test"

wouldbeequivalenttousingtheunderlyingdatamodelmethod:

FpSpread1.Sheets(0).DataModel.SetValue(FpSpread1.Sheets(0). GetModelRowFromViewRow(0), FpSpread1.Sheets(0). GetModelColumnFromViewColumn(0), "Test")

Thesheetmodelscorrespondtothebasisofalltheobjectsandsettingsofaparticularsheet.Eachsheethasitsownsetofmodels.IfyouhavemultiplesheetsinyourSpreadcomponent,theneachsheethasitsownsetofmodels.

Therearemanyinterfacesinvolvedinthemodels.Eachmodelclassimplementsanumberofinterfaces,andeachmodelhasone"model"interfacewhichmustbeimplementedtomakeitavalidimplementationforthatparticularmodel.Allreferencestothemodelclassesarethroughtheinterfaces,andnoassumptionsaremadeastowhatinterfacesareimplementedoneachmodel(exceptforthe"model"interfacewhichmustbepresent).Ifthemodelclassdoesnotimplementaparticularinterface,thenthatfunctionalityissimplydisabledinthesheet(thatis,ifIDataSourceSupportisnotimplementbySheetView.Models.Data,thentheDataSourceandDataMemberpropertiesarenotfunctional).Forcompletelistsoftheseinterfaces,youcanlookuptheoverviewforthedefaultmodelclassesintheAssemblyReference(on-linedocumentation).

Understanding the Sheet Model Classes and Interfaces

Thefollowingtableliststhemodelsandtheirassociatedclassesandinterfaces.

Sheet ClassesandInterface Description

Spread Windows Forms Developer’s Guide 87

Copyright © GrapeCity, inc. All rights reserved.

Page 89: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ModelAxismodel

BaseSheetAxisModel('BaseSheetAxisModelClass'intheon-linedocumentation)

DefaultSheetAxisModel('DefaultSheetAxisModelClass'intheon-linedocumentation)

ISheetAxisModel('ISheetAxisModelInterface'intheon-linedocumentation)

Basisforhowthesheetofcellsisstructuredintermsofrowsandcolumns.Formoreinformation,seeUnderstandingtheAxisModel.

Datamodel

BaseSheetDataModel('BaseSheetDataModelClass'intheon-linedocumentation)

DefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)

ISheetDataModel('ISheetDataModelInterface'intheon-linedocumentation)

Basisforthemanipulationofdatainthecellsinthesheet.Formoreinformation,seeUnderstandingtheDataModel.

Selectionmodel

BaseSheetSelectionModel('BaseSheetSelectionModelClass'intheon-linedocumentation)

DefaultSheetSelectionModel('DefaultSheetSelectionModelClass'intheon-linedocumentation)

ISheetSelectionModel('ISheetSelectionModelInterface'intheon-linedocumentation)

Basisforthebehaviorofandinteractionofselectedcellsinthesheet.Formoreinformation,seeUnderstandingtheSelectionModel.

Spanmodel

BaseSheetSpanModel('BaseSheetSpanModelClass'intheon-linedocumentation)

DefaultSheetSpanModel('DefaultSheetSpanModelClass'intheon-linedocumentation)

ISheetSpanModel('ISheetSpanModelInterface'intheon-linedocumentation)

Basisforhowcellsinthesheetarespanned.Formoreinformation,seeUnderstandingtheSpanModel.

Stylemodel

BaseSheetStyleModel('BaseSheetStyleModelClass'intheon-linedocumentation)

DefaultSheetStyleModel('DefaultSheetStyleModelClass'intheon-linedocumentation)

ISheetStyleModel('ISheetStyleModelInterface'intheon-linedocumentation)

Basisfortheappearanceofthecellsinthesheet.Formoreinformation,seeUnderstandingtheStyleModel.

Spread Windows Forms Developer’s Guide 88

Copyright © GrapeCity, inc. All rights reserved.

Page 90: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thesheet(SheetViewobject)isacompositeofthefiveunderlyingmodels(Axis,Data,Selection,Span,andStyle).TheAxismodelhandleseverythingtodowiththeColumnsandRows(forexample,thecolumnwidth,rowheight,andwhetheraroworcolumnisvisible).TheDatamodelhandleseverythingtodowiththedata(forexample,thevalue,theformula,andanyoptionalnotesortagsinacell)andcontainsthedatainthesheet.TheSelectionmodelhandlesanycellrangeselectionsthataremade,andSpanmodelshandlesanyspannedcells.TheStylemodelhandlestheappearancesettingsforthecells(forexample,thebackgroundcolor,thefont,andthecelltype).

Everythingyoudotothemodelisautomaticallyupdatedinthesheetandmostoftheaspectsofthesheetthatyoucanmodifyareupdatedinthemodel.ThisisalsotrueforCell,Row,andColumnobjectsettings,too.Mostoftheaspectschangedwiththeseobjectsautomaticallychangesthesettinginthecorrespondingsheetmodelandviceversa.Ifyouaddcolumnstothedatamodel,thentheyareaddedtothesheet.Thisistrue,evendowntotheparameters;forexampletherowandcolumnargumentsintheGetValueandSetValuemethodsforthedatamodelarethesameindexesasthatoftherowsandcolumnsinthesheetaslongasthesheetisnotsorted.

NoteverythingintheSpreadnamespaceisinthemodels.Forexample,thereareaspectsoftheoverallcomponent,forexample,thesheettabs,thesheetbackgroundcolor,andthegridlines,thatarenotinthemodels.Buttherelevantpiecesofinformationaboutagivencell,bothaboutthedatainthecellsandabouttheappearanceofthecells,areinthemodels.

Thedataareaofthespreadsheethasitsownsetofmodels,andtherowheadersandcolumnheadersareconsideredtwomoresuchgroupshavingmodelsassignedtoeachofthem,andthesheetcornerisanotherwithitsownsetofmodels.

Eachmodelhasabasemodelclass,adefaultmodelclass,andaninterface.

Thebasemodelisthebaseonwhichthedefaultmodeliscreatedandisforcreatingcustommodelsfromscratch.Thedefaultmodelisthemodelwithwhichyoumostlikelywilldevelop;thisprovidesthedefaultfeaturesthatthecomponentoffersandisusedforsmallcustomizationstothemodels.

Thebasemodelhasthefewestbuilt-infeatures,andthedefaultmodelextendsthebasemodel.Ifyouwanttoprovidedifferentfeaturesorcustomizethebehaviororappearanceofyourapplication,youcanextendthebasemodelstocreatenewclasses.Forexampleyoumaydothistocreateatemplatecomponentforallthedevelopersinyourorganization.Bycreatingyourownclassbasedononeofthebasemodels,youcancreatethecustomizedclassandprovideittoallthedeveloperstouse.Typically,ifyouareeditingthemodels,usethedefaultmodelclasses.Butifyouwanttocreateacustommodel(fromscratch),usethebasemodelclasses.

Eachdefaultmodelclasscontainstheimplementationoftheinterfaceforthatmodeltypeaswellasadditionaloptionalinterfaces.Mostofthefunctionality(thatis,formulas,databinding,XMLserialization,etc.)isoptionalinthemodelclass,andisimplementedinseparateinterfacesfromthemainmodelinterfaces(suchasISheetDataModel).Therefore,ifyouwanttoimplementyourownmodelclass,youcanpickandchoosewhichpiecesoffunctionalityyouhaveinyourmodel.

Itisimportantforthemodelstostayinsyncwitheachother,sothattherowcountandcolumncountisconsistentamongthemodelsmakingupthesheet.TheSheetViewobjectlistensfortheISheetDataModel.ChangeeventfromtheSheetView.DocumentModels.Dataproperty,andupdatestheothermodelsaccordinglywhentherowcountorcolumncountchangesduetoanyofthese:

directpropertysettingsfortheRowCountorColumnCountproperties,insert/deleterow/columnoperationsthroughtheIRangeSupportinterfacetheentiredatamodelbeingreplacedwithanewone

Ifthemodelsgetoutofsync,thenindexout-of-rangeexceptionscanbecausedbycodetryingtogetinformationaboutnonexistentrowsorcolumns.

Formoreinformationoncreatingacustommodelforasheet,refertoCreatingaCustomSheetModel.

Finding More Details on the Sheet Models

Thefollowingtopicslistadditionalinformationaboutthemodelsofasheet.

Spread Windows Forms Developer’s Guide 89

Copyright © GrapeCity, inc. All rights reserved.

Page 91: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UnderstandingtheDataModelUnderstandingtheAxisModelUnderstandingtheSelectionModelUnderstandingtheSpanModelUnderstandingtheStyleModel

Forgeneralinformationaboutthetypesofsheetmodels,refertoUnderstandingtheSheetModelClassesandInterfaces.

Understanding the Data Model

Thedatamodelincludesthecontentsofthecells,includingthevalueortheformulainacell,andthecellnotesorcelltags.ThisincludestheValuepropertiesforcellsinthedataareaofthespreadsheet,thedatabasepropertiesfordata-boundspreadsheets,andanythinghavingtodowiththecontentsinthecells.

YouarelikelytocustomizethedatamodelwhenworkingwithSpread.Thedatamodelimplementsmoreinterfaces,andmoreoptionalfunctionalitythroughit,thananyoftheothermodels.Also,ifyouwanttoimplementtheequivalenttotheunboundvirtualmodelfeatureoftheActiveXSpreadcontrol,forexample,youwillneedtocustomizethedatamodel.

Thefollowingtopicsprovidemoreinformationaboutthedatamodel:

DataModelObjectSettingandAddingtotheDataModelImplementedInterfacesBalanceofSpeedandPerformance

Formoredetails,refertotheBaseSheetDataModel('BaseSheetDataModelClass'intheon-linedocumentation)class,theDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)class,andtheISheetDataModel('ISheetDataModelInterface'intheon-linedocumentation)interface.

DataModelObject

Thedatamodelisanobjectthatsuppliesthecellvaluesbeingdisplayedinthesheet.Inmostcases,youcansimplyusethedefaultdatamodelthatiscreatedwhenthesheetiscreated.

Thedefaultdatamodel,DefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation),createsobjectstostorenotes,formulas,tags,andvalues,andthoseobjectsaredesignedtobalancememoryusageversusspeedbasedonhowbigthemodelisandhowsparsethedatainthemodelis.Ifyouarenotusingnotes,formulas,andtags,thenthecomponentdoesnotusemuchmemorybecausethedataisfairlysparse.Infact,thoseobjectsdonotallocateanymemoryfordatauntilitisactuallyneeded;therefore,aslongastherearenonotes,formulas,ortagssetinthemodel,memoryusageremainslow.

Thedefaultdatamodelcanbeusedinunboundmodeorboundmode.Inunboundmode,thedatamodelactssimilarlytoatwo-dimensionalarrayofcellvalues.Inboundmode,thedatamodelwrapsthesupplieddatasourceandifneededcansupplyadditionalsettingsnotavailablefromthedatasource,forexample,cellformulasandunboundrowsorcolumns.

SettingandAddingtotheDataModel

TheSetModelDataColumn('SetModelDataColumnMethod'intheon-linedocumentation)isdifferentfromAddColumn('AddColumnMethod'intheon-linedocumentation)inthatyoucanspecifywhichdatafieldyouwantboundtowhichcolumninthedatamodel.

Ifyouaddcolumnstothemodel,thentheyareaddedtothesheet.TherowandcolumnintheGetValue('GetValueMethod'intheon-linedocumentation)andSetValue('SetValueMethod'intheon-linedocumentation)methodsofthedatamodelhavethesameindexesasthatofthecolumnsinthesheetaslongasthesheetisnotsorted.Ifthesheet'srowsorcolumnsaresorted,thentheviewcoordinatesmustbemappedtothemodelcoordinateswiththeseSheetView.GetModelRowFromViewRow('GetModelRowFromViewRowMethod'intheon-linedocumentation)andSheetView.GetModelColumnFromViewColumn('GetModelColumnFromViewColumnMethod'intheon-linedocumentation)methods.

TheSheetView.GetValue('GetValueMethod'intheon-linedocumentation)andSheetView.SetValue('SetValueMethod'intheon-linedocumentation)methodsalwaysgetandsetthedatainthedatamodel.CallingthesemethodsisthesameascallingSheetView.Models.Data.GetValue('GetValueMethod'intheon-linedocumentation)andSheetView.Models.Data.SetValue('SetValueMethod'intheon-linedocumentation).TheCell.Value('ValueProperty'intheon-linedocumentation)propertyreturnsthevalueofthecellintheeditorcontrolifthecelliscurrentlyineditmodeinaSpreadViewcontainingtheSheetView.Thatvalueisnotupdatedtothedatamodeluntilthecellleaveseditmode;however,youcanmanuallyupdatethevalueinthedatamodelusingcode:

SheetView.SetValue(row, column, SheetView.Cells(row, column).Value)

ImplementedInterfaces

WhenthedatamodelimplementsIDataSourceSupport('IDataSourceSupportInterface'intheon-linedocumentation)anditisboundtoadatasource,theboundpartsofthedatamodelgetandsetdatadirectlyfromthedatasource.SomecolumnsinabounddatamodelcanbeunboundifcolumnsareaddedtothedatamodelwithAddColumns('AddColumnsMethod'intheon-linedocumentation)afteritisbound(IDataSourceSupport.IsColumnBound('IsColumnBoundMethod'intheon-linedocumentation)returnsFalseforthosemodelcolumnindexes),andthevaluesinthoseunboundcolumnsarestoredinthedatamodelratherthanthedatasource.

IfthedatamodelalsoimplementsIUnboundRowSupport('IUnboundRowSupportInterface'intheon-linedocumentation),thensomerowsinthedatamodelcanalsobeunbound,andthosevaluesarealsostoredinthedatamodelratherthanthedatasource.SuchrowscanbemadeintoboundrowsbycallingIUnboundRowSupport('IUnboundRowSupportInterface'intheon-linedocumentation).AddRowToDataSource('AddRowToDataSourceMethod'intheon-linedocumentation),andiftheautoFillparameterisspecifiedasTrue,thenthedataintheboundcolumnsinthatunboundrowwillbeaddedtothedatasourceinanewrecordorelement,assumingthatthedatasourcepermitsit(youwillgetanexceptionifitdoesnot),andtheunboundrowbecomesaboundrow.

Thedefaultdatamodelclass,DefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation),implementsalloftheseinterfaces,plusmanyothersrelatedtocalculation,hierarchy,andserialization.

Toseethedifferencebetweenthedefaultdatamodelandtheobjectsonthesheet,reviewthefollowingcodesnippets.ThesecodesnippetsbindthesheettoadatasourcecalledMyData.

FpSpread1.Sheets(0).DataSource = MyData.Tables(0)

Spread Windows Forms Developer’s Guide 90

Copyright © GrapeCity, inc. All rights reserved.

Page 92: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

and

Dim model As FarPoint.Win.Spread.Model.DefaultSheetDataModel = New FarPoint.Win.Spread.Model.DefaultSheetDataModel(MyData, strTable)

FpSpread1.Sheets(0).Models.Data = model

Inthefirstcodesnippet,theexistingdatamodelisusedandresizedtothedatasource;inthesecondsnippet,thedatamodelisreplacedwithanewoneandtheoldonediscarded.Theoutcomeisthesameinbothexamples,butthefirstexampleresultsintheolddatamodelgettinggarbagecollected.Generallyyoumightnotwanttoreplacethedatamodelunlessyouarecreatingyourowndatamodelclass.ThereisgenerallynoneedtoreplacethedatamodelwithanotherDefaultSheetDataModelsincethereisalreadyonetheretouse.

BalanceofSpeedandPerformance

IfyouderivefromDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)andusethatimplementationofGetValue('GetValueMethod'intheon-linedocumentation)andSetValue('SetValueMethod'intheon-linedocumentation)tostorethedata,thenitwillusetheSpreadimplementationofsparsearraysandmatricestobalancethememoryusagewiththeaccessspeed.Thisimplementationisdesignedtomakeitveryfasttocreateaverylargemodel(thatis,2billionrowsby2billioncolumns)andkeepitreasonablyfasttogetandsetvaluesintoit,untilthenumberofvaluesgetsverylarge(inwhichcaseyouwillstarttorunoutofmemoryanyway).

Incaseswherethemodelisverylargeand/orsparse(thatis,morethantwo-thirdsempty),accessspeedisslower(abinarysearchisrequired)andmemoryusageislower.Incaseswherethemodelisnotverylarge(lessthan32Krowsand/orcolumns)andnotsparse(morethanone-thirdfull),thentheaccessspeedisfaster(nobinarysearchrequired)andmemoryusageishigher.

YoucanrunsomesimpletestsbycreatingatestprojectwithSpreadonaform,andsettingtheColumnCount('ColumnCountProperty'intheon-linedocumentation)andRowCount('RowCountProperty'intheon-linedocumentation)forthesheettoverylargenumbers,andyoushouldnotseeanydelayatallbecausethememoryallocatedisbasedontheactualnumberofdataitems.Ifyoustarttofillthesheetwithlotsandlotsofdata,thenyouwillnoticedelaysafterawhile,especiallywhenmemorygetslowandthesystemstartsusingthepagefiletoswapvirtualmemory(itwilltakeaverylargequantityofdataforthattohappenthough).

Understanding the Axis Model

Theaxismodelincludesthemethodsthatmanagerow-andcolumn-relatedsettingsofthespreadsheet(howtherowsandcolumnsofcellsareorientedonthesheet).Theaxismodelincludesmanyoftheaxis-relatedsettingsinthefollowingshortcutobjects:

Column,ColumnsRow,RowsAlternatingRow,AlternatingRows

Thesesettingsinclude:

rowheightcolumnwidthrowvisiblecolumnvisible

Tousetheunderlyingaxismodel,usethemethodsoftheaxismodel.TheseincludetheSetSize('SetSizeMethod'intheon-linedocumentation)method,forsettingtherowheightorcolumnwidth,andtheSetVisible('SetVisibleMethod'intheon-linedocumentation)methodforsettingtheroworcolumnvisibleproperties.Thereareothermethods,too,suchasSetMergePolicy('SetMergePolicyMethod'intheon-linedocumentation),whichsetspecificpropertiesoftheroworcolumn,inthiscasewhethercellscanbeautomaticallymergedwhentheircontentisidentical.RefertotheDefaultSheetAxisModel('DefaultSheetAxisModelClass'intheon-linedocumentation)classformoreinformationontheaxismodelingeneralandthemethodsinparticular.

Asanexampleofhowyoucouldusetheaxismodeltoimproveperformanceofaspreadsheet,consideraspreadsheetwithaverylargenumberofrows.Ifyouareresizingtherowsbasedonthedata,thenyoumightwanttocreateacustomaxismodelforSheetView.Models.RowAxis('RowAxisProperty'intheon-linedocumentation)toreturnthisvalue.Todoso,createaclassderivedfromDefaultSheetAxisModel('DefaultSheetAxisModelClass'intheon-linedocumentation)thattakesareferencetotheSheetViewinitsconstructorandstoresitinafield.ThenoverridetheGetSize('GetSizeMethod'intheon-linedocumentation)methodtocallGetPreferredRowHeight('GetPreferredRowHeightMethod'intheon-linedocumentation)(intheSheetView)fortherowindex.YoucanalsooverridetheGetResizable('GetResizableMethod'intheon-linedocumentation)methodtopreventtheuserfromtryingtochangetherowheightsmanually,whichwillnotworksinceGetSize('GetSizeMethod'intheon-linedocumentation)isalwaysreturningthepreferredheight.

Thefollowingcodeprovidesanexamplethatmakeseachrowthreetimeswiderthanthedefaultwidth.

C#

Spread Windows Forms Developer’s Guide 91

Copyright © GrapeCity, inc. All rights reserved.

Page 93: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

public class MyRowAxisModel : FarPoint.Web.Spread.Model.DefaultSheetAxisModel{ public overrides int GetSize(int index) { if ( index % 2 == 1 ) return 60; else return 20; }}

VBPublic Class MyRowAxisModel Inherits FarPoint.Web.Spread.Model.DefaultSheetAxisModel Public Overrides Function GetSize(index As Integer) As Integer If index \ 2 = 1 Then Return 60 Else Return 20 End If End FunctionEnd Class

Formoredetails,refertotheBaseSheetAxisModel('BaseSheetAxisModelClass'intheon-linedocumentation)class,theDefaultSheetAxisModel('DefaultSheetAxisModelClass'intheon-linedocumentation)class,andtheISheetAxisModel('ISheetAxisModelInterface'intheon-linedocumentation)interface.

Understanding the Selection Model

Theselectionmodelincludesanyofthesettingsrelatedtorangesofselectedcells.Theselectionmodelincludesmethodssuchascountingthenumberofselectedranges,addingandremovingselections,clearingselections,andfindingwhetheracellisselected.

Tousetheunderlyingselectionmodel,usethemethodsoftheselectionmodel.TheseincludetheSetSelection('SetSelectionMethod'intheon-linedocumentation)method,forsettingcellsasselected,andtheAddSelection('AddSelectionMethod'intheon-linedocumentation),ClearSelection('ClearSelectionMethod'intheon-linedocumentation),andRemoveSelection('RemoveSelectionMethod'intheon-linedocumentation)methodsforadding,clearing,andremovingselectedrangesfromthesheet.RefertotheDefaultSheetSelectionModel('DefaultSheetSelectionModelClass'intheon-linedocumentation)classformoreinformationontheselectionmodelingeneralandthemethodsinparticular.

Thedefaultimplementationoftheselectionmodel(DefaultSheetSelectionModel('DefaultSheetSelectionModelClass'intheon-linedocumentation))handlestheselectionofcellsandrangesinthesheetandstorestheactualcellandrangecoordinatesforeachselection.TheSpreadViewobjecthandlestheuserinterfacefortheSheetViewobjectandupdatestheselectionmodelfromvariouseventhandlers.

Theselectionmodelhandlestheselectiondata,includingcomputingtherangebeingselectedbasedonthecellclicked(theanchorcell)andthecellunderthemousepointer.TheSheetView.GetSelection('GetSelectionMethod'intheon-linedocumentation)methodandSheetView.SelectionCount('SelectionCountProperty'intheon-linedocumentation)propertywraptheISheetSelectionModel('ISheetSelectionModelInterface'intheon-linedocumentation)indexerandCount('CountProperty'intheon-linedocumentation)property.Whenthereisnoselectioninthemodel,thecountis0andGetSelection('GetSelectionMethod'intheon-linedocumentation)returnsnull.

Someeventscausetheanchorcellintheselectionmodeltobeset(forexample,leftmousebuttondownonacell)sotheselectionmodelhastheactivecellasaselection.IfyouentereditmodethencancelitbypressingtheEscapekey(Esc),orifyouusethekeyboardtomovetheactivecellaroundinsteadofthemouse,thentheselectionmodelmightbe

Spread Windows Forms Developer’s Guide 92

Copyright © GrapeCity, inc. All rights reserved.

Page 94: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

cleared.YoushouldchecktheSelectionCount('SelectionCountProperty'intheon-linedocumentation)beforeusingGetSelection('GetSelectionMethod'intheon-linedocumentation),andinthecasewhereitreturns0,usetheActiveColumnIndex('ActiveColumnIndexProperty'intheon-linedocumentation)andActiveRowIndex('ActiveRowIndexProperty'intheon-linedocumentation)properties.

Theselectionmodelissavedtotheviewstateonlyifitcontainsatleastoneselection.

Formoredetails,refertotheBaseSheetSelectionModel('BaseSheetSelectionModelClass'intheon-linedocumentation)class,theDefaultSheetSelectionModel('DefaultSheetSelectionModelClass'intheon-linedocumentation)class,andtheISheetSelectionModel('ISheetSelectionModelInterface'intheon-linedocumentation)interface.

Formoreinformationonworkingwithselectionsprogrammatically,refertoWorkingwithSelections.

Understanding the Span Model

Thespanmodelincludestheobjectsneededtohandlecellspansandautomaticmergingofcells.RefertotheCell('CellClass'intheon-linedocumentation)class,ColumnSpan('ColumnSpanProperty'intheon-linedocumentation)andRowSpan('RowSpanProperty'intheon-linedocumentation)properties.

Tousetheunderlyingspanmodel,usetheAdd('AddMethod'intheon-linedocumentation),Clear('ClearMethod'intheon-linedocumentation),andRemove('RemoveMethod'intheon-linedocumentation)methodsofthespanmodel.RefertotheDefaultSheetSpanModel('DefaultSheetSpanModelClass'intheon-linedocumentation)classformoreinformationonthespanmodelingeneralandthemethodsinparticular.

Thedefaultimplementationofthespanmodel(DefaultSheetSpanModel('DefaultSheetSpanModelClass'intheon-linedocumentation))usesanarraytostoredthecellspans.Ifthereareamoderatenumberofspansinthesheet(forexample,athousandorless)thenthedefaultimplementationworksfine.Ifthereareaverylargenumberofspansinthesheet(forexample,ahundredthousandormore)thenthedefaultimplementationslowsdramatically.Inscenarioswhereyouhaveaverylargenumberofspansthatrepeatonaregularinterval,youshouldconsiderwritingacustomspanmodel.Bywritingacustomspanmodel,youcansignificantlyincreasethespeedanddecreasethememoryusage.

Formoredetails,refertotheBaseSheetSpanModel('BaseSheetSpanModelClass'intheon-linedocumentation)class,theDefaultSheetSpanModel('DefaultSheetSpanModelClass'intheon-linedocumentation)class,andtheISheetSpanModel('ISheetSpanModelInterface'intheon-linedocumentation)interface.

Understanding the Style Model

Thestylemodelincludesappearancesettingswhichmightbe:

SetintheSpreadDesignerSetaspropertiesinthePropertiesListInheritedfromacustomskinforawholesheetorfromacustomstyleforindividualcells

Formoreinformationonappearancesettingsforasheet,refertoCreatingaCustomSkinforaSheetandApplyingaSkintoaSheet.Formoreinformationonappearancesettingsforacell,refertoCreatingandApplyingaStyleforCells.

Moreinformationaboutthestylemodelisprovidedinthefollowingtopics:

SettingsandObjectsforStyleOrderofInheritanceofStylesCompositedorInheritedStylesStyleNameFormatObjects

Spread Windows Forms Developer’s Guide 93

Copyright © GrapeCity, inc. All rights reserved.

Page 95: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thestylemodelincludesthecelltypesaswell.Thevariouscelltypesdeterminetheappearanceofacellinseveralways.Formoreinformationaboutthevariouscelltypes,refertoCustomizingInteractionwithCellTypes.

RefertotheDefaultSheetStyleModel('DefaultSheetStyleModelClass'intheon-linedocumentation)classformoreinformationonthestylemodelingeneralandthemethodsinparticular.

Formoredetails,refertotheBaseSheetStyleModel('BaseSheetStyleModelClass'intheon-linedocumentation)class,theDefaultSheetStyleModel('DefaultSheetStyleModelClass'intheon-linedocumentation)class,andtheISheetStyleModel('ISheetStyleModelInterface'intheon-linedocumentation)interface.

SettingsandObjectsforStyle

TheappearancesettingsmaybesetfromanyofthefollowingclassesintheFarPointSpreadnamespacethatrepresentshortcutobjects:

Cell('CellClass'intheon-linedocumentation)Column('ColumnClass'intheon-linedocumentation)Row('RowClass'intheon-linedocumentation)AlternatingRow('AlternatingRowClass'intheon-linedocumentation)

TheycanalsobesetfromanyoftheseclassesintheFarPointSpreadnamespacethataffectstyle:

Appearance('AppearanceClass'intheon-linedocumentation)DefaultSkins('DefaultSkinsClass'intheon-linedocumentation)NamedStyle('NamedStyleClass'intheon-linedocumentation)SheetSkin('SheetSkinClass'intheon-linedocumentation)

PropertiesthatcorrespondtoStyleInfo('StyleInfoClass'intheon-linedocumentation)propertiesarestoredinthestylemodelthroughtheISheetStyleModel('ISheetStyleModelInterface'intheon-linedocumentation)interface.Stylepropertiescanbesetforacell,row(columnindex-1),column(rowindex-1),ortheentiremodel(columnandrowindex-1).Propertiesthatarenotsetinacellareinheritedfromtherowsetting,orthecolumnsettingiftherowhasnosetting,orthemodeldefaultifthecolumnalsohasnosetting.

ThedefaultisexposedthroughtheDefaultStyleproperty(SheetView('SheetViewClass'intheon-linedocumentation).DefaultStyle,ColumnHeader('ColumnHeaderClass'intheon-linedocumentation).DefaultStyle,andRowHeader('RowHeaderClass'intheon-linedocumentation).DefaultStyle).IfyousetorgetastylepropertyusingRows.DefaultorRows[-1]orColumns.DefaultorColumns[-1],thenyouwillactuallybesettingorgettingtheDefaultStyleproperty.ThisisbecauseColumnandRowalwaysuserowindex-1andcolumnindex-1whenaccessingthestylemodel,respectively,andsousingacolumnindexorarowindexof-1willbesettingorgettingthemodeldefault.

OrderofInheritanceofStyles

TheorderofinheritanceisdescribedinObjectParentage.Hereisalistofthestylepropertiesthatareincludedinthestylemodel,whicharebasicallythemembersoftheStyleInfo('StyleInfoClass'intheon-linedocumentation)classandaffecttheappearanceorstyleofacell:

BackColor('BackColorProperty'intheon-linedocumentation)Border('BorderProperty'intheon-linedocumentation)CellType('CellTypeProperty'intheon-linedocumentation)Editor('EditorProperty'intheon-linedocumentation)Font('FontProperty'intheon-linedocumentation)ForeColor('ForeColorProperty'intheon-linedocumentation)Formatter('FormatterProperty'intheon-linedocumentation)HorizontalAlignment('HorizontalAlignmentProperty'intheon-linedocumentation)Locked('LockedProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 94

Copyright © GrapeCity, inc. All rights reserved.

Page 96: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Renderer('RendererProperty'intheon-linedocumentation)VerticalAlignment('VerticalAlignmentProperty'intheon-linedocumentation)

CompositedorInheritedStyles

ThestylepropertiesforacellcanbecompositedormergedfromtheCell('CellClass'intheon-linedocumentation),Row('RowClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),SheetView('SheetViewClass'intheon-linedocumentation),andparentNamedStyle('NamedStyleClass'intheon-linedocumentation)objects.

Tousetheunderlyingstylemodel,usethemethodsofthestylemodelforthatsheet,specificallytheGetDirectInfo('GetDirectInfoMethod'intheon-linedocumentation)methodandSetDirectInfo('SetDirectInfoMethod'intheon-linedocumentation)method,andthesettingsintheStyleInfo('StyleInfoClass'intheon-linedocumentation)object."Direct"inthestylemodelmeans"notcomposite"or"notinherited."SetDirectInfo('SetDirectInfoMethod'intheon-linedocumentation)setsthestylepropertiesthathavebeensetforthespecifiedcell,column,orrowdirectlyanddoesnotreturnanysettingsthataresetforhigherlevels(suchastheentiremodel),whileGetCompositeInfo('GetCompositeInfoMethod'intheon-linedocumentation)givesthestyleproperties"composed"or"merged"intooneStyleInfo('StyleInfoClass'intheon-linedocumentation)objectthatcontainsallthesettingsthatareusedtopaintandeditthecell,column,orrow,includinganyinheritedsettings.

StyleName

SettingStyleNamereplacesthestyleinthestylemodelwiththeNamedStyle('NamedStyleClass'intheon-linedocumentation)havingthespecifiedname.ReplacingthestylewiththeNamedStylechangesthesettingsofallofthestyle-relatedproperties,includingParentStyleName(whichwrapsStyleInfo.Parent('ParentProperty'intheon-linedocumentation)).Anyprevioussettingforstyle-relatedpropertieslikeBackColor,Font,Border,orParentStyleNameareoverwrittenwhenyousetStyleName.AllofthesepropertiesarealreadysetintheNamedStyle('NamedStyleClass'intheon-linedocumentation)object;thecomponent’spropertiesarenotchangedjustbecauseyouassignedtheNamedStyletoacell,column,roworalternatingrow.Thenamedstyleisexpectedtoalreadybesetupthewayyouwantittobe.IfthisincludesthenamedstylehavingaparentNamedStyle,thenyoushouldhavethatparentsetalreadywhenyouassignitwithStyleName,oryoushouldassignitseparatelyusingareferencetotheNamedStyleobject(thishasthesameeffectassettingParentStyleNameaftersettingStyleName).

KeepinmindthatafteryouhavesetStyleName,allcellswhereyouhaveusedthatnamearesharingthesameNamedStyle('NamedStyleClass'intheon-linedocumentation)object,andanychangesthatyoumaketooneofthosecellswillalsochangealloftheothercellssharingthesamenamedstyle.

ThefollowingcodecreatestwoNamedStyle('NamedStyleClass'intheon-linedocumentation)objectswithaparent-childrelationship,thensetssomepropertiesonthestylesandaddsthemtotheNamedStyleCollectionintheSpreadcomponent.

C#NamedStyle test_parent = new NamedStyle("test_parent");test_parent.BackColor = Color.Red;test.ForeColor = Color.White;FpSpread1.NamedStyles.AddRange(new NamedStyle[] {test_parent, test});FpSpread1.Sheets(0).Columns(0).BackColor = Color.Blue;FpSpread1.Sheets(0).Rows(0).CellType = new NumberCellType();FpSpread1.Sheets(0).Cells(0,0).StyleName = "test";FpSpread1.Sheets(0).Cells(1,0).StyleName = "test";

VBtest_parent = new NamedStyle("test_parent")test_parent.BackColor = Color.Redtest.ForeColor = Color.WhiteFpSpread1.NamedStyles.AddRange(New NamedStyle() {test_parent, test})

Spread Windows Forms Developer’s Guide 95

Copyright © GrapeCity, inc. All rights reserved.

Page 97: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets[0].Columns[0].BackColor = Color.BlueFpSpread1.Sheets[0].Rows[0].CellType = New NumberCellType()FpSpread1.Sheets[0].Cells[0,0].StyleName = "test"FpSpread1.Sheets[0].Cells[1,0].StyleName = "test"

Intheexample,thebackgroundcolorforthefirstcolumnissettoblueandthecelltypeforthefirstrowissettoNumber,andthefirstcellsinthefirsttworowsarebothsettousetheNamedStylenamed"test."Theresultisthatthecellsinthefirstcolumnareblue,exceptforthecellsinthefirsttworows,whichareredbecausethe"test"styleinheritstheredbackgroundcolorfromitsparentNamedStyle.Theparentstyleoverridestheinheritedsettingforthecolumn.

ThecelltypeforthefirstcellisNumber,sincethereiscelltypesetineitherNamedStyleobject.Thereisacelltypesetinthefirstrowwhichisinheritedbyallcellsintherow.ThecelltypeforthesecondcellisGeneralsincethereisnocelltypesettingforthecell,row,orcolumn.ThedefaultcelltypeforthesheetisGeneral.Formoreinformationoninheritanceofstylesettings,refertoObjectParentage.

FormatObjects

TheFormatInfostringsinasavedXMLfileareDateTimeFormatInfoorNumberFormatInfoobjectsthatstoretheformatofthedata.ThesearecreatedinthestylemodelwhenaGeneralcellisedited,ifthestylemodelimplementsIParseFormatSupport('IParseFormatSupportInterface'intheon-linedocumentation).Theseformatobjectsallowthecellstodisplaythedatainthesameformatthatwasusedtoenterit.

TheGeneralcelltypeparsesthestringintoanumberorDateTime,andgeneratestheIFormatProviderandformatstringnecessarytorenderthedataasitwasentered.IfyouuseTextCellTypeinsteadofGeneralCellType,thenitworksthesameastheEditcellsdidintheActiveXFarPointSpread,andnoFormatInfoisstoredinthestylemodel,butthedataenteredintothecellsisalwaystreatedastext.

Creating a Custom Sheet Model

Youcanuseasheetmodelasatemplateforanewcustommodel.Forexample,considermakingacustomdatamodel.UsingacustomdatamodelrequirescreatingaclassthatimplementsISheetDataModel('ISheetDataModelInterface'intheon-linedocumentation),thensettinganinstanceoftheclassintotheSheetView.Models.Data('DataProperty'intheon-linedocumentation)property.

ISheetDataModel('ISheetDataModelInterface'intheon-linedocumentation)istheonlyinterfacerequired,assumingthatyoudonotneedanyoftheoptionalinterfaces.Formoreinformationontheotherinterfaces,refertoUnderstandingtheOptionalInterfaces.

AlloftheoptionalinterfacesareimplementedbyDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation);therefore,ifyouwantanyoftheoptionalinterfacesimplementedinyourdatamodel,itmightbeeasiertosimplysubclassDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation).

Note:InBaseSheetDataModel('BaseSheetDataModelClass'intheon-linedocumentation),theChangedeventisalsoimplemented.

Inafewcases,youmightneedtocreateyourowncustomdatamodelforperformancereasons.Forexample,supposeyouwanttodisplayalargetableofcomputedvalues(suchasanadditionormultiplicationtable)thatconsistsofamillionrowsbytencolumns.Ifyouusedthedefaultsheetdatamodel,youwouldneedtocomputeandstorealltenmillionvalues,whichwouldbeconsumealotoftimeandmemory.

Instead,youmightwanttocreateyourowncustomdatamodel,asshowninthefollowingexample.

Example

C#for (r = 0; r < 1000000; r++)

Spread Windows Forms Developer’s Guide 96

Copyright © GrapeCity, inc. All rights reserved.

Page 98: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

for ( c = 0; c < 10; c++)spread.Sheets[0].Cells[r,c].Value = r + c;

Example

C#class ComputedDataModel : BaseSheetDataModel{ public override int RowCount { get { return 1000000; } } public override int ColumnCount { get { return 10; } } public override object GetValue(int row, int column) { return row + column; }}

Understanding the Optional Interfaces

Besidestheinterfacesthatarededicatedtoeachofthespecificmodels,therearealsooptionalinterfacesthatprovideadditionalsupportandmaybeusedwhenmakingcustommodels.Theseoptionalinterfacesandthecustomizationstheyallowaresummarizedinthistable:

OptionalInterface CustomizationsAllowedIArraySupport('IArraySupportInterface'intheon-linedocumentation)

Allowscustomizationofsupportforgettingandsettingarraysofvaluesinarangeofcells

IDataSourceSupport('IDataSourceSupportInterface'intheon-linedocumentation)

Allowscustomizationofdatabindingonasheet

IChildModelSupport('IChildModelSupportInterface'intheon-linedocumentation)

Allowscustomizationofhierarchicaldatamodelsforhierarchiesonasheet;usedinconjunctionwithIDataSourceSupport('IDataSourceSupportInterface'intheon-linedocumentation)

ICalculationSupport('ICalculationSupportInterface'intheon-linedocumentation),ICustomFunctionSupport('ICustomFunctionSupportInterface'intheon-linedocumentation),ICustomNameSupport('ICustomNameSupportInterface'intheon-linedocumentation),IExpressionSupport('IExpressionSupportInterface'intheon-linedocumentation),IExpressionSupport2('IExpressionSupport2Interface'intheon-linedocumentation),IIterationSupport('IIterationSupportInterface'intheon-linedocumentation)

Allowscustomizationofformulasonasheet;ICustomFunctionSupport('ICustomFunctionSupportInterface'intheon-linedocumentation),ICustomNameSupport('ICustomNameSupportInterface'intheon-linedocumentation),andIIterationSupport('IIterationSupportInterface'intheon-linedocumentation)arenotusefulwithoutIExpressionSupport('IExpressionSupportInterface'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 97

Copyright © GrapeCity, inc. All rights reserved.

Page 99: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

IDisjointSelections('IDisjointSelectionsInterface'intheon-linedocumentation),IQuerySelection('IQuerySelectionInterface'intheon-linedocumentation)

Allowscustomizationofanorderedarrayofcellrangescontainingtheselectedcellswiththeminimaloverlapbetweentherangesonasheet

INamedStyle('INamedStyleSupportInterface'intheon-linedocumentation),IParseFormatSupport('IParseFormatSupportInterface'intheon-linedocumentation)

Allowscustomizationofcollectionsofcustomstylesinthestylemodel

INonEmptyCells('INonEmptyCellsInterface'intheon-linedocumentation)

Allowscustomizationofnon-emptycountstofindoutwhichrowsorcolumnshavedatainthecellsofthatroworcolumnonasheet

IOptimizedEnumerationSupport('IOptimizedEnumerationSupportInterface'intheon-linedocumentation),IOptimizedEnumerationSupport2('IOptimizedEnumerationSupport2Interface'intheon-linedocumentation)

Allowscustomizationofoptimizedenumerationforiteratingtothenextnon-emptyroworcolumnonasheet

IMovable('IMovableInterface'intheon-linedocumentation),IRangeSupport('IRangeSupportInterface'intheon-linedocumentation)

Allowscustomizationofmoving,inserting,anddeletingrowsandcolumnssupportforarangeofcellsonasheet;alsocoversclear,copy,move,andswapsupport

IUnboundRowSupport('IUnboundRowSupportInterface'intheon-linedocumentation)

Allowscustomizationofunboundrowswithdatabindingonasheet;usedinconjunctionwithIDataSourceSupport('IDataSourceSupportInterface'intheon-linedocumentation)

NoneoftheseoptionalinterfacesarerequiredforsavingExcelortextfiles,orforprinting.Formoredetailedinformationontheseinterfaces,refertotheFarPoint.Win.Spread.Model('FarPoint.Win.Spread.ModelNamespace'intheon-linedocumentation)namespaceintheAssemblyReference.

Formoreinformationonformulasincells,referManagingFormulasinCells.

Spread Windows Forms Developer’s Guide 98

Copyright © GrapeCity, inc. All rights reserved.

Page 100: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing the Sheet Appearance

YoucancustomizetheappearanceofvariouspartsoftheSpreadcomponent.

ThetasksthatrelatetosettingtheappearanceofobjectsintheSpreadcomponentinclude:

CustomizingtheOverallComponentAppearanceCustomizingtheIndividualSheetAppearanceCustomizingtheSheetCornerAppearance

ForinformationoncustomizingtheinteractionwithpartsoftheSpreadcomponent,refertoCustomizingSheetInteraction.

ForinformationoncustomizingtheappearanceusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Customizing the Overall Component Appearance

YoucansetseveralaspectsthatdeterminetheappearanceoftheoverallSpreadcomponent.Thesetasksrelatetosettingtheappearanceoftheoverallcomponent:

SettingtheComponenttotheOriginalAppearanceApplyingaSkintotheComponentCreatingaCustomSkinforaComponentCustomizingtheRenderersCustomizingtheDimensionsoftheComponentCustomizingtheOutlineoftheComponentCustomizingtheDisplayofthePointerCustomizingPaintingofPartsoftheComponentUsingXPThemeswiththeComponentHandlingRight-to-LeftLayouts

Othertopicsrelatedtooverallappearanceinclude:

SettingtheBackgroundColorsforaSheetDisplayingGridLinesonaSheet

Forinformationonotheraspectsoftheoverallcomponent,refertoCustomizingInteractionintheOverallComponent.

Setting the Component to the Original Appearance

Youcansettheappearanceofthespreadsheetcomponenttotheoriginaldefaultlookofversion3.Thisinvolvessettingtherenderersfortheoverallcomponent,columnheader,rowheader,scrollbars,sheetcorner,andfocusindicator.Youcansetaskinalongwiththerenderersforthescrollbarstogetthelookfromversion2.5(FarPoint.Win.Spread.DefaultSkins.Default.Apply(FpSpread1)).

Spread Windows Forms Developer’s Guide 99

Copyright © GrapeCity, inc. All rights reserved.

Page 101: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheinterfacerendererforthecomponenteffectsthefollowingareasaswellastheGrayAreaBackColor('GrayAreaBackColorProperty'intheon-linedocumentation)propertyofthesheet(areabetweenthelastcolumnorrowandthescrollbars).

Tosettheappearancetothedefault,usethefollowingproperties.

UsingCode

Tosettheappearancetothelookofversion3,settherenderersincludingtheColumnHeaderRenderer,theRowHeaderRenderer,andtheCornerRenderer,asshowninthefollowingexample.

Example

Thisexampleshowshowtosettheappearanceofthecomponenttotheoriginalversion3look.

C#fpSpread1.InterfaceRenderer = null;// set the column header renderer to the defaultfpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.ColumnHeaderRenderer();// set the row header renderer to the defaultfpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.RowHeaderRenderer();// set the sheet corner renderer to the defaultfpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.CornerRenderer();// set the scroll bar renderers to the defaultfpSpread1.HorizontalScrollBar.Renderer = null;fpSpread1.VerticalScrollBar.Renderer = null;

Spread Windows Forms Developer’s Guide 100

Copyright © GrapeCity, inc. All rights reserved.

Page 102: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// The focus indicator can be set to the version 3 look as well//fpSpread1.FocusRenderer = new FarPoint.Win.Spread.DefaultFocusIndicatorRenderer;

VBFpSpread1.InterfaceRenderer = Nothing' set the column header renderer to the defaultFpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.ColumnHeaderRenderer' set the row header renderer to the defaultFpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.RowHeaderRenderer' set the sheet corner renderer to the defaultFpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.CornerRendererFpSpread1.HorizontalScrollBar.Renderer = Nothing' set the scroll bar renderers to the defaultFpSpread1.VerticalScrollBar.Renderer = Nothing' The focus indicator can be set to the version 3 look as well'FpSpread1.FocusRenderer = New FarPoint.Win.Spread.DefaultFocusIndicatorRenderer

Applying a Skin to the Component

Youcanquicklycustomizetheappearanceofthespreadsheetcomponentbyapplyinga"skin"toit.Askinissimplyacollectionofappearancepropertiesthatapplytoanentirecomponentortoanindividualsheetsuchascolors,gridlines,andwhethertoshowheaders.Thissavesyouthetimeandeffortofsettingthepropertiesindividually.Spreadincludesseveralbuilt-inskinsthatarereadyforyoutouse.YoucanalsocreateyourowncustomskinandsaveitsothatyoucanuseitinotherSpreadcomponentsforacommonformat.

Formoreinformationandinstructionsabout

See

Creatingandapplyingyourownskins CreatingaCustomSkinforaComponent

Creatingandapplyingyourowncell-levelstyles CreatingandApplyingaStyleforCells

Savingtheskintoafileorstream SavingandLoadingaSkin

CustomizingaskinintheSpreadDesigner SpreadSkinEditor(on-linedocumentation)

Spreadskins SpreadSkin('SpreadSkinClass'intheon-linedocumentation)class

UsingtheSpreadSkinEditor

1. Ifyouwanttocreateyourownskin,followtheinstructionsprovidedinCreatingaCustomSkinforaComponenttocreateaskinandapplyit.Toapplyadefaultskintotheentirespreadsheetcomponent,followthesedirections.

2. IntheFormwindow,clicktheSpreadcomponentforwhichyouwanttosettheskin(orrightclickonthecomponentandchoosetheEditSkinsmenu).

3. AtthebottomofthePropertieswindow,clicktheEditSkinsverb.4. IntheSpreadSkinEditor,selectoneofthePre-Definedskinsinthelistofpredefinedskins,thenclickOKto

closetheeditor.

UsingaShortcut

Spread Windows Forms Developer’s Guide 101

Copyright © GrapeCity, inc. All rights reserved.

Page 103: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Ifyouwanttocreateyourownskin,followtheinstructionsprovidedinCreatingaCustomSkinforaComponenttocreateasheetskinandapplyit.Toapplyadefaultsheetskin,followthesedirections.

2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodontheselecteddefaultskin(setbythepropertyintheDefaultSkins('DefaultSkinsClass'intheon-linedocumentation)object)toapplyaspecifieddefaultskintoaspecificSpreadcomponent,collectionofsheets,orsheet.

Example

ThisexamplecodesetsthecomponenttousetheClassicpredefinedskin.

C#FarPoint.Win.Spread.DefaultSpreadSkins.Classic.Apply(fpSpread1);

VBFarPoint.Win.Spread.DefaultSpreadSkins.Classic.Apply(FpSpread1)

UsingCode

1. Ifyouwanttocreateyourownskin,followtheinstructionsprovidedinCreatingaCustomSkinforaComponenttocreateaskinandapplyit.Toapplyadefaultskin,followthesedirections.

2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodontheselecteddefaultskin(setbythepropertyintheDefaultSpreadSkinsobject)toapplyaspecifieddefaultskintoaspecificSpreadcomponent.

Example

ThisexamplecodesetsthefirstsheettousetheClassicpredefinedskin.

C#// Create new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Apply a skin to the SheetView object.FarPoint.Win.Spread.DefaultSpreadSkins.Classic.Apply(newsheet);// Assign the SheetView object to the first sheet in the component.fpSpread1.Sheets[0] = newsheet;

VB' Create new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Apply a skin to the SheetView object.FarPoint.Win.Spread.DefaultSpreadSkins.Classic.Apply(newsheet)' Assign the SheetView object to the first sheet in the component.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. FromtheSettingsmenu,choosetheSpreadSkinicon.2. IntheSpreadSkinEditor,selectoneofthepredefinedskinsfromthePre-Definedtab,orasavedcustom

skinfromtheSavedtab.3. ClickOKtoclosetheeditor.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Spread Windows Forms Developer’s Guide 102

Copyright © GrapeCity, inc. All rights reserved.

Page 104: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Creating a Custom Skin for a Component

Youcanquicklycustomizetheappearanceofthespreadsheetcomponentbyapplyinga"skin"toit.Somebuilt-inskinsareprovidedwithSpreadtocreatecommonformats.Youcancreateyourowncustomskinandsaveittouseagain,similartoatemplate.

Formoreinformationandinstructionsabout

See

Applyingthebuilt-inskins ApplyingaSkintotheComponent

Creatingandapplyingyourowncell-levelstyles CreatingandApplyingaStyleforCells

Savingtheskintoafileorstream SavingandLoadingaSkin

Underlyingmodelforskins UnderstandingtheStyleModel

CustomizingaskinintheSpreadDesigner SpreadSkinEditor(on-linedocumentation)

Spreadskins SpreadSkin('SpreadSkinClass'intheon-linedocumentation)class

UsingtheSpreadSkinEditor

1. IntheFormwindow,clicktheSpreadcomponentforwhichyouwanttocreatetheskin.2. AtthebottomofthePropertieswindow,clicktheEditSkinsverb.3. IntheSpreadSkinEditor,selecttheCustomtab.4. SetthepropertiesintheCustomtabtocreatetheskinyouwant.5. SettheNamepropertytospecifythenameforyourcustomskin.6. ClicktheSaveSkinbuttontosavetheskin.

Adialogappearssayingtheskinhasbeensaved.

7. ClickOKtoclosetheeditorandapplytheskinyoucreatedtothesheet,orclickCanceltoclosetheeditorandnotapplytheskinyoucreated.

UsingaShortcut

1. UsetheSpreadSkinobjectconstructor,andsetitsparameterstospecifythesettingsfortheskin.2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodoftheSpreadSkinobjecttoapplyit

tothecomponent.

Example

Thisexamplecodecreatesandusesacustomskin.

C#fpSpread1.Sheets.Count = 3;FarPoint.Win.Spread.StyleInfo chd = new FarPoint.Win.Spread.StyleInfo();chd.BackColor = Color.LightGreen;FarPoint.Win.Spread.StyleInfo cds = new FarPoint.Win.Spread.StyleInfo();cds.BackColor = Color.LightGreen;FarPoint.Win.Spread.StyleInfo rhd = new FarPoint.Win.Spread.StyleInfo();rhd.BackColor = Color.LightGreen;FarPoint.Win.Spread.StyleInfo def = new FarPoint.Win.Spread.StyleInfo();FarPoint.Win.Spread.GradientSelectionRenderer gsr = new FarPoint.Win.Spread.GradientSelectionRenderer();

Spread Windows Forms Developer’s Guide 103

Copyright © GrapeCity, inc. All rights reserved.

Page 105: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

gsr.Color1 = Color.Green;gsr.Color2 = Color.LightGreen;gsr.Opacity = 50;def.BackColor = Color.Honeydew;FarPoint.Win.Spread.EnhancedInterfaceRenderer int1 = new FarPoint.Win.Spread.EnhancedInterfaceRenderer();int1.ArrowColorDisabled = Color.Green;int1.ArrowColorEnabled = Color.LightSeaGreen;int1.ScrollBoxBackgroundColor = Color.Aqua;int1.TabShape = FarPoint.Win.Spread.EnhancedInterfaceRenderer.SheetTabShape.RoundedRectangle;int1.TabStripButtonStyle = FarPoint.Win.Spread.EnhancedInterfaceRenderer.ButtonStyles.Enhanced;int1.TabStripButtonFlatStyle = FlatStyle.Popup;int1.SheetTabBorderColor = Color.Aquamarine;int1.SheetTabLowerActiveColor = Color.DarkSeaGreen;int1.SheetTabLowerNormalColor = Color.DarkOliveGreen;int1.SheetTabUpperActiveColor = Color.ForestGreen;int1.SheetTabUpperNormalColor = Color.LightSeaGreen;int1.SplitBarBackgroundColor = Color.Aquamarine;int1.SplitBarDarkColor = Color.DarkGreen;int1.SplitBarLightColor = Color.LightGreen;int1.SplitBoxBackgroundColor = Color.Green;int1.SplitBoxBorderColor = Color.LimeGreen;int1.TabStripBackgroundColor = Color.Aquamarine;FarPoint.Win.Spread.NamedStyle chstyle = new FarPoint.Win.Spread.NamedStyle("ColumnHeaders", "HeaderDefault", chd);FarPoint.Win.Spread.NamedStyle corner = new FarPoint.Win.Spread.NamedStyle("CornerHeaders", "HeaderDefault", cds);FarPoint.Win.Spread.NamedStyle rowhstyle = new FarPoint.Win.Spread.NamedStyle("RowHeaders", "HeaderDefault", rhd);FarPoint.Win.Spread.NamedStyle ds = new FarPoint.Win.Spread.NamedStyle("Default", "DataAreaDefault", def);

FarPoint.Win.Spread.MarqueeFocusIndicatorRenderer focusrend = new FarPoint.Win.Spread.MarqueeFocusIndicatorRenderer(Color.LightSeaGreen, 2);FarPoint.Win.Spread.EnhancedScrollBarRenderer ScrollBarR = new FarPoint.Win.Spread.EnhancedScrollBarRenderer(Color.Green, Color.LightGreen,Color.Green, Color.Aqua,Color.DarkGreen, Color.DarkSeaGreen, Color.Turquoise, Color.SpringGreen, Color.Teal, Color.PaleGreen, Color.ForestGreen);

FarPoint.Win.Spread.SpreadSkin skin = new FarPoint.Win.Spread.SpreadSkin("MySkin", int1, ScrollBarR, focusrend, gsr, ds, chstyle, rowhstyle, corner);skin.Apply(fpSpread1);

VB' Create a custom skin.FpSpread1.Sheets.Count = 3Dim chd As New FarPoint.Win.Spread.StyleInfochd.BackColor = Color.LightGreenDim cds As New FarPoint.Win.Spread.StyleInfocds.BackColor = Color.LightGreenDim rhd As New FarPoint.Win.Spread.StyleInforhd.BackColor = Color.LightGreenDim def As New FarPoint.Win.Spread.StyleInfoDim gsr As New FarPoint.Win.Spread.GradientSelectionRenderer

Spread Windows Forms Developer’s Guide 104

Copyright © GrapeCity, inc. All rights reserved.

Page 106: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

gsr.Color1 = Color.Greengsr.Color2 = Color.LightGreengsr.LinearGradientMode = Drawing2D.LinearGradientMode.BackwardDiagonalgsr.Opacity = 50def.BackColor = Color.HoneydewDim int As New FarPoint.Win.Spread.EnhancedInterfaceRendererint.ArrowColorDisabled = Color.Greenint.ArrowColorEnabled = Color.LightSeaGreenint.ScrollBoxBackgroundColor = Color.Aquaint.TabShape = FarPoint.Win.Spread.EnhancedInterfaceRenderer.SheetTabShape.RoundedRectangleint.TabStripButtonStyle = FarPoint.Win.Spread.EnhancedInterfaceRenderer.ButtonStyles.Enhancedint.TabStripButtonFlatStyle = FlatStyle.Popupint.SheetTabBorderColor = Color.Aquamarineint.SheetTabLowerActiveColor = Color.DarkSeaGreenint.SheetTabLowerNormalColor = Color.DarkOliveGreenint.SheetTabUpperActiveColor = Color.ForestGreenint.SheetTabUpperNormalColor = Color.LightSeaGreenint.SplitBarBackgroundColor = Color.Aquamarineint.SplitBarDarkColor = Color.DarkGreenint.SplitBarLightColor = Color.LightGreenint.SplitBoxBackgroundColor = Color.Greenint.SplitBoxBorderColor = Color.LimeGreenint.TabStripBackgroundColor = Color.AquamarineDim chstyle As New FarPoint.Win.Spread.NamedStyle("ColumnHeaders", "HeaderDefault", chd)Dim corner As New FarPoint.Win.Spread.NamedStyle("CornerHeaders", "HeaderDefault", cds)Dim rowhstyle As New FarPoint.Win.Spread.NamedStyle("RowHeaders", "HeaderDefault", rhd)Dim ds As New FarPoint.Win.Spread.NamedStyle("Default", "DataAreaDefault", def)Dim focusrend As New FarPoint.Win.Spread.MarqueeFocusIndicatorRenderer(Color.LightSeaGreen, 2)

Dim ScrollBarR As New FarPoint.Win.Spread.EnhancedScrollBarRenderer(Color.Green, Color.LightGreen, Color.Green, Color.Aqua, Color.DarkGreen,Color.DarkSeaGreen, Color.Turquoise, Color.SpringGreen, Color.Teal, Color.PaleGreen, Color.ForestGreen)

Dim skin As New FarPoint.Win.Spread.SpreadSkin("MySkin", int, ScrollBarR, focusrend, gsr, ds, chstyle, rowhstyle, corner)skin.Apply(FpSpread1)

UsingtheSpreadDesigner

1. FromtheSettingsmenu,choosetheSpreadSkinicon.2. IntheSpreadSkinEditor,selecttheCustomtab.3. Setthepropertiesforthenewcustomskin,includingtheNamepropertytonameyourskin.4. SelecttheSaveSkinbutton.

Amessageboxappearstellingyouyourcustomskinhasbeensaved.

5. ClickOKtoclosetheSpreadSkinEditor.6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Renderers

Spread Windows Forms Developer’s Guide 105

Copyright © GrapeCity, inc. All rights reserved.

Page 107: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcancustomizetherenderersusedtocreatethedefaultstyles.

TheOffice2013orOffice2016styleusestheFlatCornerHeaderRenderer('FlatCornerHeaderRendererClass'intheon-linedocumentation),FlatColumnHeaderRenderer('FlatColumnHeaderRendererClass'intheon-linedocumentation),FlatRowHeaderRenderer('FlatRowHeaderRendererClass'intheon-linedocumentation),FlatScrollBarRenderer('FlatScrollBarRendererClass'intheon-linedocumentation),andFlatFocusIndicatorRenderer('FlatFocusIndicatorRendererClass'intheon-linedocumentation)classes.

ThedefaultstyleusestheColumnHeaderDefaultEnhanced('ColumnHeaderDefaultEnhancedField'intheon-linedocumentation),CornerDefaultEnhanced('CornerDefaultEnhancedField'intheon-linedocumentation),CornerFooterDefaultEnhanced('CornerFooterDefaultEnhancedField'intheon-linedocumentation),FilterBarDefaultEnhanced('FilterBarDefaultEnhancedField'intheon-linedocumentation),andRowHeaderDefaultEnhanced('RowHeaderDefaultEnhancedField'intheon-linedocumentation)fields.

TheOffice2007styleusestheEnhancedCornerRenderer('EnhancedCornerRendererClass'intheon-linedocumentation),EnhancedFocusIndicatorRenderer('EnhancedFocusIndicatorRendererClass'intheon-linedocumentation),EnhancedColumnHeaderRenderer('EnhancedColumnHeaderRendererClass'intheon-linedocumentation),EnhancedScrollBarRenderer('EnhancedScrollBarRendererClass'intheon-linedocumentation),andEnhancedRowHeaderRenderer('EnhancedRowHeaderRendererClass'intheon-linedocumentation)classes.

Spread Windows Forms Developer’s Guide 106

Copyright © GrapeCity, inc. All rights reserved.

Page 108: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheclassicstyleusestheColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation),RowHeaderRenderer('RowHeaderRendererClass'intheon-linedocumentation),andCornerRenderer('CornerRendererClass'intheon-linedocumentation)classes.

UsingCode

1. Createanewrendererandsettherendererproperties.2. Settherendererforthedefaultstyleareasuchascolumnfooter.3. Applythenewcornerstylestothecontrol.

Example

Thisexamplecodecustomizestherenderersforthecolumnheaderandfooter,rowheader,cornerheader,andcornerfooter.

C#//header/footer columnfpSpread1.ActiveSheet.ColumnFooter.Visible = true;fpSpread1.ActiveSheet.ColumnFooter.RowCount = 3;fpSpread1.ActiveSheet.ColumnHeader.RowCount = 3;FarPoint.Win.Spread.CellType.FlatColumnHeaderRenderer flatcolumnheader = new FarPoint.Win.Spread.CellType.FlatColumnHeaderRenderer();fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = flatcolumnheader;FarPoint.Win.Spread.CellType.FlatColumnFooterRenderer flatcolumnfooter = new FarPoint.Win.Spread.CellType.FlatColumnFooterRenderer();fpSpread1.ActiveSheet.ColumnFooter.DefaultStyle.Renderer = flatcolumnfooter;

//header row

Spread Windows Forms Developer’s Guide 107

Copyright © GrapeCity, inc. All rights reserved.

Page 109: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.RowHeader.ColumnCount = 3;FarPoint.Win.Spread.CellType.FlatRowHeaderRenderer flatrowheader = new FarPoint.Win.Spread.CellType.FlatRowHeaderRenderer();fpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = flatrowheader;

//sheet corner header renderFarPoint.Win.Spread.CellType.FlatCornerHeaderRenderer flatconrnerheader = new FarPoint.Win.Spread.CellType.FlatCornerHeaderRenderer();fpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = flatconrnerheader;

//sheet corner footer renderFarPoint.Win.Spread.SpreadSkin a1 = new FarPoint.Win.Spread.SpreadSkin(FarPoint.Win.Spread.DefaultSpreadSkins.Default);a1.Apply(fpSpread1);fpSpread1.ActiveSheet.ColumnFooter.Visible = true;FarPoint.Win.Spread.CellType.FlatCornerFooterRenderer flatconrnerfooter = new FarPoint.Win.Spread.CellType.FlatCornerFooterRenderer();flatconrnerfooter.NormalTriangleColor = Color.Aquamarine;FarPoint.Win.Spread.NamedStyle conner = new FarPoint.Win.Spread.NamedStyle("conner", "HeaderDefault");conner.BackColor = Color.Olive;conner.Renderer = flatconrnerfooter;fpSpread1.NamedStyles.Add(conner);a1.CornerFooterDefaultStyle = conner;

VB'header/footer columnFpSpread1.ActiveSheet.ColumnFooter.Visible = TrueFpSpread1.ActiveSheet.ColumnFooter.RowCount = 3FpSpread1.ActiveSheet.ColumnHeader.RowCount = 3Dim flatcolumnheader As New FarPoint.Win.Spread.CellType.FlatColumnHeaderRenderer()FpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = flatcolumnheaderDim flatcolumnfooter As New FarPoint.Win.Spread.CellType.FlatColumnFooterRenderer()FpSpread1.ActiveSheet.ColumnFooter.DefaultStyle.Renderer = flatcolumnfooter

'header rowFpSpread1.ActiveSheet.RowHeader.ColumnCount = 3Dim flatrowheader As New FarPoint.Win.Spread.CellType.FlatRowHeaderRenderer()FpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = flatrowheader

'sheet corner header renderDim flatconrnerheader As New FarPoint.Win.Spread.CellType.FlatCornerHeaderRenderer()FpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = flatconrnerheader

'sheet corner footer renderDim a1 As New FarPoint.Win.Spread.SpreadSkin(FarPoint.Win.Spread.DefaultSpreadSkins.Default)a1.Apply(FpSpread1)FpSpread1.ActiveSheet.ColumnFooter.Visible = TrueDim flatconrnerfooter As New FarPoint.Win.Spread.CellType.FlatCornerFooterRenderer()flatconrnerfooter.NormalTriangleColor = Color.AquamarineDim conner = New FarPoint.Win.Spread.NamedStyle("conner", "HeaderDefault")conner.BackColor = Color.Oliveconner.Renderer = flatconrnerfooterFpSpread1.NamedStyles.Add(conner)a1.CornerFooterDefaultStyle = conner

Spread Windows Forms Developer’s Guide 108

Copyright © GrapeCity, inc. All rights reserved.

Page 110: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing the Dimensions of the Component

YoucansettheoveralldimensionsoftheSpreadcomponentandthisdeterminesthesizeofthevisibleareaofthespreadsheet.Thefollowingfigureshowsthedimensionsthatyoucansetbysettingthenumberofpixelsforeach.

RefertotheMicrosoft.NETFrameworkdocumentationformoredetailsontheControl.HeightpropertyorControl.Widthproperty.

TocalculatetheheightoftheSpread,assumingscrollbarsturnedoffandnoheaders,calculatetheheightofalltherowsandthenaddonepixelforeveryborder,soif10rowsof20pixelheight,(10x20)+(10x1)+1,or211inthisexample.FortheSpreadwidth,theprocessisthesame.Formoreinformationonsettingtherowheightandcolumnwidth,refertoSettingtheRowHeightorColumnWidth.

UsingthePropertiesWindow

1. SelecttheSpreadcomponent.2. Withthepropertieswindowopen,intheLayoutcategory,selecttheHeightpropertyortheWidthproperty

andtypeinanewvalue.Theunitispixels.PressEnter.Thenewdimensionisnowset.RefertotheMicrosoft.NETFrameworkdocumentationforsettingtheunitsofmeasurementforheighttosomethingotherthanthedefault,whichispixels.

UsingCode

Addalineofcodethatsetsthespecificdimension.Unlessyouhavesetitotherwise,thedefaultfortheunitofmeasurementispixels.UsetheHeightandWidthpropertiesoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Example

ThisexampleshowshowtosettheheightoftheSpreadcomponentto250pixelsandthewidthto300.

C#fpSpread1.Height = 250;fpSpread1.Width = 300;

VB

Spread Windows Forms Developer’s Guide 109

Copyright © GrapeCity, inc. All rights reserved.

Page 111: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Height = 250FpSpread1.Width = 300

Customizing the Outline of the Component

Youcansettheappearanceoftheoutlineoftheoverallcomponent.Thefollowingfiguresshowthetypesofoutlines(orborder)styles.

Outline(Border)Style ExampleFixed,three-dimensional(default)

Fixed,single-line

None

Formoredetails,refertotheFpSpread.BorderStyle('BorderStyleProperty'intheon-linedocumentation)propertyandtheBorderStyleenumerationintheMicrosoft.NETFramework.

UsingthePropertiesWindow

Spread Windows Forms Developer’s Guide 110

Copyright © GrapeCity, inc. All rights reserved.

Page 112: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. SelecttheSpreadcomponent.2. InthePropertieswindow,intheAppearancecategory,selecttheBorderStyleproperty.3. Selectavaluefromthedrop-downlist.PressEnter.Thenewpropertyisnowset.

UsingCode

Addalineofcodethatsetsthespecificproperty,theBorderStyle('BorderStyleProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Example

Thisexampleshowshowtosetthebordertobeasingle-lineborder.

C#fpSpread1.BorderStyle = BorderStyle.FixedSingle;

VBFpSpread1.BorderStyle = BorderStyle.FixedSingle

UsingtheSpreadDesigner

1. Inthepropertylist,intheAppearancecategory,selecttheBorderStyleproperty.2. Fromthedrop-downlist,selecttheborderstyle.3. FromtheFilemenu,selectApplyandExittoapplyyourchangestotheSpreadcomponentandexitSpread

Designer.

Customizing the Display of the Pointer

Youcansetthecursororpointertoappeardifferentlyfordifferentpartsofthedisplay.Todeterminethepointertodisplay,usetheGetCursor('GetCursorMethod'intheon-linedocumentation)methodandSetCursor('SetCursorMethod'intheon-linedocumentation)methodandtheCursorType('CursorTypeEnumeration'intheon-linedocumentation)enumeration.Thecodeforsettingthepointertochangewhenitisoveraheadercell,asshowninthisfigure,isgivenintheexamplebelow.

TheSpreadcomponentusesonepointerforlockedcells(CursorType('CursorTypeEnumeration'intheon-linedocumentation)enumerationequaltoLocked)andonepointerforunlockedcells(CursorType('CursorTypeEnumeration'intheon-linedocumentation)enumerationequaltoNormal).Thecomponentdoesnotsupportdifferentpointersforeachcelltype.

Spread Windows Forms Developer’s Guide 111

Copyright © GrapeCity, inc. All rights reserved.

Page 113: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CellTypesandReservedLocations

Thebuilt-inhyperlinkcelltypebydefaultusesthehandpointeroverthelinkarea.Formoreinformation,refertoSettingaHyperlinkCell.

Somecelltypes(forexample,button,checkbox,combobox,andhyperlink)reserveareaswithinthecellthatrequirespecialmouseprocessing.Forexample,clickingamousebuttonwhileoverthedrop-downbuttoninacomboboxcellimmediatelyenterseditmode.ThelocationofthespecialareaandthepointerusedoverthespecialareaisdeterminedbytheIsReservedLocation('IsReservedLocationMethod'intheon-linedocumentation)andGetReservedCursor('GetReservedCursorMethod'intheon-linedocumentation)methodsinthecelltypeclasses.Ifyoudonotlikethepointersuppliedbyabuilt-incelltypeclassthenyoucouldderiveaclassfromthebuilt-incelltypeclassandoverridetheGetReservedCursor('GetReservedCursorMethod'intheon-linedocumentation)method.

TheGetReservedCursor('GetReservedCursorMethod'intheon-linedocumentation)methodisonlycalledforlocationswhereIsReservedLocation('IsReservedLocationMethod'intheon-linedocumentation)returnsnon-null.Byreturningnull(NothinginVB)ornon-null,theIsReservedLocationmethodessentiallydividesthecellrectangleintotwosubregions(normalregionandreservedregion).Inthenormalsubregion,amousedownisprocessedbytheSpreadcomponentandstartsacellselection.SincethemousedownisprocessedbytheSpreadcomponent,themousepointerisdeterminedbytheSpreadcomponent(thatis,GetReservedCursorisnotcalled).Inthereservedsubregion,amousedownimmediatelystartsacelleditandthemousedowngetspassedtothecelleditorforprocessing.Sincethemousedownisprocessedbythecelleditor,themousepointerisdeterminedbythecelltypeviatheGetReservedCursormethod.Whileyoucansupplycelltypespecificpointersforthereservedsubregion,youcannotsupplycelltypespecificpointersforthenormalsubregions.

Example

Thisexamplesetsthepointertodisplayasahandasshowninthefigureabove.

C#private void Form1_Load(object sender, System.EventArgs e){ // Change the pointer shape on column headers. fpSpread1.SetCursor(FarPoint.Win.Spread.CursorType.ColumnHeader, System.Windows.Forms.Cursors.Hand);}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Change the pointer shape on column headers. FpSpread1.SetCursor(FarPoint.Win.Spread.CursorType.ColumnHeader, System.Windows.Forms.Cursors.Hand)End Sub

Customizing Painting of Parts of the Component

Youcancustomizethepaintingofvariouspartsofthecomponent'sdisplaybylookingforeventsandpainting(rendering)thosepartsthewayyouwant.

Themembersthatareusedwithcustompaintinginclude:

Member DescriptionOnPaintTabStrip('OnPaintTabStripMethod'intheon-linedocumentation)

RaisesthePaintTabStripevent

Spread Windows Forms Developer’s Guide 112

Copyright © GrapeCity, inc. All rights reserved.

Page 114: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

OnPaintTabStripButton('OnPaintTabStripButtonMethod'intheon-linedocumentation)

RaisesthePaintTabStripButtonevent

OnPaintTabStripTab('OnPaintTabStripTabMethod'intheon-linedocumentation)

RaisesthePaintTabStripTabevent

PaintTabStrip('PaintTabStripEvent'intheon-linedocumentation)event

OccurswhentheTabStripneedspainting

PaintTabStripButton('PaintTabStripButtonEvent'intheon-linedocumentation)event

OccurswhenaTabStripbuttonneedspainting

PaintTabStripTab('PaintTabStripTabEvent'intheon-linedocumentation)event

OccurswhenaTabStriptabneedspainting

PaintTabStripEventArgs('PaintTabStripEventArgsClass'intheon-linedocumentation)

Containsdatarelatedtothisevent

PaintTabStripButtonEventArgs('PaintTabStripButtonEventArgsClass'intheon-linedocumentation)

Containsdatarelatedtothisevent

PaintTabStripTabEventArgs('PaintTabStripTabEventArgsClass'intheon-linedocumentation)

Containsdatarelatedtothisevent

Using XP Themes with the Component

YoucansetsupportforXPthemesforthecellsandgraphicalelementsintheSpreadcomponent.TheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyfortheSpreadcomponentcausesthecellstohavetheappearanceoftheXPtheme.Youcancreateamanifestfilesothatthescrollbarshaveathemeappearance.

BydefaulttheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyissettoAuto,sothegraphicalcelltypespaintthewaythethemeissettopaint(forexamplethebuttonisthemedsoyoucannotsetabackgroundcolorwiththeBackColorproperty).YoueitherneedtoturnoffVisualStylesfortheSpreadcomponentorcreateacustomcelltypewhereyouoverridethePaintCellandGetEditorControlmethodsandthensettheVisualStylespropertyoftheAppearanceobjecttooff.Athirdalternativeistoleaveit"on"fortheSpreadcomponentbutturnit"off"fortheindividualcontrol(suchastheFpProgresscontrolfortheprogressindicatorcell).

ApplyingasheetskincausestheVisualStylespropertytobesettofalse.

IfyouareonWindowsXP,thenyouneedtoaddthefollowinglineofcodetoturnofftheXPthemesintheSpread.

FpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off

SettingtheVisualStylespropertyoftheSpreadtoOffshouldreturnthelookoftheSpreadtotheclassiclook.

ButtonsarenotdisplayedasexpectedifyouhavechangedtheSelectionStyleandhaveVisualStyleson.TheproblemisthatwhenVisualStylesareoncertaincelltypesignorecertainsettings,suchasthebuttonignoringthesettingoftheButtonColorproperty.YouwouldneedtotakethatintoaccountandpossiblysettheSelectionForeColor,forexample,tosomethingdifferent.TheSelectionColorssettingforSelectionStyleisanolderstyleandmixingitwithXPthemesisnotrecommended.

TheVisualStylespropertyisusedoncontrolsthatSpreadrenderssuchasthebuttonintheButtonCellType.ThescrollbarsarechildcontrolsrenderedbyVisualStudio.TohavethemrenderwithXPthemes,youwouldneedtosetupamanifestforyourapplication.

UsingthePropertiesWindow

1. SelecttheSpreadcomponent.2. InthePropertieswindow,selecttheVisualStylesproperty,andchooseanoptionfromthedrop-downlist.

UsingCode

Spread Windows Forms Developer’s Guide 113

Copyright © GrapeCity, inc. All rights reserved.

Page 115: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

AddalineofcodethatallowsthethemesupportbysettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyfortheSpreadcomponent.

Example

ThisexamplesetstheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertytoontoallowXPthemes.

C#fpSpread1.VisualStyles = FarPoint.Win.VisualStyles.On;

VBFpSpread1.VisualStyles = FarPoint.Win.VisualStyles.On

UsingtheSpreadDesigner

1. SelectSheetfromthedrop-downlistlocatedonthetoprightsideoftheDesigner.2. FromtheAppearancesection,selectanoptionfortheVisualStylesproperty.3. FromtheFilemenu,selectSaveandExittosavethechanges.

Handling Right-to-Left Layouts

TheSpreadcomponentcansupportright-to-leftlayouts.Right-to-leftfeaturessupportapplicationswherethelanguageiswrittenfromrighttoleft,suchasHebrew,Arabic,orFarsi,sotheuserinterfacewouldbedisplayednaturallywithright-to-leftorientation.

Mostoftheright-to-leftfunctionalityfortheSpreadcomponentisinheritedfromtheunderlying.NETframework,butthereareafewpropertiesthatcanbesettoinstructSpreadtodisplaythelayoutright-to-left.Currentlytheseaspectsofthelayoutarechangedwiththerighttoleftsupport:

celleditingcolumnresizingonrightinsteadofleftdirectionattributeinHTMLexportfilterandsortindicatorsorderofcolumnspopupandstickynotesandcellnoteindicatorsscrollbarsshapessheetcornerssheetnametabsviewportcolumns

Themembersthatareusedwithright-to-leftsupportinclude:

Member DescriptionRightToLeft('RightToLeftProperty'intheon-linedocumentation)

Getsorsetswhethertheobjectshouldpaintrighttoleft

OnRightToLeftChanged('OnRightToLeftChangedMethod'intheon-linedocumentation)

RaisestheRightToLefteventintheMicrosoft.NETFramework

Spread Windows Forms Developer’s Guide 114

Copyright © GrapeCity, inc. All rights reserved.

Page 116: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Theseactionsareadded:ExtendToNextColumnVisual('ExtendToNextColumnVisualField'intheon-linedocumentation)ExtendToPreviousColumnVisual('ExtendToPreviousColumnVisualField'intheon-linedocumentation)MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-linedocumentation)MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-linedocumentation)ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

Customizing the Individual Sheet Appearance

Youcanhavemultiplesheetswithinaworkbook.Eachsheetisaseparatespreadsheetandcanhaveitsownappearanceandsettingsforuserinteraction.Eachsheethasauniquenameandsheetnametabforeasynavigationbetweensheets.

ThesetasksrelatetosettingtheappearanceoftheindividualsheetsinsidetheSpreadcomponent:

SettingtheBackgroundColorsforaSheetSettingaBackgroundImageforaSheetDisplayingGridLinesonaSheetAddingaTitleandSubtitletoaSheetDisplayingaFooterforColumnsorGroupsApplyingaSkintoaSheetCreatingaCustomSkinforaSheet

Othertasksthatrelatetothesheetappearance,butarepartoftheappearanceoftheSpreadcomponentinclude:

CustomizingtheOutlineoftheComponentCustomizingtheSheetNameTabsoftheComponentWorkingwithHierarchicalDataDisplayCreatingandApplyingaStyleforCells

Whenyouworkwithsheets,youcanmanipulatetheobjectsusingtheshortcutsincode,(SheetView('SheetViewClass'intheon-linedocumentation)andSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)classes)oryoucandirectlyworkwiththemodel.Mostdeveloperswhoarenotchanginganythingdrasticallyfinditeasytoworkwiththeshortcutobjects.Formoreinformationonmodels,refertoUnderstandingtheUnderlyingModels.

Settingsappliedtoaparticularroworcolumnorcellcanoverridethesettingsthataresetatthesheetlevel.RefertoObjectParentage.

Fortasksthatrelatetosettingtheuserinteractionatthesheetlevel,refertoCustomizingInteractionwithaSheet.

Formoredetailsontheobjectsinvolved,refertotheSheetView('SheetViewClass'intheon-linedocumentation)classandSheetViewCollection('SheetViewCollectionClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 115

Copyright © GrapeCity, inc. All rights reserved.

Page 117: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Setting the Background Colors for a Sheet

Therearetwodifferentbackgroundcolorsforasheet.Thefirstisthebackgroundofallthecellsinthedataarea,whichcanbesetatthesheetlevel.Thesecondistheareabeyondthecellsbutalsosetatthesheetlevel,whichiscalledthegrayareabackgroundcolor.

Thebackgroundcolorforallthecellsinthesheet,aswellasotherproperties,canbesetusingthedefaultstyleofthesheet.Inthisexample,thebackgroundcolorofthedefaultstyleforallofthecellsisgreen.Youcanalsosetthebackgroundcolorforindividualcells.

Thegrayareabackgroundcolorforthesheetisdisplayedintheareawherecellsarenotdisplayed,asshowninthefollowingfigure.Bydefault,theareaisthesystem'sControlcolor.Thisexamplesetsthebackgroundcolorbeyondthecellstobepink.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosetthegrayareabackgroundcolor.5. SelecttheGrayAreaBackColorpropertyinthepropertylist,andthenclickthedrop-downbuttontodisplaythecolorpicker.

6. Selectacolorinthecolorpicker.7. ClickOKtoclosetheeditor.

UsingaShortcut

SettheSheetsshortcutobjectGrayAreaBackColor('GrayAreaBackColorProperty'intheon-linedocumentation)propertyforthesheet.

Example

Thisexamplecodesetsthefirstsheet’sgrayareabackgroundcolortolightyellow.

C#// Set the first sheet's background color to light yellow.fpSpread1.InterfaceRenderer = null;fpSpread1.Sheets[0].GrayAreaBackColor = Color.LightYellow;

VB' Set the first sheet's background color to light yellow.

Spread Windows Forms Developer’s Guide 116

Copyright © GrapeCity, inc. All rights reserved.

Page 118: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.InterfaceRenderer = NothingFpSpread1.Sheets(0).GrayAreaBackColor = Color.LightYellow

UsingCode

1. CreateanewSheetViewobject.2. SettheGrayAreaBackColor('GrayAreaBackColorProperty'intheon-linedocumentation)property

fortheSheetViewobject.3. AssigntheSheetViewobjecttoasheetintheSpreadcomponent.

Example

Thisexamplecodesetsthefirstsheet’sbackgroundcolortolightyellow.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();fpSpread1.InterfaceRenderer = null// Set the SheetView object's background color to light yellow.newsheet.GrayAreaBackColor = Color.LightYellow;// Assign the SheetView object to the first sheet in the component.fpSpread1.Sheets[0] = newsheet;

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()FpSpread1.InterfaceRenderer = Nothing' Set the SheetView object's background color to light yellow.newsheet.GrayAreaBackColor = Color.LightYellow' Assign the SheetView object to the first sheet in the component.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetthegrayareabackgroundcolor.2. Inthepropertylist,selecttheGrayAreaBackColorproperty.3. Clickthedrop-downarrowtodisplaythecolorpicker.4. Selectacolorfromthecolorpicker.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Background Image for a Sheet

Youcansetanimageinthebackgroundofthecellsinthedataareaofthesheet.Dependingonthesizeofthegraphicandthesizeofthespreadsheet,theimagemayberepeated(tiled)overtheentiresheetofcells,asshowninthefollowingfigure.

Spread Windows Forms Developer’s Guide 117

Copyright © GrapeCity, inc. All rights reserved.

Page 119: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformationonsettinganimageinanindividualcell,refertoSettingaBackgroundImagetoaCell.

Formoreinformationontheimagecelltype,refertoSettinganImageCell.

UsingCode

1. SettheBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)property.2. Setthebackcolorofthedefaultstyle.

Example

Thisexamplecodesetsthebackgroundimageofthesheet.

C#private void Form1_Load(object sender, System.EventArgs e){ //Specify background images. fpSpread1.BackgroundImage = Image.FromFile("D:\\images\\butterfly.gif"); //Set "Transparent" to the default background color of the sheet. fpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.Transparent;}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Specify background images. FpSpread1.BackgroundImage = Image.FromFile("D:\images\butterfly.gif") 'Set "Transparent" to the default background color of the sheet. FpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.TransparentEnd Sub

Displaying Grid Lines on a Sheet

Bydefaultsheetsdisplaygridlines.Youcansetthecolor,thewidth,andthestyleofgridlines.Inthefollowingfigure,thehorizontalgridlinesareflatand

Spread Windows Forms Developer’s Guide 118

Copyright © GrapeCity, inc. All rights reserved.

Page 120: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

red,andtheverticalgridlinesareflatandgreen.

Youcanchoosetodisplaythegridlinesasthree-dimensionallines,withahighlightandshadowcolor.Ifyoudoso,setthehighlightandshadowcolortocreatetheeffectyouwant.Youcancustomizethefollowinggridlinecharacteristics:

color-thecolorofthegridlinehighlightcolor-thehighlightcolorforthree-dimensionalgridlinesshadowcolor-theshadowcolorforthree-dimensionalgridlinestype-thetypeofgridlinewidth-thewidthinpixelsofthegridline

Thecolorisforflatlines;thehighlightandshadowcolorarefortheothertypesoflines.

YoucanhidethegridlineinaparticulardirectionbysettingthetypeofgridlinetoNone.Forexample,thefollowingcodehidesthehorizontalgridlines.

FpSpread1.ActiveSheet.HorizontalGridLine = New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None)

Tocustomizeotherproperties,createanewGridLine('GridLineClass'intheon-linedocumentation)object(ratherthanchangingapropertyontheexistingobject).

Formoredetailsonhowtoworkwiththegridlinesincode,refertotheexamplesbelow,theGridLine('GridLineClass'intheon-linedocumentation)class,andHorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)propertyorVerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

Note:Youcandisplaylinesaroundindividualcellsbysettingcellborders.Formoreinformation,refertoCustomizingCellBorders.

Forinformationonsettingthegridlinesinaheader,refertoCustomizingtheHeaderGridLines.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichyouwanttosetthegridlinecolor.5. Tosetthehorizontalgridlinecolor,

a. SelecttheHorizontalGridLineobjectinthepropertylist.b. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.c. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.

d. Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

6. Tosettheverticalgridlinecolor,a. SelecttheVerticalGridLineobjectinthepropertylistb. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.c. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.

d. Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

7. ClickOKtoclosetheeditor.

UsingCode

1. CreateaGridLine('GridLineClass'intheon-linedocumentation)object,settingthecolororcolorsandthestyleforthegridlineintheconstructor.

2. AssigntheGridLine('GridLineClass'intheon-linedocumentation)objecttothespecifiedsheetbysettingtheSheetView('SheetViewClass'intheon-linedocumentation)objectHorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 119

Copyright © GrapeCity, inc. All rights reserved.

Page 121: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

orVerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertytotheGridLine('GridLineClass'intheon-linedocumentation)objectyoucreatedinstep1.

Example

Thisexamplecodesetsthehorizontalgridlinecolortoredandtheverticalgridlinecolortochartreuse.Bothgridlinesareflat.

C#FarPoint.Win.Spread.GridLine HGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, Color.Red);FarPoint.Win.Spread.GridLine VGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, Color.Chartreuse);fpSpread1.Sheets[0].HorizontalGridLine = HGridLine;fpSpread1.Sheets[0].VerticalGridLine = VGridLine;

VBDim HGridLine As New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, Color.Red)Dim VGridLine As New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Flat, Color.Chartreuse)FpSpread1.Sheets(0).HorizontalGridLine = HGridLineFpSpread1.Sheets(0).VerticalGridLine = VGridLine

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetthegridlinecolors.2. Tosetthehorizontalgridlinecolor,

a. IntheAppearancecategory,selecttheHorizontalGridLineobjectinthepropertylist.b. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.c. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.

d. Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

3. Tosettheverticalgridlinecolor,a. IntheAppearancecategory,selecttheVerticalGridLineobjectinthepropertylistb. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.c. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.

d. Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Adding a Title and Subtitle to a Sheet

Youcanaddaspeciallyformattedareaatthetopofthecomponentthatincludesatitle,asubtitleorboth.Atitleissetforthecomponent,andaseparatesubtitlecanbesetforeachsheet.ThefollowingfigureillustratesaSpreadcomponentwithatitleandasubtitlesetforthesheet.

ThetitleissetusingtheTitleInfo('TitleInfoProperty'intheon-linedocumentation)propertyattheFpSpread

Spread Windows Forms Developer’s Guide 120

Copyright © GrapeCity, inc. All rights reserved.

Page 122: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

level.ThesubtitleissetusingtheTitleInfo('TitleInfoProperty'intheon-linedocumentation)propertyatthesheetlevel.

UsetheTitleInfo('TitleInfoClass'intheon-linedocumentation)classanditsmemberstodisplayandcustomizethetitleandsubtitles.

UsingaShortcut

SetthepropertiesoftheTitleInfo('TitleInfoClass'intheon-linedocumentation)class.

Example

Thisexamplecodesetsanddisplaysatitleforthecomponentandasubtitleforthesheet.

C#// Show the title for the entire spreadsheet component.FpSpread1.TitleInfo.Visible = true;FpSpread1.TitleInfo.Text = "FarPoint Spread Title";FpSpread1.TitleInfo.HorizontalAlign = FarPoint.Win.Spread.CellHorizontalAlignment.Center;// Show the subtitle for the individual sheet.FpSpread1.Sheets[0].TitleInfo.Visible = true;FpSpread1.Sheets[0].TitleInfo.Text = "Sheet Only Subtitle";FpSpread1.Sheets[0].TitleInfo.HorizontalAlign = FarPoint.Win.Spread.CellHorizontalAlignment.Center;FpSpread1.Sheets[0].TitleInfo.BackColor = System.Drawing.Color.Aqua;

VB' Show the title for the entire spreadsheet component.FpSpread1.TitleInfo.Visible = TrueFpSpread1.TitleInfo.Text = "FarPoint Spread Title"FpSpread1.TitleInfo.HorizontalAlign = FarPoint.Win.Spread.CellHorizontalAlignment.Center' Show the subtitle for the individual sheet.FpSpread1.Sheets(0).TitleInfo.Visible = TrueFpSpread1.Sheets(0).TitleInfo.Text = "Sheet Only Subtitle"FpSpread1.Sheets(0).TitleInfo.HorizontalAlign = FarPoint.Win.Spread.CellHorizontalAlignment.CenterFpSpread1.Sheets(0).TitleInfo.BackColor = System.Drawing.Color.Aqua

UsingtheSpreadDesigner

1. FromtheSettingsmenu,selecttheTitlesiconintheSpreadSettingssection.

2. Specifythetextandwhethertodisplaythetitleandsubtitle.

3. SelectOKtoclosethedialog.

4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Displaying a Footer for Columns or Groups

Youcanshowacolumnfooter,agroupfooter,orbothforthesheetandputinformationinthefootersuchasformulasortext.Thecolumnfooterisanareaatthebottomofthesheet.Thegroupfooterisanextrarowoffootercellsatthebottomofasheetwithgrouping,ifyouareusingthegroupingfeature.

Spread Windows Forms Developer’s Guide 121

Copyright © GrapeCity, inc. All rights reserved.

Page 123: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FordetailsontheAPI,refertotheColumnFooter('ColumnFooterProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)classandthevariousmembersoftheColumnFooter('ColumnFooterClass'intheon-linedocumentation)class.

Tocalculatethecolumnfooterorgroupfooterresultwithaformula,settheSetAggregationType('SetAggregationTypeMethod'intheon-linedocumentation)methodoftheColumnFooterobjecttothecorrectformulatypeforthatcolumn.Thefollowingfiguredisplaysagroupbarandacolumnfooterwithaformulainthecolumn:

Thegroupfooterisanextrarowthatisdisplayedbelowthegroupaftergroupingbyacolumnheader.TheGroupFooterVisible('GroupFooterVisibleProperty'intheon-linedocumentation)propertymustbesettotrueafterthegrouphasbeencreated.TheGrouped('GroupedEvent'intheon-linedocumentation)eventcanbeusedtoputinformationinthegroupfooterafterauserhascreatedthegroup.

Formoreinformationongrouping,refertoManagingGroupingofRowsofUserData.

Formoreinformationaboutsettingthegroupappearance,refertoSettingtheAppearanceofGroupedRows.

Formoreinformationoncolumnappearance,refertoCustomizingtheRoworColumnAppearance.

PropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSheetspropertyfortheFpSpreadcomponent.2. ClickthebuttontodisplaytheSheetViewCollectionEditor.3. SelecttheColumnFooterpropertyortheGroupFooterpropertyorbothinthePropertylistandsetVisibletotrue.4. ClickOKtoclosetheeditor.

UsingaShortcut

SettheVisible('VisibleProperty'intheon-linedocumentation)propertyoftheColumnFooterforthesheet.

Example

Thisexamplecodedisplaysacolumnfooterandsetsaspanandatextcolor.

C#fpSpread1.Sheets[0].RowCount = 10;fpSpread1.Sheets[0].ColumnCount = 15;// Show the column footer.fpSpread1.Sheets[0].ColumnFooter.Visible = true;fpSpread1.Sheets[0].ColumnFooter.RowCount = 2;fpSpread1.Sheets[0].ColumnFooter.DefaultStyle.ForeColor = Color.Purple;fpSpread1.Sheets[0].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;fpSpread1.Sheets[0].ColumnFooter.Cells[0, 12].RowSpan = 2;fpSpread1.Sheets[0].ColumnFooter.Cells[0, 0].Value = "test";

VBFpSpread1.Sheets(0).RowCount = 10

Spread Windows Forms Developer’s Guide 122

Copyright © GrapeCity, inc. All rights reserved.

Page 124: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).ColumnCount = 15' Show the footer.FpSpread1.Sheets(0).ColumnFooter.Visible = trueFpSpread1.Sheets(0).ColumnFooter.RowCount = 2FpSpread1.Sheets(0).ColumnFooter.DefaultStyle.ForeColor = Color.PurpleFpSpread1.Sheets(0).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.LeftFpSpread1.Sheets(0).ColumnFooter.Cells(0, 12).RowSpan = 2FpSpread1.Sheets(0).ColumnFooter.Cells(0, 0).Value = "test

UsingaShortcut

1. SettheVisible('VisibleProperty'intheon-linedocumentation)propertyoftheColumnFooterforthesheet.2. SettheSetAggregationTypemethodforthecolumn.

Example

Thisexamplesumsthevaluesinthefirstcolumnanddisplaystheminthecolumnfooter.Theexamplealsosumsthevaluesinthesecondgroupandputstheminthegroupfooter.

C#private void Form1_Load(object sender, System.EventArgs e){fpSpread1.Sheets[0].RowCount=8;fpSpread1.Sheets[0].ColumnCount = 15;fpSpread1.Sheets[0].GroupBarInfo.Visible = true;fpSpread1.Sheets[0].AllowGroup = true;fpSpread1.Sheets[0].GroupFooterVisible = true;fpSpread1.Sheets[0].ColumnFooter.Visible = true;fpSpread1.Sheets[0].ColumnFooter.RowCount = 2;fpSpread1.Sheets[0].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;fpSpread1.Sheets[0].ColumnFooter.Cells[0, 12].RowSpan = 2;//Valuefor (int r = 0; r < fpSpread1.Sheets[0].RowCount; r++){for (int j = 0; j < fpSpread1.Sheets[0].ColumnCount; j++){fpSpread1.Sheets[0].Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets[0].ColumnCount);}}int i = 0;fpSpread1.Sheets[0].ColumnFooter.SetAggregationType(0,1, FarPoint.Win.Spread.Model.AggregationType.Sum);fpSpread1.Sheets[0].ColumnFooter.Cells[0, i].Value = "Sum";}

private void fpSpread1_Grouped(object sender, EventArgs e)FarPoint.Win.Spread.Model.GroupDataModel gdm;gdm = (FarPoint.Win.Spread.Model.GroupDataModel)fpSpread1.ActiveSheet.Models.Data;gdm.GroupFooterVisible = true;FarPoint.Win.Spread.Model.Group g1 = (FarPoint.Win.Spread.Model.Group)gdm.Groups[1];((FarPoint.Win.Spread.Model.IAggregationSupport)g1.GroupFooter.DataModel).SetCellAggregationType(0, 0,FarPoint.Win.Spread.Model.AggregationType.Sum);fpSpread1.ActiveSheet.Models.Data = gdm;}

VBPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadFpSpread1.Sheets(0).RowCount = 8

Spread Windows Forms Developer’s Guide 123

Copyright © GrapeCity, inc. All rights reserved.

Page 125: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).ColumnCount = 15FpSpread1.Sheets(0).GroupBarInfo.Visible = TrueFpSpread1.Sheets(0).AllowGroup = TrueFpSpread1.Sheets(0).GroupFooterVisible = TrueFpSpread1.Sheets(0).ColumnFooter.Visible = TrueFpSpread1.Sheets(0).ColumnFooter.RowCount = 2fpSpread1.Sheets(0).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left'ValueDim r As IntegerDim j As IntegerFor r = 0 To FpSpread1.Sheets(0).RowCountFor j = 0 To FpSpread1.Sheets(0).ColumnCountFpSpread1.Sheets(0).Models.Data.SetValue(r, j, j + r * FpSpread1.Sheets(0).ColumnCount)Next jNext rDim i As Integeri = 0FpSpread1.Sheets(0).ColumnFooter.SetAggregationType(0, 1, FarPoint.Win.Spread.Model.AggregationType.Sum)FpSpread1.Sheets(0).ColumnFooter.Cells(0, i).Value = "Sum"End Sub

Private Sub FpSpread1_Grouped(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.GroupedDim gdm As FarPoint.Win.Spread.Model.GroupDataModelDim g1 As FarPoint.Win.Spread.Model.Groupgdm = FpSpread1.Sheets(0).Models.Datagdm.GroupFooterVisible = Trueg1 = gdm.Groups(1)CType(g1.GroupFooter.DataModel, FarPoint.Win.Spread.Model.IAggregationSupport).SetCellAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.Sum)FpSpread1.ActiveSheet.Models.Data = gdmEnd Sub

Applying a Skin to a Sheet

Youcanquicklycustomizetheappearanceofasheetbyapplyinga"skin"toit.Askinissimplyacollectionofappearancepropertiesthatapplytoanentiresheetsuchascolors,gridlines,andwhethertoshowheaders.Thissavesyouthetimeandeffortofsettingthepropertiesindividually.

Spreadincludesseveralbuilt-inskinsthatarealreadymadeandreadyforyoutouse.YoucanalsocreateyourowncustomskinandsaveitsothatyoucanuseitinotherSpreadcomponentsforacommonformat.

Ifyouapplyaskintoasheetwithahierarchyofchildsheets,besuretoapplytheskintotheparentsheetaswellastoeachofthechildsheets.Formoreinformationonhierarchicaldisplays,refertoWorkingwithHierarchicalDataDisplay.

Formoreinformationandinstructionsabout

See

Creatingandapplyingyourownsheetskins CreatingaCustomSkinforaSheet

Creatingandapplyingyourowncell-levelstyles CreatingandApplyingaStyleforCells

Savingthesheetskintoafileorstream SavingandLoadingaSkin

CustomizingaskinintheSpreadDesigner SheetSkinEditor(on-linedocumentation)intheSpreadDesignerGuide

Sheetskins SheetSkin('SheetSkinClass'intheon-line

Spread Windows Forms Developer’s Guide 124

Copyright © GrapeCity, inc. All rights reserved.

Page 126: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)class

UsingtheSheetSkinEditor

1. Ifyouwanttocreateyourownsheetskin,followtheinstructionsprovidedinCreatingaCustomSkinforaSheettocreateasheetskinandapplyit.Toapplyadefaultsheetskintoasheet,followthesedirections.

2. IntheFormwindow,clicktheSheetViewobjectforwhichyouwanttosettheskin.3. AtthebottomofthePropertieswindow,clicktheEditSkinsverb.4. IntheSheetSkinEditor,selectoneofthepredefinedskinsinthePre-Definedlist,thenclickOKtoclosethe

editor.

UsingaShortcut

1. Ifyouwanttocreateyourownsheetskin,followtheinstructionsprovidedinCreatingaCustomSkinforaSheettocreateasheetskinandapplyit.Toapplyadefaultsheetskin,followthesedirections.

2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodontheselecteddefaultskin(setbythepropertyintheDefaultSkins('DefaultSkinsClass'intheon-linedocumentation)object)toapplyaspecifieddefaultskintoaspecificSpreadcomponent,collectionofsheets,orsheet.

Example

ThisexamplecodesetsthefirstsheettousetheColorful2predefinedskin.

C#FarPoint.Win.Spread.DefaultSkins.Colorful2.Apply(fpSpread1.Sheets[0]);

VBFarPoint.Win.Spread.DefaultSkins.Colorful2.Apply(FpSpread1.Sheets(0))

UsingCode

1. Ifyouwanttocreateyourownsheetskin,followtheinstructionsprovidedinCreatingaCustomSkinforaSheettocreateasheetskinandapplyit.Toapplyadefaultsheetskin,followthesedirections.

2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodontheselecteddefaultskin(setbythepropertyintheDefaultSkins('DefaultSkinsClass'intheon-linedocumentation)object)toapplyaspecifieddefaultskintoaspecificSpreadcomponent,collectionofsheets,orsheet.

Example

ThisexamplecodesetsthefirstsheettousetheColorful2predefinedskin.

C#// Create new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Apply a skin to the SheetView object.FarPoint.Win.Spread.DefaultSkins.Colorful2.Apply(newsheet);// Assign the SheetView object to the first sheet in the component.fpSpread1.Sheets[0] = newsheet;

VB' Create new SheetView object.

Spread Windows Forms Developer’s Guide 125

Copyright © GrapeCity, inc. All rights reserved.

Page 127: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim newsheet As New FarPoint.Win.Spread.SheetView()' Apply a skin to the SheetView object.FarPoint.Win.Spread.DefaultSkins.Colorful2.Apply(newsheet)' Assign the SheetView object to the first sheet in the component.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosettheskin.2. FromtheSettingsmenu,chooseSheetSkinDesigner.3. IntheSheetSkinEditor,selectoneofthepredefinedskinsfromthePre-Definedtab,orasavedcustomskin

fromtheSavedtab.4. ClickOKtoclosetheeditor.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Creating a Custom Skin for a Sheet

Youcanquicklycustomizetheappearanceofasheetbyapplyinga"skin"toit.Somebuilt-inskinsareprovidedwithSpreadtocreatecommonformats.Youcancreateyourowncustomskinandsaveittouseagain,similartoatemplate.Askin,whetherbuilt-inorcustom,canbeappliedtoanynumberofsheets.Justasastylecanbeappliedtocells,soaskincanbeappliedtoanentiresheet.

Formoreinformationandinstructionsabout

See

Applyingthebuilt-insheetskins ApplyingaSkintoaSheet

Creatingandapplyingyourowncell-levelstyles CreatingandApplyingaStyleforCells

Savingthesheetskintoafileorstream SavingandLoadingaSkin

Underlyingmodelforskins UnderstandingtheStyleModel

CustomizingaskinintheSpreadDesigner SheetSkinEditor(on-linedocumentation)intheSpreadDesignerGuide

Sheetskins SheetSkin('SheetSkinClass'intheon-linedocumentation)class

UsingtheSheetSkinEditor

1. IntheFormwindow,clicktheSheetViewobjectforwhichyouwanttocreatetheskin.2. InthePropertieswindow,intheAppearancecategory,selecttheActiveSkinpropertyandclickonthe

buttontolaunchtheSheetSkinEditor.3. IntheSheetSkinEditor,selecttheCustomtab.4. SetthepropertiesintheCustomtabtocreatetheskinyouwant.5. SettheNamepropertytospecifythenameforyourcustomskin.6. ClicktheSaveSkinbuttontosavetheskin.

Adialogappearssayingtheskinhasbeensaved.

7. ClickOKtoclosetheeditorandapplytheskinyoucreatedtothesheet,orclickCanceltoclosetheeditorandnotapplytheskinyoucreated.

UsingaShortcut

Spread Windows Forms Developer’s Guide 126

Copyright © GrapeCity, inc. All rights reserved.

Page 128: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. UsetheSheetSkin('SheetSkinClass'intheon-linedocumentation)objectconstructor,andsetitsparameterstospecifythesettingsfortheskin.

2. UsetheApply('ApplyMethod'intheon-linedocumentation)methodoftheSheetSkin('SheetSkinClass'intheon-linedocumentation)objecttoapplyittothecomponent,asheet,orasetofsheets.

Example

Thisexamplecodesetsthefirstsheettouseacustomskin.

C#// Create a custom skin.FarPoint.Win.Spread.SheetSkin myskin = new FarPoint.Win.Spread.SheetSkin("MySkin", Color.AliceBlue, Color.BlanchedAlmond, Color.Navy, Color.CornflowerBlue, FarPoint.Win.Spread.GridLines.Both, Color.Coral, Color.Navy, Color.Bisque, Color.Crimson, Color.AntiqueWhite, Color.BlanchedAlmond, true, true, true, true, true);// Apply the custom skin to the first sheet in the component.myskin.Apply(fpSpread1.Sheets[0]);

VB' Create a custom skin.Dim myskin As New FarPoint.Win.Spread.SheetSkin("MySkin", Color.AliceBlue, Color.BlanchedAlmond, Color.Navy, Color.CornflowerBlue, FarPoint.Win.Spread.GridLines.Both, Color.Coral, Color.Navy, Color.Bisque, Color.Crimson, Color.AntiqueWhite, Color.BlanchedAlmond, True, True, True, True, True)' Apply the custom skin to the first sheet in the component.myskin.Apply(FpSpread1.Sheets(0))

UsingCode

1. CalltheSheetSkinobjectconstructor,andsetitsparameterstospecifythesettingsfortheskin.2. CalltheSheetSkinobjectApplymethodtoapplyittothecomponent,asheet,orasetofsheets.

Example

Thisexamplecodesetsthefirstsheettouseacustomskin.

C#// Create a custom skin.FarPoint.Win.Spread.SheetSkin myskin = new FarPoint.Win.Spread.SheetSkin("MySkin", Color.AliceBlue, Color.BlanchedAlmond, Color.Navy, Color.CornflowerBlue, FarPoint.Win.Spread.GridLines.Both, Color.Coral, Color.Navy, Color.Bisque, Color.Crimson, Color.AntiqueWhite, Color.BlanchedAlmond, true, true, true, true, true);// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Apply the custom skin to the SheetView object.myskin.Apply(newsheet);// Assign the SheetView object to the first sheet in the component.fpSpread1.Sheets[0] = newsheet;

VB' Create a custom skin.Dim myskin As New FarPoint.Win.Spread.SheetSkin("MySkin", Color.AliceBlue, Color.BlanchedAlmond, Color.Navy, Color.CornflowerBlue,

Spread Windows Forms Developer’s Guide 127

Copyright © GrapeCity, inc. All rights reserved.

Page 129: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.GridLines.Both, Color.Coral, Color.Navy, Color.Bisque, Color.Crimson, Color.AntiqueWhite, Color.BlanchedAlmond, True, True, True, True, True)' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Apply the custom skin to the SheetView object.myskin.Apply(newsheet)' Assign the SheetView object to the first sheet in the component.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosettheskin.2. FromtheSettingsmenu,chooseSheetSkinEditor.3. IntheSheetSkinEditor,selecttheCustomtab.4. Setthepropertiesforthenewcustomsheetskin,includingtheNamepropertytonameyourskin.5. SelecttheSaveSkinbutton.Amessageboxappearstellingyouyourcustomskinhasbeensaved.

6. ClickOKtoclosetheSheetSkinEditor.7. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Sheet Corner Appearance

Youcancustomizetheappearanceofthesheetcorner,theheadercellintheupperleftcornerofthesheet,foreachsheet.Inmanyways,customizingthesheetcornerissimilartocustomizingcellsorsheets.

Thesetopicsdiscussthesheetcornerfeatures:

GeneralStyleoftheSheetCornerTextDisplayintheSheetCornerTableDisplayintheSheetCornerCustomizableCellintheSheetCornerCellSpansintheSheetCornerHeaderCountSynchronizationintheSheetCornerDrawing(Rendering)Style

OperationalSupport

ThesheetcornersupportsXMLserializationanddeserializationalongwithsheet.AnythingchangedinthesheetcornerissavedwiththeSpreadwhenyousaveSpread.

Thesheetcornersupportscopyandpastingcellsbetweensheets.Youcanselectasheetbyclickinginsheetcorner,thenpressCtrl+CtocopyitandthengotoanothersheetandpressCtrl+Vtopastethesheetandthesheetcorner.

ThesheetcornersupportsPDFprintingandnormalprintingsoyoucanprintthesheetcorneralongwiththesheet.

Theunderlyingmodelsofthesheetcornerareexposedthroughthesheetmodelpropertyandyoucanchangethismodel.Thefollowingclassesareinvolvedinthesheetcorner.

FarPoint.Win.SpreadNamespace:SheetCorner('SheetCornerClass'intheon-linedocumentation)ClassFarPoint.Win.Spread.CellTypeNamespace:IRenderer('IRendererInterface'intheon-linedocumentation)InterfaceFarPoint.Win.Spread.CellTypeNamespace:CornerRenderer('CornerRendererClass'intheon-linedocumentation)Class

Spread Windows Forms Developer’s Guide 128

Copyright © GrapeCity, inc. All rights reserved.

Page 130: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.CellTypeNamespace:EnhancedCornerRenderer('EnhancedCornerRendererClass'intheon-linedocumentation)Class

General Style of the Sheet Corner

Sheetcornerscandisplaygridlines,haveadifferentbackgroundcolorfromtherestoftheheaders,andmore.Thereareseveraldifferentwaystosetpropertiesinthesheetcorner.OnewayiswiththeSheetCorner('SheetCornerClass'intheon-linedocumentation)class.AnotheroptionistosetthesheetcornerpropertiesfortheSheetView('SheetViewClass'intheon-linedocumentation)class.Inthefollowingfigure,thesheetcornerisdisplayedwithatwo-pixelwide,greenborderandalightbluebackground.

Thesheetcornersupportsright-to-leftorientation.WhenyousetRight-to-LeftmodeinSpreadfortheentirespreadsheet,thesheetcorneralsodisplayswithright-to-leftorientationaswell.

GeneralCustomization

SeveralofthepropertiesofaStyleInfoobjectcanbesetforthesheetcornercell.Thesepropertiesinclude:

backgroundcolor-thebackgroundcolorofthecellborder-theborderaroundthecellcelltype-thetypeofcellfont-thefontsettingsofthecelltextcolor-thecoloroftextcolorinthecellalignment-thealignmentoftextinthecell(horizontalandvertical)

ThefollowingfiguredisplaysasheetcornerthathasbeencustomizedwiththeSheetCorner('SheetCornerClass'intheon-linedocumentation)class.

Thefollowingsectionsprovideinstructionsandexamplecodeforcustomizingmanyaspectsofthesheetcorner.

UsingCode

YoucansetthesheetcornerstyleusingthepropertiesoftheSheetCorner('SheetCornerClass'intheon-line

Spread Windows Forms Developer’s Guide 129

Copyright © GrapeCity, inc. All rights reserved.

Page 131: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)class.

Example

Thisexamplecodesetsthebackgroundcolor,setsborders,putstextinacell,andsetstherowandcolumncount.

C#fpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.CornerRenderer();fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.RowCount = 6;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6;fpSpread1.ActiveSheet.SheetCorner.AlternatingRows[0].BackColor = Color.Violet;fpSpread1.ActiveSheet.SheetCorner.Cells[0, 0].Text = "Test";fpSpread1.ActiveSheet.SheetCorner.Columns[0].Border = new FarPoint.Win.LineBorder(Color.Green);fpSpread1.ActiveSheet.SheetCorner.Rows[0].Border = new FarPoint.Win.LineBorder(Color.Green);fpSpread1.ActiveSheet.SheetCorner.HorizontalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);fpSpread1.ActiveSheet.SheetCorner.VerticalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);fpSpread1.ActiveSheet.SheetCorner.DefaultStyle.VisualStyles = FarPoint.Win.VisualStyles.Off;

VBFpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.CornerRendererFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.RowCount = 6FpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6FpSpread1.ActiveSheet.SheetCorner.AlternatingRows(0).BackColor = Color.VioletFpSpread1.ActiveSheet.SheetCorner.Cells(0, 0).Text = "Test"FpSpread1.ActiveSheet.SheetCorner.Columns(0).Border = New FarPoint.Win.LineBorder(Color.Green)FpSpread1.ActiveSheet.SheetCorner.Rows(0).Border = New FarPoint.Win.LineBorder(Color.Green)FpSpread1.ActiveSheet.SheetCorner.HorizontalGridLine = New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None)FpSpread1.ActiveSheet.SheetCorner.VerticalGridLine = New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None)FpSpread1.ActiveSheet.SheetCorner.DefaultStyle.VisualStyles = FarPoint.Win.VisualStyles.Off

CustomizingtheCornerColor

YoucansetthesheetcornerstylebyusingtheSheetCornerStyle('SheetCornerStyleProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)objecttospecifyindividualpropertiesofthesheetcorner(asinthefollowingexample).YoucanalsospecifythegridlinesaroundthesheetcornerusingtheSheetCornerHorizontalGridLine('SheetCornerHorizontalGridLineProperty'intheon-linedocumentation)andSheetCornerVerticalGridLine('SheetCornerVerticalGridLineProperty'intheon-linedocumentation)properties.

Example

Spread Windows Forms Developer’s Guide 130

Copyright © GrapeCity, inc. All rights reserved.

Page 132: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexamplecodesetsthebackgroundcolortolightblueandsetstheborderasshowninthefigure.

C#fpSpread1.ActiveSheet.ColumnHeader.RowCount = 3;fpSpread1.ActiveSheet.RowHeader.ColumnCount = 3;fpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.CornerRenderer();fpSpread1.ActiveSheet.SheetCornerStyle.BackColor = Color.LightBlue;fpSpread1.ActiveSheet.SheetCornerStyle.Border = new FarPoint.Win.LineBorder(Color.Green, 2);

VBFpSpread1.ActiveSheet.ColumnHeader.RowCount = 3FpSpread1.ActiveSheet.RowHeader.ColumnCount = 3FpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.CornerRendererFpSpread1.ActiveSheet.SheetCornerStyle.BackColor = Color.LightBlueFpSpread1.ActiveSheet.SheetCornerStyle.Border = New FarPoint.Win.LineBorder(Color.Green, 2)

CustomizingtheCornerImage

Youcanplaceagraphicinthesheetcornerbysettingabackgroundimagetoacelltypeandassigningthatcelltypetothesheetcorner,whichisjustacell.Then,specifyaparticulargraphicfilefortheimage(Pictureobject).

Example

Thisexamplecodesetsthebackgroundimageofacelltypeandassignsthatcelltypetothesheetcorner.

C#FarPoint.Win.Spread.CellType.GeneralCellType gencell = new FarPoint.Win.Spread.CellType.GeneralCellType();FarPoint.Win.Picture cornerimage = new FarPoint.Win.Picture(Image.FromFile("D:\\images\\logocorner.jpg"));gencell.BackgroundImage = cornerimage;fpSpread1.ActiveSheet.SheetCornerStyle.CellType = gencell;

VBDim gencell As New FarPoint.Win.Spread.CellType.GeneralCellTypeDim cornerimage As New FarPoint.Win.Picture(Image.FromFile("D:\images\logocorner.jpg"))gencell.BackgroundImage = cornerimageFpSpread1.ActiveSheet.SheetCornerStyle.CellType = gencell

Text Display in the Sheet Corner

YoucanaddtexttothesheetcornercellofthespreadsheetbysettingtheSheetCornerpropertiesoroverridingthePaintCellmethod.Thefigureshowstheresultsoftheexamplecodeinthistopic.

Spread Windows Forms Developer’s Guide 131

Copyright © GrapeCity, inc. All rights reserved.

Page 133: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ForinformationaboutsettingtextusingtheSheetCornerproperties,seeGeneralStyleoftheSheetCorner.

UsingCode

Youcanassigntexttothesheetcornercellbyoverridingthepaintingofthecellandpaintingitwiththespecifiedtext.

Example

C#class CornerCell : FarPoint.Win.Spread.CellType.GeneralCellType{ public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor) { base.PaintCell(g, r, appearance, "Text", isSelected, isLocked, zoomFactor); }}

CornerCell sctextcell = new CornerCell();fpSpread1.Sheets[0].SheetCornerStyle.CellType = sctextcell;

VBPublic Class SheetCornerInherits FarPoint.Win.Spread.CellType.GeneralCellType Public Overrides Sub PaintCell(ByVal g As System.Drawing.Graphics, ByVal r As System.Drawing.Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal value As Object, ByVal isSelected As Boolean, ByVal isLocked As Boolean, ByVal zoomFactor As Single) MyBase.PaintCell(g, r, appearance, "Text", isSelected, isLocked, zoomFactor) End SubEnd Class

Dim sctextcell As New SheetCorner()FpSpread1.Sheets(0).SheetCornerStyle.CellType = sctextcell

Table Display in the Sheet Corner

Thesheetcornercanhaveatableorgriddisplaywithcolumnsandrowsofcells,thoughcellsarenoteditable.Youcansetthesheetcornertoatable(range)displayorasinglecelldisplaywiththeAllowTableCorner('AllowTableCornerProperty'intheon-linedocumentation)propertyofthesheet(SheetView('SheetViewClass'intheon-linedocumentation)class).

Thesheetcorneralsosupportscellspansinthetabledisplay.

WhenyousettheAllowTableCorner('AllowTableCornerProperty'intheon-linedocumentation)propertyofthesheettotrue,thesheetcornerdisplaysasatablewiththenumberofcolumnsequaltothenumberofrowheadersofthesheetandthenumberofrowsequaltothenumberofcolumnheadersofthesheet.Thefollowingfigureillustrates

Spread Windows Forms Developer’s Guide 132

Copyright © GrapeCity, inc. All rights reserved.

Page 134: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

atablesheetcornerdisplay:

WhenyousettheAllowTableCorner('AllowTableCornerProperty'intheon-linedocumentation)propertyofthesheettofalse,thefirstcellofthesheetcornerspanstheentireareaofthesheetcorner,basedonthenumberofcolumnsandrowssetforthecorner.Thefollowingfigureillustratesasingle-cellsheetcornerdisplay:

Example

Thefollowingcodesetsthesheetcornertoappearasatable.

C#fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4;fpSpread1.ActiveSheet.SheetCorner.RowCount = 5;

VBFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4FpSpread1.ActiveSheet.SheetCorner.RowCount = 5

Example

Thefollowingcodesetsthesheetcornertoappearasasinglecell.

C#fpSpread1.ActiveSheet.AllowTableCorner = false;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4;fpSpread1.ActiveSheet.SheetCorner.RowCount = 5;

Spread Windows Forms Developer’s Guide 133

Copyright © GrapeCity, inc. All rights reserved.

Page 135: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBFpSpread1.ActiveSheet.AllowTableCorner = FalseFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4FpSpread1.ActiveSheet.SheetCorner.RowCount = 5

Customizable Cell in the Sheet Corner

Thesinglecellortableofcellsinthesheetcornercanbecustomized.YoucansetthecellstoanyofthecelltypesthataresupportedbySpread.YoucanalsocustomizepropertiesoftheCell('CellClass'intheon-linedocumentation)class.

YoucanchangethecelltypeofthecellsinthesheetcornerbysettinganewcelltypefortheSheetCornerStyle('SheetCornerStyleProperty'intheon-linedocumentation)propertyofthesheet(SheetView('SheetViewClass'intheon-linedocumentation)class).WhenyousettheSheetCornerStyle.CellType,allthecellsinthesheetcornerarechangedtothattype.

Thefollowingexamplessetthesheetcornertobeacheckboxorabutton.

Example

Thefollowingcodesetsthesheetcornertobecheckboxcellsbysettingthesheetcornerstyle(asshownintheprecedingillustration).

C#fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4;fpSpread1.ActiveSheet.SheetCorner.RowCount = 5;fpSpread1.ActiveSheet.SheetCornerStyle.CellType = new FarPoint.Win.Spread.CellType.CheckBoxCellType();

VBFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4FpSpread1.ActiveSheet.SheetCorner.RowCount = 5FpSpread1.ActiveSheet.SheetCornerStyle.CellType = New FarPoint.Win.Spread.CellType.CheckBoxCellType()

Example

Spread Windows Forms Developer’s Guide 134

Copyright © GrapeCity, inc. All rights reserved.

Page 136: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingcodesetsthesheetcornertobebuttoncellsbyassigningthebuttoncelltypetothecellsinthesheetcorner(asshownintheprecedingillustration).

C#fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4;fpSpread1.ActiveSheet.SheetCorner.RowCount = 5;fpSpread1.ActiveSheet.SheetCorner.Cells[2,3].CellType = new FarPoint.Win.Spread.CellType.ButtonCellType();

VBFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 4FpSpread1.ActiveSheet.SheetCorner.RowCount = 5FpSpread1.ActiveSheet.SheetCorner.Cells(2,3).CellType = New FarPoint.Win.Spread.CellType.ButtonCellType()

Cell Spans in the Sheet Corner

Cellspansaresupportedinthesheetcorner.Anynumberofrowsandcolumnsofcellscanbeselectedandmergedtocreatecellspans.Youcansetspansofcellsinrowsorcolumnsorboth.

Formoreinformationoncreatingcellspans,refertoCreatingaSpanofCells.

Example

Thefollowingcodecreatesaspanofrowcellsandaspanofcolumncellsinthesheetcorner.

Spread Windows Forms Developer’s Guide 135

Copyright © GrapeCity, inc. All rights reserved.

Page 137: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6;fpSpread1.ActiveSheet.SheetCorner.RowCount = 7;fpSpread1.ActiveSheet.SheetCorner.Cells[1, 2].ColumnSpan = 3;fpSpread1.ActiveSheet.SheetCorner.Cells[1, 2].RowSpan = 4;

VBFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6FpSpread1.ActiveSheet.SheetCorner.RowCount = 7FpSpread1.ActiveSheet.SheetCorner.Cells(1, 2).ColumnSpan = 3FpSpread1.ActiveSheet.SheetCorner.Cells(1, 2).RowSpan = 4

Header Count Synchronization in the Sheet Corner

Thenumberofrowsandcolumnsinthesheetcornerdependonnumberofthecolumnheaderrowsandrowheadercolumnsofthesheet.Infact,thesetwoaresynchronizedbySpread,soifyouchangesheetcornersize,thesheetheaderrowsandcolumnsareadjustedaccordinglyandifyouchangethenumberofsheetheaderrowsorcolumnsofthesheet,thesheetcorneradjustsaccordingly.

YoucanusetheRowsandColumnspropertiesofthesheetcornertomodifythesheet’srowheadercolumncountandcolumnheaderrowcount.Therowcountofcolumnheadersofthesheetalwaysequalstherowcountofthesheetcorner;thecolumncountofrowheadersofthesheetalwaysequalsthecolumncountofthesheetcorner.

Example

Thefollowingexampleillustrateshowthenumberofrowsinthesheetcornerchangewhenyouchangethenumberofcolumnheaderrows.

C#fpSpread1.ActiveSheet.AllowTableCorner = true;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6;fpSpread1.ActiveSheet.SheetCorner.RowCount = 7;//Change rows in sheet corner by change Row count of columns headerfpSpread1.ActiveSheet.ColumnHeader.RowCount = 5;

VBFpSpread1.ActiveSheet.AllowTableCorner = TrueFpSpread1.ActiveSheet.SheetCorner.ColumnCount = 6FpSpread1.ActiveSheet.SheetCorner.RowCount = 7'Change rows in sheet corner by change Row count of columns headerFpSpread1.ActiveSheet.ColumnHeader.RowCount = 5

Example

Thefollowingexampleillustrateshowthenumberofcolumnheaderrowschangewhenyouchangethenumberofsheetcornercolumns.

C#fpSpread1.ActiveSheet.ColumnHeader.RowCount = 5;fpSpread1.ActiveSheet.SheetCorner.ColumnCount = 3;

Spread Windows Forms Developer’s Guide 136

Copyright © GrapeCity, inc. All rights reserved.

Page 138: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBFpSpread1.ActiveSheet.ColumnHeader.RowCount = 5FpSpread1.ActiveSheet.SheetCorner.ColumnCount = 3

Drawing (Rendering) Style

Youcancustomizethecornerrenderer,whichdrawsthesheetcorner.

Therearetwopre-definedcornerrenderersinSpread.

ThedefaultrendererdrawsthesheetcornerwithorwithoutWindowsXPstyledependingonthesettingofthesystem.

TheenhancedcornerrendereralwaysdrawsthesheetcornerwithanappearancesimilartoMicrosoftExcel2007.

Example

Thisexampleliststhemethodsthatareusedtocreateacustomcornerrenderer.

C#public class MyCornerRenderer : IRenderer {/// <summary>/// Gets the preferred (maximum needed) size of the cell for the renderer control./// </summary>/// <param name="g">Graphics device interface for painting the cell</param>/// <param name="size">Preferred or maximum needed size</param>/// <param name="appearance">Appearance settings of the renderer control</param>/// <param name="value">Object containing the name of the renderer control</param>/// <param name="zoomFactor">Numeric value for zoom factor for scaling the display of the renderer control</param>/// <returns></returns>public Size GetPreferredSize(Graphics g, Size size, Appearance appearance, object value, float zoomFactor){///Your Code add here}/// <summary>/// Paints the corner cell when not in edit mode to the specified graphics interface/// with the specified appearance settings./// </summary>/// <param name="g">Graphics device interface for painting the corner cell</param>/// <param name="r">Location and size of a rectangular region for painting the corner cell</param>/// <param name="appearance">Appearance settings of the corner cell</param>/// <param name="value">Object containing the name of the renderer control of the corner cell</param>/// <param name="isSelected">Whether the corner cell is selected</param>/// <param name="isLocked">Whether the corner cell is locked</param>/// <param name="zoomFactor">Numeric value for scaling the display of the corner cell</param>public virtual void PaintCell(Graphics g, Rectangle r, Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor){///Your Code add here}

Spread Windows Forms Developer’s Guide 137

Copyright © GrapeCity, inc. All rights reserved.

Page 139: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

/// <summary>/// Paints the corner cell./// </summary>/// <param name="g">Graphics device interface for painting the corner cell</param>/// <param name="r">Location and size of a rectangular region for painting the corner cell</param>/// <param name="backColor">Background color of the corner cell</param>/// <param name="foreColor">Foreground color of the corner cell</param>/// <param name="f">Font</param>/// <param name="horizontalAlignment">Horizontal alignment of corner cell content</param>/// <param name="verticalAlignment">Vertical alignment of the corner cell content</param>/// <param name="s">String to paint</param>/// <param name="textOrientation">Orientation of the text</param>/// <param name="wordWrap">Whether wrap words to multiple lines</param>/// <param name="hotkeyPrefix">Whether to show hotkey effect</param>/// <param name="stringTrim">String trimming mode</param>/// <param name="visualStyles">Visual styles</param>/// <param name="mouseOver">Whether the mouse is over the corner cell</param>/// <param name="rightToLeft">Whether to display right to left</param>/// <param name="zoomFactor">Numeric value for scaling the display of the corner cell</param>public virtual void PaintCorner(Graphics g, Rectangle r, Color backColor, Color foreColor, Font f, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment, string s, TextOrientation textOrientation, bool wordWrap, HotkeyPrefix hotkeyPrefix, StringTrimming stringTrim, VisualStyles visualStyles, bool mouseOver, bool rightToLeft, float zoomFactor){///Your Code add here}/// <summary>/// Determines whether this cell can overflow into an adjacent cell./// </summary>/// <returns></returns>public bool CanOverflow(){///Your Code add here}/// <summary>/// Determines whether adjacent cells can overflow into this cell./// </summary>/// <returns></returns>public bool CanBeOverflown(){///Your Code add here}}// Assign new corner render to drawing sheet corner:fpSpread1.ActiveSheet.SheetCornerStyle.Renderer = new MyCornerRenderer();

Spread Windows Forms Developer’s Guide 138

Copyright © GrapeCity, inc. All rights reserved.

Page 140: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Row, Column, and Cell Appearance

YoucancustomizetheappearanceofvariouspartsoftheSpreadcomponentattherow,column,andcelllevel.

ThetasksthatrelatetosettingtheappearanceofobjectsintheSpreadcomponentinclude:

CustomizingtheRoworColumnAppearanceCustomizingtheAppearanceofHeadersCustomizingtheAppearanceofaCell

ForinformationoncustomizingtheinteractionwithpartsoftheSpreadcomponent,refertoCustomizingSheetInteraction.

ForinformationoncustomizingtheappearanceusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Customizing the Row or Column Appearance

Thesetasksrelatetosettingtheappearanceofcolumnsorrowsinthesheet:

SettingtheRowHeightorColumnWidthResizingtheRoworColumntoFittheDataFindingRowsorColumnsThatHaveDataCreatingAlternatingRows

Whenyouworkwithrowsandcolumns,youcanworkwiththeobjectsusingtheshortcutsincode(Row('RowClass'intheon-linedocumentation),Rows('RowsClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),Columns('ColumnsClass'intheon-linedocumentation),AlternatingRow('AlternatingRowClass'intheon-linedocumentation),AlternatingRows('AlternatingRowsClass'intheon-linedocumentation))oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.YoucaneditpropertiesoftheRowsandColumnsclassesinthePropertieswindow(inSpreadDesignerorinVisualStudio.NET).FormoreinformationontheCells,Columns,andRowsEditorthatisavailablefromthePropertieswindow,refertotheexplanationofthiseditorintheSpreadDesignerGuide(on-linedocumentation).

Aswithmostspreadsheetandgridproducts,Spreaddoesnotallowin-celleditingofthecellsintherowandcolumnheaders.

Settingsappliedtoaparticularroworcolumnoverridethesettingsthataresetatthesheetlevelandsettingsappliedatacellleveloverridetheroworcolumnsettings.Formoreinformation,refertoObjectParentage.

Formoreinformationabouttheappearanceofrowsasaresultoffiltering,refertoSettingtheAppearanceofFilteredRows.Formoreinformationabouttheappearanceofcells,refertoCreatingandApplyingaStyleforCells.Forinformationontheunderlyingmodelresponsibleforrowsandcolumns,refertotheUnderstandingtheAxisModel.Formoreinformation,refertotheRow('RowClass'intheon-linedocumentation),Rows('RowsClass'intheon-linedocumentation),AlternatingRow('AlternatingRowClass'intheon-linedocumentation),AlternatingRows('AlternatingRowsClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),andColumns('ColumnsClass'intheon-linedocumentation)objectsintheAssemblyReference.

Setting the Row Height or Column Width

Youcansettherowheightorcolumnwidthasaspecifiednumberofpixels.Eachsheetusesandletsyousetadefaultsize,makingallrowsorcolumnsinthesheetthesamesize.Youcanoverridethatsettingbysettingthevaluefor

Spread Windows Forms Developer’s Guide 139

Copyright © GrapeCity, inc. All rights reserved.

Page 141: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

individualrowsorcolumns.

Userscanchangetherowheightorcolumnwidthbydraggingtheheaderlinesbetweenrowsorcolumns.

FormoredetailsrefertotheColumn.Width('WidthProperty'intheon-linedocumentation)methodorRow.Height('HeightProperty'intheon-linedocumentation)method.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosetthecolumnwidthforacolumn.5. Inthepropertieslist,settheColumnsproperty(orRowproperty)andthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Clickthecolumnheadingofthecolumnforwhichyouwanttosetthewidth(orrowfortheheight).7. Inthepropertieslist,settheWidthproperty(Heightpropertyfortherow).8. ClickOKtoclosetheCell,Column,andRowEditor.9. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

SettheColumnsshortcutobjectWidth('WidthProperty'intheon-linedocumentation)property.Youcanuse-1forallcolumns(Columns[-1]).

Example

Thisexamplecodesetsthesecondcolumn’swidthto100pixels.

C#// Set second column width to 100.fpSpread1.Sheets[0].Columns[1].Width = 100;

VB' Set second column width to 100.FpSpread1.Sheets(0).Columns(1).Width = 100

UsingCode

Spread Windows Forms Developer’s Guide 140

Copyright © GrapeCity, inc. All rights reserved.

Page 142: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettheWidth('WidthProperty'intheon-linedocumentation)propertyforaColumn('ColumnClass'intheon-linedocumentation)object.

Example

Thisexamplecodesetsthesecondcolumn’swidthto100pixels.

C#FarPoint.Win.Spread.Column Col1;Col1 = fpSpread1.Sheets[0].Columns[1];Col1.Width = 100;

VBDim Col1 As FarPoint.Win.Spread.ColumnCol1 = FpSpread1.Sheets(0).Columns(1)Col1.Width = 100

UsingtheSpreadDesigner

1. Tosetthedefaultcolumnwidth,a. Selectthesheettabforthesheetforwhichyouwanttosetthedefaultcolumnwidth.b. Inthepropertylist,intheAppearancecategory,selectColumnstoexpandthelistofpropertiesforthe

columns.c. Inthelistofpropertiesforcolumns,selectDefaulttoexpandthelistofdefaultcolumnsettings.d. Inthelistofdefaultsettings,changetheWidthsetting.e. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

2. Tosetaspecificcolumnwidth,a. Selectthecolumnforwhichyouwanttochangethewidth.b. Inthepropertieslistforthatcolumn,changetheWidthproperty.c. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Resizing the Row or Column to Fit the Data

Youcanresizethecolumnwidthorrowheightbasedonthelengthorbreadthofdatainthecellsinthatcolumnorrow.Thesizeoftheroworcolumnwiththelargestdataisreferredtoasthepreferredsize.

Themethodsthatmakeuseofthepreferredsizeare:

Row('RowClass'intheon-linedocumentation)class,GetPreferredHeight('GetPreferredHeightMethod'intheon-linedocumentation)methodColumn('ColumnClass'intheon-linedocumentation)class,GetPreferredWidth('GetPreferredWidthMethod'intheon-linedocumentation)methodSheetView('SheetViewClass'intheon-linedocumentation)class,GetPreferredRowHeight('GetPreferredRowHeightMethod'intheon-linedocumentation)methodSheetView('SheetViewClass'intheon-linedocumentation)class,GetPreferredColumnWidth('GetPreferredColumnWidthMethod'intheon-linedocumentation)methodSheetView('SheetViewClass'intheon-linedocumentation)class,GetPreferredCellSize('GetPreferredCellSizeMethod'intheon-linedocumentation)method

TheRowclassGetPreferredHeight('GetPreferredHeightMethod'intheon-linedocumentation)method

Spread Windows Forms Developer’s Guide 141

Copyright © GrapeCity, inc. All rights reserved.

Page 143: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

andColumnclassGetPreferredWidth('GetPreferredWidthMethod'intheon-linedocumentation)methodalwaysincludetheheadercells.TheSheetView('SheetViewClass'intheon-linedocumentation)classoverloadedGetPreferredColumnWidth('GetPreferredColumnWidthMethod'intheon-linedocumentation)methodhasoneoverloadthatalwaysincludestheheadercellswhileanotheroverloadallowsyoutochoosewhethertoincludeorexcludeheadercells.Inthefollowingcode,width1andwidth2includetheheadercellsbutwidth3excludestheheadercells.

float width1 = fpspread.Sheets[0].Columns[0].GetPreferredWidth();

float width2 = fpspread.Sheets[0].GetPreferredColumnWidth(0);

float width3 = fpspread.Sheets[0].GetPreferredColumnWidth(0, true);

Forinformationonsettingthecellsizebasedonthesizeofthedata,refertoResizingaCelltoFittheData.

Forinformationonallowingtheusertoresizethedata,refertoAllowingtheUsertoResizeRowsorColumns.

UsingCode

Usethelistedmethodstosetthewidthandheightofcolumnsorrows.

Example

Thisexamplesetstherowheightandcolumnwidth.

C#FarPoint.Win.Spread.Row row;FarPoint.Win.Spread.Column col;float sizerow;float sizercol;row = fpSpread1.ActiveSheet.Rows[0];col = fpSpread1.ActiveSheet.Columns[0];fpSpread1.ActiveSheet.Cells[0, 0].Text = "This text is used to determine the height and width.";sizerow = row.GetPreferredHeight();sizecol = col.GetPreferredWidth();row.Height = sizerow;col.Width = sizecol;

VBDim row As FarPoint.Win.Spread.RowDim col As FarPoint.Win.Spread.ColumnDim sizerow As SingleDim sizecol As Singlerow = FpSpread1.ActiveSheet.Rows(0)col = FpSpread1.ActiveSheet.Columns(0)FpSpread1.ActiveSheet.Cells(0, 0).Text = "This text is used to determine the height and width."sizerow = row.GetPreferredHeight()sizecol = col.GetPreferredWidth()row.Height = sizerowcol.Width = sizecol

Finding Rows or Columns That Have Data

Youcanworkwiththerowsandcolumnsofthesheetanddistinguishwhichoneshavedatabyusingvariousmembersof

Spread Windows Forms Developer’s Guide 142

Copyright © GrapeCity, inc. All rights reserved.

Page 144: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theSheetView('SheetViewClass'intheon-linedocumentation)class.Youcanusethefollowingmethodsavailableonthesheet:

GetLastNonEmptyColumn('GetLastNonEmptyColumnMethod'intheon-linedocumentation)methodGetLastNonEmptyRow('GetLastNonEmptyRowMethod'intheon-linedocumentation)method

Youcanreturnthenumberofrowsandcolumnsthathavedatausingtheseproperties:

NonEmptyColumnCount('NonEmptyColumnCountProperty'intheon-linedocumentation)propertyNonEmptyColumnCount('NonEmptyColumnCountProperty'intheon-linedocumentation)property

Creating Alternating Rows

Youmightwanttosetupyoursheetsothatalternatingrowshaveadifferentappearance.Forexample,inaledger,alternatingrowsoftenhaveagreenbackground.InSpread,youcansetupmultiplealternatingrowappearances,whichareappliedinsequence,startingwiththefirstrow.

Setupthealternatingrowsusinganindexintothealternatingrowappearances.Itmighthelptothinkofthedefaultrowappearanceasthefirstalternatingrowstyle(orstylezero,becausetheindexiszero-based).Settheotheralternatingrowappearancestosubsequentindexes.

Thefigurehereshowstheresultsforthefollowingexamplecodeforsettingupalternatingrowsforeverythreerows.

Formoredetails,refertotheAlternatingRow('AlternatingRowClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Selectthesheetforwhichyouwanttocreatealternatingrowsfromthecollectionlist.5. SelecttheAlternatingRowspropertyfromthepropertylistforthatsheet.6. Ifyouwanttoaddadditionalalternatingrowspatterns,settheCountpropertytothenumberofpatternsyou

want.7. ClicktheAlternatingRowspropertybuttontodisplaytheAlternatingRowCollectionEditor.8. Selectalternatingrowpatternforwhichtosetproperties.9. Setpropertiesfortheselectedpatternusingthepropertylist.10. ClickOKtoclosetheAlternatingRowCollectionEditor.11. ClickOKtoclosetheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 143

Copyright © GrapeCity, inc. All rights reserved.

Page 145: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingaShortcut

1. SettheCountpropertyfortheAlternatingRowsshortcutobject.2. SetthevariousappearanceandotherpropertiesoftheAlternatingRowsshortcutobject,suchastheBackColorandForeColorproperties.

3. CreateadditionalalternatingrowappearancesbysettingpropertiesforadditionalAlternatingRowsshortcutobjects,increasingtheindexforeachappearanceyoucreate.

Example

Thisexamplecodecreatesasheetthathasthreedifferentappearancesettingsforrows.Thefirstrowusesthedefaultappearance.Thesecondrowhasalightbluebackgroundwithnavytext,andthethirdrowhasalightyellowbackgroundwithnavytext.Thispatternrepeatsforallsubsequentrows.

C#fpSpread1.Sheets[0].AlternatingRows.Count = 3;fpSpread1.Sheets[0].AlternatingRows[0].BackColor = Color.RoyalBlue;fpSpread1.Sheets[0].AlternatingRows[0].ForeColor = Color.Navy;fpSpread1.Sheets[0].AlternatingRows[1].BackColor = Color.LightYellow;fpSpread1.Sheets[0].AlternatingRows[1].ForeColor = Color.Navy;fpSpread1.Sheets[0].AlternatingRows[2].BackColor = Color.Salmon;fpSpread1.Sheets[0].AlternatingRows[2].ForeColor = Color.Navy;

VBFpSpread1.Sheets(0).AlternatingRows.Count = 3FpSpread1.Sheets(0).AlternatingRows(0).BackColor = Color.RoyalBlueFpSpread1.Sheets(0).AlternatingRows(0).ForeColor = Color.NavyFpSpread1.Sheets(0).AlternatingRows(1).BackColor = Color.LightYellowFpSpread1.Sheets(0).AlternatingRows(1).ForeColor = Color.NavyFpSpread1.Sheets(0).AlternatingRows(2).BackColor = Color.SalmonFpSpread1.Sheets(0).AlternatingRows(2).ForeColor = Color.Navy

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetthealternatingrows.2. Fromthepropertylistforthatsheet,intheAppearancecategory,selecttheAlternatingRowsproperty.3. Ifyouwanttoaddadditionalalternatingrowspatterns,settheCountpropertytothenumberofpatternsyou

want.4. ClicktheAlternatingRowsbuttontodisplaytheAlternatingRowCollectionEditorasshowninthe

followingfigure.

Spread Windows Forms Developer’s Guide 144

Copyright © GrapeCity, inc. All rights reserved.

Page 146: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. Selectalternatingrowpatternforwhichtosetproperties.6. Setpropertiesfortheselectedpatternusingthepropertylist.7. ClickOKtoclosetheAlternatingRowCollectionEditor.8. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Appearance of Headers

Youcancustomizetheappearanceofheadercells.Thesetasksrelatetosettingtheappearanceofheadersforrowsorcolumnsinthesheet:

CustomizingtheDefaultHeaderLabelsCustomizingHeaderLabelTextCustomizingtheStyleofHeaderCellsAddingaGradienttoHeaderCellsCustomizingtheHeaderGridLinesSettingtheHeightorWidthofHeaderCellsCreatingaSpaninaHeader

Youcanalsocustomizeheaderappearanceinotherways.

Youcansetthestartingnumberforthedefaultheaderlabels.Ifyouhavemultiplerowsinthecolumnheaders,youcanselectwhichrowdisplaysthesortindicatorandwhichrowdisplaystheautomatictext.Youcanshowarowselectoriconfortheselectedrow(ShowRowSelector('ShowRowSelectorProperty'intheon-linedocumentation)).

Theappearanceoftheheadercellisdeterminedalsobythestate,whetheritisselected(active)ornot(normal),asshowninthefigurebelow.

Spread Windows Forms Developer’s Guide 145

Copyright © GrapeCity, inc. All rights reserved.

Page 147: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Forinformationontheappearanceofthesheetcorner,refertoCustomizingtheSheetCornerAppearanceFormoreinformationoncell-levelpropertiesofheadercells,refertotheCell('CellClass'intheon-linedocumentation)andCells('CellsClass'intheon-linedocumentation)objects.Formoreinformationonthepaintingoftheheadercells,refertotheColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation)classandRowHeaderRenderer('RowHeaderRendererClass'intheon-linedocumentation)class.

Customizing the Default Header Labels

BydefaulttheSpreadcomponentdisplayssequentiallettersinthebottomrowofthecolumnheaderandsequentiallyincreasingnumbersintheright-mostcolumnoftherowheader.Ifyoursheetdisplaysmultiplecolumnheaderrowsorrowheadercolumns,youcanspecifywhichcolumnorrowdisplaysthesedefaultlabels.

Inthefollowingfigure,thecolumnheadersshownumbersinsteadoflettersandthelabelsareshowninthesecondrowinsteadofthebottomrow.Youcanalsochoosenottodisplaythedefaultlabels.

Youcanalsosetthenumber(orletter)atwhichtostartthesequentialnumbering(orlettering)ofthelabelsusingapropertyofthesheet.UsetheStartingColumnNumber('StartingColumnNumberProperty'intheon-linedocumentation)propertyorStartingRowNumber('StartingRowNumberProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)objecttosetthenumberorletterdisplayedinthefirstcolumnheaderorfirstrowheaderrespectivelyonthesheet.Thestarting

Spread Windows Forms Developer’s Guide 146

Copyright © GrapeCity, inc. All rights reserved.

Page 148: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

numberorletterisusedonlyfordisplaypurposesandhasnoeffectontheactualrowandcolumncoordinates.

Note:Thevalueofastartingnumberorletterisaninteger,soiftheheaderdisplayslettersandsetthestartingletterto10,thefirstheadercellcontainstheletterJ.

Formoreinformation,refertotheseAPImembers:

RowHeader('RowHeaderClass'intheon-linedocumentation)classAutoText('AutoTextProperty'intheon-linedocumentation)andAutoTextIndex('AutoTextIndexProperty'intheon-linedocumentation)propertiesColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classAutoText('AutoTextProperty'intheon-linedocumentation)andAutoTextIndex('AutoTextIndexProperty'intheon-linedocumentation)propertiesSheetView('SheetViewClass'intheon-linedocumentation)classRowHeaderAutoText('RowHeaderAutoTextProperty'intheon-linedocumentation)andRowHeaderAutoTextIndex('RowHeaderAutoTextIndexProperty'intheon-linedocumentation)propertiesSheetView('SheetViewClass'intheon-linedocumentation)classColumnHeaderAutoText('ColumnHeaderAutoTextProperty'intheon-linedocumentation)andColumnHeaderAutoTextIndex('ColumnHeaderAutoTextIndexProperty'intheon-linedocumentation)propertiesHeaderAutoText('HeaderAutoTextEnumeration'intheon-linedocumentation)enumeration

Youcanalsochoosetodisplaycustomtextintheheadersinsteadoforinadditiontotheautomaticlabeltext.Forinstructions,seeCustomizingHeaderLabelText.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Clickthesheetforwhichyouwanttochangetheheaderlabels.5. Tochangetheheaderlabelsdisplayed,changethesettingoftheColumnHeaderAutoTextorRowHeaderAutoTextproperty.

6. Tochangetheroworcolumnintheheaderinwhichthelabelisdisplayed,changethesettingoftheColumnHeaderAutoTextIndexorRowHeaderAutoTextIndexproperty.

7. ClickOKtoclosetheeditor.

UsingaShortcut

1. Tochangethesettingsforthecolumnheader,settheSheetobject'sColumnHeaderAutoText('ColumnHeaderAutoTextProperty'intheon-linedocumentation)andColumnHeaderAutoTextIndex('ColumnHeaderAutoTextIndexProperty'intheon-linedocumentation)properties.

2. Tochangethesettingsfortherowheader,settheSheetobject'sRowHeaderAutoText('RowHeaderAutoTextProperty'intheon-linedocumentation)andRowHeaderAutoTextIndex('RowHeaderAutoTextIndexProperty'intheon-linedocumentation)properties.

Example

Thisexamplecodesetsthecolumnheadertodisplaynumbersinsteadofletters.

C#// Set the column header to display numbers instead of letters.fpSpread1.Sheets[0].ColumnHeader.RowCount = 3;

Spread Windows Forms Developer’s Guide 147

Copyright © GrapeCity, inc. All rights reserved.

Page 149: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].ColumnHeaderAutoTextIndex = 1;fpSpread1.Sheets[0].ColumnHeaderAutoText = FarPoint.Win.Spread.HeaderAutoText.Numbers;fpSpread1.Sheets[0].RowHeaderAutoText = FarPoint.Win.Spread.HeaderAutoText.Letters;

VB' Set the column header to display numbers instead of letters.FpSpread1.Sheets(0).ColumnHeader.RowCount = 3FpSpread1.Sheets(0).ColumnHeaderAutoTextIndex = 1FpSpread1.Sheets(0).ColumnHeaderAutoText = FarPoint.Win.Spread.HeaderAutoText.NumbersFpSpread1.Sheets(0).RowHeaderAutoText = FarPoint.Win.Spread.HeaderAutoText.Letters

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttomodifytheheaderlabel(automatictext)settings.2. Inthepropertieslist,intheAppearancecategory,double-clicktheColumnHeaderorRowHeaderproperty

todisplaythepropertiesforthecolumnorrowheader.3. ChangethesettingsoftheAutoTextandAutoTextIndexpropertiestospecifytheheaderlabeltodisplayand

whichcolumnorrowintheheadershoulddisplaytheautomatictext.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing Header Label Text

BydefaulttheSpreadcomponentdisplayslettersinthecolumnheadersandnumbersintherowheaders.Besidesthisautomatictext,youcanaddlabelstoanyoralloftheheadercells.Youcanaddcustomizetheheaderlabeltext,asshowninthefollowingfigurewherethefirstfourcolumnshavecustomlabels.

Tospecifythecustomtextforaheaderlabel,youcanusetheLabelpropertyoftheColumnHeader.ColumnorRowHeader.RowshortcutobjectsoryoucanusetheText('TextProperty'intheon-linedocumentation)propertyoftheCellsshortcutobjects.Forheaderswithmultiplecolumnsandmultiplerows,youusetheTextpropertyoftheCellsshortcutobjects.RefertotheexampleinCreatingaHeaderwithMultipleRowsorColumns.Formoreinformationontheindividualproperties,refertotheLabel('LabelProperty'intheon-linedocumentation)propertyintheColumn('ColumnClass'intheon-linedocumentation)classortheLabel('LabelProperty'intheon-linedocumentation)propertyintheRow('RowClass'intheon-linedocumentation)class.

Cellsintheheadersareseparatefromthecellsinthedataarea,sothecoordinatesforcellsintheheadersstartat0,0andcountupfromupperlefttolowerrightwithintheheader.Thesheetcornercellisseparateandisnotcountedwhen

Spread Windows Forms Developer’s Guide 148

Copyright © GrapeCity, inc. All rights reserved.

Page 150: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

specifyingheadercellcoordinates.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Clickthesheetforwhichyouwanttochangetheheaderlabels.

YoucannotaddorchangecustomtextincellsotherthanchangingthelabelsdisplayedwhenusingthePropertieswindow.

5. Inthepropertylist,selecttheCellspropertyandclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecolumnforwhichyouwanttochangethelabelsdisplayedtocustomtext.7. SettheLabelpropertytosetthecustomtext.8. ClickOKtoclosetheCell,Column,andRowEditor.9. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

Ifyouwanttochangethetextinaheadercellordisplaytextinacell,settheTextpropertyfortheColumnHeader’sCellobjecttothecustomtextyouwanttodisplay.Ifyouwanttosetthetextformultipleheadercells,calltheColumnHeader’sSetClip('SetClipMethod'intheon-linedocumentation)orSetClipValue('SetClipValueMethod'intheon-linedocumentation)methods.Ifyouwanttochangethelabelsdisplayed,settheLabelpropertyfortheColumnHeader’sColumnobjecttothecustomtextyouwanttodisplay.

Example

Thisexamplecodesetscustomtextforthelabelsinthefirstfourcolumnheaders.

C#// Set custom text for columns A through D.fpSpread1.Sheets[0].ColumnHeader.Columns[0].Label = "North";fpSpread1.Sheets[0].ColumnHeader.Columns[1].Label = "South";fpSpread1.Sheets[0].ColumnHeader.Columns[2].Label = "East";fpSpread1.Sheets[0].ColumnHeader.Columns[3].Label = "West";

VB' Set custom text for columns A through D.FpSpread1.Sheets(0).ColumnHeader.Columns(0).Label = "North"FpSpread1.Sheets(0).ColumnHeader.Columns(1).Label = "South"FpSpread1.Sheets(0).ColumnHeader.Columns(2).Label = "East"FpSpread1.Sheets(0).ColumnHeader.Columns(3).Label = "West"

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetcustomheadertext.2. Selecttheroworcolumnforwhichyouwanttosetcustomheadertext,thenright-clickandchooseHeaders.3. IntheHeaderEditor,double-clicktheheaderforwhichyouwanttodisplaycustomtext.

Ifthereisonlyoneheaderroworcolumn,clicktheonedisplayedcellwiththetext"<Default>".

4. Editthetexttobethecustomtextyouwant,andthenpressEntertostopediting.

Spread Windows Forms Developer’s Guide 149

Copyright © GrapeCity, inc. All rights reserved.

Page 151: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. Whenyouhaveeditedalltheheadertextyouwanttoedit,clickOKtoclosetheHeaderEditor,thenclickYestoapplyyourchangestotheselection.

6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Style of Header Cells

Youcancustomizethestyleofheadercellsifyouwanttochangethedefaultappearance.Youcansetorcustomizemanyfeatures,including:

stylepropertiesoftheheaderclassesmembersoftherendererspropertiesofthedefaultheaderclasses

Tocustomizestylepropertiesfortheheaderclasses,setthedefaultstyleoftheheadercellsbysettingtheRowHeader('RowHeaderClass'intheon-linedocumentation)DefaultStyle('DefaultStyleProperty'intheon-linedocumentation)propertyortheColumnHeader('ColumnHeaderClass'intheon-linedocumentation)DefaultStyle('DefaultStyleProperty'intheon-linedocumentation)property.Formoreinformationonwhatcanbeset,refertotheStyleInfo('StyleInfoClass'intheon-linedocumentation)objectandtheRowHeader('RowHeaderClass'intheon-linedocumentation)andColumnHeader('ColumnHeaderClass'intheon-linedocumentation)objects.

Before

After

Tocustomizeusingtherenderers,settheirmemberstocustomizetheappearanceofheaders.TherenderersusedintheOffice2013orOffice2016styleareshownandlistedinthefollowingfigure.

Spread Windows Forms Developer’s Guide 150

Copyright © GrapeCity, inc. All rights reserved.

Page 152: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanalsousedefaultclassestocustomizemanyoftheheaderappearancepropertiesbysettingthepropertiesoftheColumns.DefaultColumn('Columns.DefaultColumnClass'intheon-linedocumentation)classandtheRows.DefaultRow('Rows.DefaultRowClass'intheon-linedocumentation)class.

Youcanalsosetthegridlinesaroundtheheadercellstochangethethree-dimensionalappearance.RefertoCustomizingtheHeaderGridLines.

Youcanalsoaddgradientstotheheadercells.RefertoAddingaGradienttoHeaderCells.

UsingaShortcut

1. Tochangethestyleforthecolumnheader,defineastyleandthensettheColumnHeaderobjectDefaultStyle('DefaultStyleProperty'intheon-linedocumentation)property.

2. Tochangethesettingsfortherowheader,defineastyleandthensettheRowHeaderobjectDefaultStyle('DefaultStyleProperty'intheon-linedocumentation)property.

Example

Thisexamplecodedefinesastylewithnewcolorsandappliesittothecolumnheaderasshowninthefigureinthistopic.

C#fpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off;// Define a new style.FarPoint.Win.Spread.StyleInfo darkstyle = new FarPoint.Win.Spread.StyleInfo();darkstyle.BackColor = Color.Teal;

Spread Windows Forms Developer’s Guide 151

Copyright © GrapeCity, inc. All rights reserved.

Page 153: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

darkstyle.ForeColor = Color.Yellow;// Apply the new style to the column header of a sheet.fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle = darkstyle;

VBFpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off' Define a new style.Dim darkstyle As New FarPoint.Win.Spread.StyleInfo()darkstyle.BackColor = Color.Tealdarkstyle.ForeColor = Color.Yellow' Apply the new style to the column header of a sheet.FpSpread1.ActiveSheet.ColumnHeader.DefaultStyle = darkstyle

Adding a Gradient to Header Cells

Youcanchangetheappearanceofheadercellsbyaddingacolorgradient.Youcanhaveagradientfromonecolortoanothercolor.

Youcanimplementagradientappearancebycreatingacustomclassthatinheritsexistingcellclasses(ageneralcell,inthiscase)andchangethedisplaytoagradient.YoucanalsousetheGradientHeaderRenderer('GradientHeaderRendererClass'intheon-linedocumentation)class.

UsingaShortcut

UsetheGradientHeaderRenderer('GradientHeaderRendererClass'intheon-linedocumentation)classandtheRenderer('RendererProperty'intheon-linedocumentation)propertyforthecolumnheaderrowandrowheadercolumn.

Example

Thisexamplesetsagradientfortheheadersandthesheetcorner.

C#

Spread Windows Forms Developer’s Guide 152

Copyright © GrapeCity, inc. All rights reserved.

Page 154: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.CellType.GradientHeaderRenderer gr = new FarPoint.Win.Spread.CellType.GradientHeaderRenderer(Color.Yellow,Color.Orange, Color.YellowGreen, Color.Bisque,Drawing2D.LinearGradientMode.ForwardDiagonal);FpSpread1.ActiveSheet.ColumnHeader.Rows[0].Renderer = gr;FpSpread1.ActiveSheet.RowHeader.Columns[0].Renderer = gr;FpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = gr;

VBDim gr As New FarPoint.Win.Spread.CellType.GradientHeaderRenderer(Color.Yellow, Color.Orange, Color.YellowGreen, Color.Bisque, Drawing2D.LinearGradientMode.ForwardDiagonal)FpSpread1.ActiveSheet.ColumnHeader.Rows(0).Renderer = grFpSpread1.ActiveSheet.RowHeader.Columns(0).Renderer = grFpSpread1.ActiveSheet.SheetCorner.DefaultStyle.Renderer = gr

Customizing the Header Grid Lines

Youcanspecifythegridlinesforaheaderinwayssimilartosettingthegridlinesforasheet.Formoreinformationongridlines,refertoDisplayingGridLinesonaSheet.Inthefollowingfigure,therowheadergridlinesarethree-dimensionalwithredhuesandthecolumnheadergridlinesarethree-dimensionalwithbluehues.

Youcanspecifythehorizontalgridlinesseparatelyfromtheverticalgridlines.Youcanspecifythecolumnheadergridlinesseparatelyfromtherowheadergridlines.

Incode,youcancustomizethegridlinesinaheadereitherintheroworcolumnheaderclassesorintheSheetView('SheetViewClass'intheon-linedocumentation)class.Youcanuseanyofthefollowing:

RowHeader('RowHeaderClass'intheon-linedocumentation)class,HorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)propertyRowHeader('RowHeaderClass'intheon-linedocumentation)class,VerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertyColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classHorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)propertyColumnHeader('ColumnHeaderClass'intheon-linedocumentation)class,VerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)class

Spread Windows Forms Developer’s Guide 153

Copyright © GrapeCity, inc. All rights reserved.

Page 155: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

RowHeaderHorizontalGridLine('RowHeaderHorizontalGridLineProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)classRowHeaderVerticalGridLine('RowHeaderVerticalGridLineProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)classColumnHeaderHorizontalGridLine('ColumnHeaderHorizontalGridLineProperty'intheon-linedocumentation)propertySheetView('SheetViewClass'intheon-linedocumentation)classColumnHeaderVerticalGridLine('ColumnHeaderVerticalGridLineProperty'intheon-linedocumentation)propertyGridLine('GridLineClass'intheon-linedocumentation)class

Youcanalsosettheheaderstonotshowanygridlines,asshowninthefollowingfigure,bysettingthegridlinetypetoNone.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheparticularsheetfromtheselectiondrop-downlist.2. AnotherwaytoselectthesheetistoselecttheSpreadcomponent,selecttheSheetsproperty,andclickthe

buttontodisplaytheSheetViewCollectionEditor,andintheMemberslist,selectthesheet.3. Tosettherowheader(orcolumnheader)horizontalgridlinecolororverticalgridlinecolor,

a. SelecttheRowHeaderobject(orColumnHeaderobject)inthepropertylist,andexpandthelistofpropertiesunderthatobject.

b. SelecttheHorizontalGridLinepropertyortheVerticalGridLineproperty,andexpandthelistofpropertiesunderthatobject.

c. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.d. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbutton

todisplaythecolorpicker.Selectacolorinthecolorpicker.Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

4. IfyouselectedthesheetusingtheSheetsEditor,clickOKtoclosetheeditor.

UsingCode

1. CreateaGridLine('GridLineClass'intheon-linedocumentation)object,settingthecolororcolorsand

Spread Windows Forms Developer’s Guide 154

Copyright © GrapeCity, inc. All rights reserved.

Page 156: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thestyleforthegridlineintheconstructor.2. AssigntheGridLine('GridLineClass'intheon-linedocumentation)objecttothespecifiedheaderby

settingtheRowHeader('RowHeaderClass'intheon-linedocumentation)object(orColumnHeader('ColumnHeaderClass'intheon-linedocumentation)object)HorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)orVerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertytotheGridLine('GridLineClass'intheon-linedocumentation)objectyoucreatedinstep1.

3. YoucanalternativelyassigntheGridLine('GridLineClass'intheon-linedocumentation)objecttotheRowHeaderHorizontalGridLine('RowHeaderHorizontalGridLineProperty'intheon-linedocumentation),RowHeaderVerticalGridLine('RowHeaderVerticalGridLineProperty'intheon-linedocumentation),ColumnHeaderHorizontalGridLine('ColumnHeaderHorizontalGridLineProperty'intheon-linedocumentation),orColumnHeaderVerticalGridLine('ColumnHeaderVerticalGridLineProperty'intheon-linedocumentation)propertiesintheSheetViewobject.

Example

Thisexamplecodesetstherowheadergridlinestobethree-dimensionalwithredhuesandthecolumnheadergridlinestobethree-dimensionalwithbluehuesasshownintheprecedingfigure.

C#fpSpread1.Sheets[0].VisualStyles = FarPoint.Win.VisualStyles.Off;fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.ColumnHeaderRenderer();fpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = new FarPoint.Win.Spread.CellType.RowHeaderRenderer();FarPoint.Win.Spread.GridLine rgdln = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Raised, Color.Purple, Color.Red, Color.Orange);FarPoint.Win.Spread.GridLine cgdln = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Raised, Color.Purple, Color.Blue, Color.LightBlue);fpSpread1.Sheets[0].ColumnHeader.RowCount = 3;fpSpread1.Sheets[0].RowHeader.ColumnCount = 2;fpSpread1.Sheets[0].ColumnHeader.HorizontalGridLine = cgdln;fpSpread1.Sheets[0].RowHeader.HorizontalGridLine = rgdln;fpSpread1.Sheets[0].ColumnHeader.VerticalGridLine = cgdln;fpSpread1.Sheets[0].RowHeader.VerticalGridLine = rgdln;

VBFpSpread1.Sheets(0).VisualStyles = FarPoint.Win.VisualStyles.OffFpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.ColumnHeaderRendererFpSpread1.ActiveSheet.RowHeader.DefaultStyle.Renderer = New FarPoint.Win.Spread.CellType.RowHeaderRendererDim rgdln As New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Raised, Color.Purple, Color.Red, Color.Orange)Dim cgdln As New FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.Raised, Color.Purple, Color.Blue, Color.LightBlue)FpSpread1.Sheets(0).ColumnHeader.RowCount = 3FpSpread1.Sheets(0).RowHeader.ColumnCount = 2FpSpread1.Sheets(0).ColumnHeader.HorizontalGridLine = cgdlnFpSpread1.Sheets(0).RowHeader.HorizontalGridLine = rgdlnFpSpread1.Sheets(0).ColumnHeader.VerticalGridLine = cgdlnFpSpread1.Sheets(0).RowHeader.VerticalGridLine = rgdln

Spread Windows Forms Developer’s Guide 155

Copyright © GrapeCity, inc. All rights reserved.

Page 157: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetthegridlinecolors.Youcanselectthesheetfromthedrop-downlistorselectthesheetcornerorselecttheSpreadcomponent,thenselecttheSheetspropertyanddisplaytheSheetsEditor.

2. Tosettherowheader(orcolumnheader)horizontalgridlinecolororverticalgridlinecolor,a. IntheAppearancecategory,selecttheRowHeaderHorizontalGridLineorRowHeaderVerticalGridLineobject(orColumnHeaderHorizontalGridLineorColumHeaderVerticalGridLineobject)inthepropertylist,andexpandthelistofproperties.

b. Ifyouwanttodisplaythree-dimensionalgridlines,settheTypepropertytoLoweredorRaised.c. Ifthegridlinesarenotthree-dimensional,selecttheColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.

d. Ifthegridlinesarethree-dimensional,selecttheHighlightColorproperty,andthenclickthedrop-downbuttontodisplaythecolorpicker.Selectacolorinthecolorpicker.DothesamefortheShadowColorproperty.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting the Height or Width of Header Cells

Youcancustomizetheappearanceofheadercellsbychangingtherowheightorcolumnwidth,orboth,inanyoftherowsorcolumnsofheaders.

YoucanchangethesizebyaccessingpropertiesintheRowHeader('RowHeaderClass'intheon-linedocumentation)classfortherowheaderortheColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classforthecolumnheaderorboth.

UsingCode

UsetheHeight('HeightProperty'intheon-linedocumentation)propertyintheColumnHeader('ColumnHeaderClass'intheon-linedocumentation)classandtheWidth('WidthProperty'intheon-linedocumentation)propertyintheRowHeader('RowHeaderClass'intheon-linedocumentation)class.

Example

Thisexamplesetsthecolumnheaderheightandrowheaderwidth.

Spread Windows Forms Developer’s Guide 156

Copyright © GrapeCity, inc. All rights reserved.

Page 158: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#private void Form1_Load(object sender, System.EventArgs e){ // Change the column header height to 90 pixels. fpSpread1.ActiveSheet.ColumnHeader.Rows[0].Height = 90; // Change the row header width to 80 pixels. fpSpread1.ActiveSheet.RowHeader.Columns[0].Width = 80; }

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Change the column header height to 90 pixels. FpSpread1.ActiveSheet.ColumnHeader.Rows(0).Height = 90 ' Change the row header width to 80 pixels. FpSpread1.ActiveSheet.RowHeader.Columns(0).Width = 80End Sub

Creating a Span in a Header

Youcancreatecellspansinaheader,forexample,tomakeaheaderformultiplecolumnsorrows,orboth,asshowninthefigurebelow.

Youcancreatecellspansineitherthecolumnheadersorrowheadersorboth.Formorebackgroundaboutcreatingcellspans,refertoCreatingaSpanofCells.

Usethesemethodswhencreatingaspaninaheader:

AddColumnHeaderSpanCell('AddColumnHeaderSpanCellMethod'intheon-linedocumentation)AddRowHeaderSpanCell('AddRowHeaderSpanCellMethod'intheon-linedocumentation)

YoucanspecifyhowtheheaderspansareselectedwiththeCellSpanSelectionPolicy('CellSpanSelectionPolicyProperty'intheon-linedocumentation)property.

Spread Windows Forms Developer’s Guide 157

Copyright © GrapeCity, inc. All rights reserved.

Page 159: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Forinformationoncreatingmultiplerowsinthecolumnheadersormultiplecolumnsintherowheaders,refertoCreatingaHeaderwithMultipleRowsorColumns.

Youcancustomizethelabelsintheseheaders.Forinstructionsforcustomizingthelabels,seeCustomizingHeaderLabelText.

UsingaShortcut

CalltheSheetsobjectAddColumnHeaderSpanCell('AddColumnHeaderSpanCellMethod'intheon-linedocumentation)orAddRowHeaderSpanCell('AddRowHeaderSpanCellMethod'intheon-linedocumentation)method.

Example

Thisexamplecodesetsthefirstcellinthecolumnheadertospanacrosstwocolumns.

C#// Set the number of rows in the column header.FpSpread1.ActiveSheet.ColumnHeader.RowCount = 3;// Set the number of columns in the row header.FpSpread1.ActiveSheet.RowHeader.ColumnCount = 2;// Define the labels for the spanned column header cells.FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 0].Text = "East";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 1].Text = "West";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 2].Text = "East";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 3].Text = "West";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 4].Text = "East";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 5].Text = "West";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 6].Text = "East";FpSpread1.ActiveSheet.ColumnHeader.Cells[2, 7].Text = "West";FpSpread1.ActiveSheet.ColumnHeader.Cells[1, 0].Text = "1st Quarter";FpSpread1.ActiveSheet.ColumnHeader.Cells[1, 2].Text = "2nd Quarter";FpSpread1.ActiveSheet.ColumnHeader.Cells[1, 4].Text = "3rd Quarter";FpSpread1.ActiveSheet.ColumnHeader.Cells[1, 6].Text = "4th Quarter";FpSpread1.ActiveSheet.ColumnHeader.Cells[0, 0].Text = "Fiscal Year 2004";// Define the column header cell spans.FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 0, 1, 2);FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 2, 1, 2);FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 4, 1, 2);FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 6, 1, 2);FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(0, 0, 1, 8);// Define the label for the spanned row header cells.FpSpread1.ActiveSheet.RowHeader.Cells[0,0].Text ="Branch #";// Define the row header cell span.FpSpread1.ActiveSheet.AddRowHeaderSpanCell(0, 0, 12, 1);

VB' Set the number of rows in the column header.FpSpread1.ActiveSheet.ColumnHeader.RowCount = 3' Set the number of columns in the row header.FpSpread1.ActiveSheet.RowHeader.ColumnCount = 2' Define the labels for the spanned column header cells.FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 0).Text = "East"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 1).Text = "West"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 2).Text = "East"

Spread Windows Forms Developer’s Guide 158

Copyright © GrapeCity, inc. All rights reserved.

Page 160: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 3).Text = "West"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 4).Text = "East"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 5).Text = "West"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 6).Text = "East"FpSpread1.ActiveSheet.ColumnHeader.Cells(2, 7).Text = "West"FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 0).Text = "1st Quarter"FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 2).Text = "2nd Quarter"FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 4).Text = "3rd Quarter"FpSpread1.ActiveSheet.ColumnHeader.Cells(1, 6).Text = "4th Quarter"FpSpread1.ActiveSheet.ColumnHeader.Cells(0, 0).Text = "Fiscal Year 2004"' Define the column header cell spans.FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 0, 1, 2)FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 2, 1, 2)FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 4, 1, 2)FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 6, 1, 2)FpSpread1.ActiveSheet.AddColumnHeaderSpanCell(0, 0, 1, 8)' Define the label for the spanned row header cells.FpSpread1.ActiveSheet.RowHeader.Cells(0,0).Text ="Branch #"' Define the row header cell span.FpSpread1.ActiveSheet.AddRowHeaderSpanCell(0, 0, 12, 1)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttospanheadercells.2. Selecttheroworcolumnforwhichyouwanttosetcustomheadertext,thenright-clickandchooseHeaders.3. IntheHeaderEditor,clicktheleft-mostheadercellinthesetofcellsforwhichyouwanttocreateaspan.4. Inthepropertylistforthatheadercell,settheColumnSpanorRowSpanpropertytothenumberofcellsto

spanstartingfromtheselectedheadercell.5. ClickOKtoclosetheHeaderEditor.6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Appearance of a Cell

Whenyouworkwithcellsinthedataareaofthespreadsheet,youcanworkwiththeobjectsusingtheshortcutsincode(Cell('CellClass'intheon-linedocumentation)andCells('CellsClass'intheon-linedocumentation)classes)oryoucanworkdirectlywiththemodel.Mostdeveloperswhoarenotcreatingextensivecustomizationsfinditeasiertoworkwiththeshortcutobjects.

Thesetasksrelatetosettingtheappearanceofindividualcellsinthedataareaofthespreadsheet:

ColoringaCellSettingaBackgroundImagetoaCellAligningCellContentsResizingaCelltoFittheDataResizingtheDatatoFittheCellCustomizingCellBordersCreatingaSpanofCellsAllowingCellstoMergeAutomaticallyAllowingCellDatatoOverflowCreatingandApplyingaStyleforCellsUsingSparklines

Spread Windows Forms Developer’s Guide 159

Copyright © GrapeCity, inc. All rights reserved.

Page 161: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Note:Theword"appearance"describesthegenerallookofthecell,notthesettingsintheAppearanceclass,whichcontainsonlyafewsettingsandisusedfortheappearanceofseveralpartsoftheinterface.MostoftheappearancesettingsforacellareintheStyleInfo('StyleInfoClass'intheon-linedocumentation)class.

Settingsappliedtoaparticularcelloverridethesettingsthataresetatthecolumnorrowlevel.Foramoredetailedexplanation,refertoObjectParentage.

Othercell-levelappearancesettingsaresetbythecelltype.Formoreinformationonsettingsrelatedtocelltypes,refertoCustomizingInteractionwithCellTypes.YoucaneditpropertiesoftheCellsclassesinthePropertieswindow(inSpreadDesignerorinVisualStudio.NET).FormoreinformationontheCells,Columns,andRowsEditorthatisavailablefromthePropertieswindow,refertotheexplanationofthiseditorintheSpreadDesignerGuide(on-linedocumentation).

Formoreinformation,refertothefollowingtopics:

Forinformationonheadercells,refertoCustomizingtheAppearanceofHeaders.Fortasksthatrelatetosettingtheuserinteractionatthecelllevel,refertoCustomizingInteractioninCells.ForinformationoncustomizingtheappearanceofcellsusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).FormoreinformationontheCellandCellsobjects,refertotheAssemblyReference(on-linedocumentation).

Coloring a Cell

Youcansetthebackgroundandforeground(text)colorsforacellorforagroupofcells.Anexampleofthedifferentwaystosetthecolorsforacellisshowninthefollowingfigure.Thecodethatcreatedthesecellcolorsisprovidedintheexample.

YoucanspecifythebackgroundcolorforacellincodebyusingtheBackColor('BackColorProperty'intheon-linedocumentation)propertyforthatcell.YoucanspecifythetextcolorincodebyusingtheForeColor('ForeColorProperty'intheon-linedocumentation)property.

YoucanalsospecifythecolorstodisplaywhenthecellsareselectedusingSelectionBackColor('SelectionBackColorProperty'intheon-linedocumentation)andSelectionForeColor('SelectionForeColorProperty'intheon-linedocumentation)forthesheet.Formoreinformationonselections,refertoCustomizingtheSelectionAppearance.

Youcanalsospecifyadifferentcolor(forbackgroundorfortext)inlockedcellsusingtheLockBackColor('LockBackColorProperty'intheon-linedocumentation)andLockForeColor('LockForeColorProperty'intheon-linedocumentation)propertiesoftheSheetVieworAppearanceobjects.Formoreinformationonlockedcells,refertoLockingaCell.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 160

Copyright © GrapeCity, inc. All rights reserved.

Page 162: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertieslist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecolor.7. Inthepropertieslist,selecttheBackColorpropertyandselectacolorfromtheCustom,Web,orSystemtab.SelecttheForeColorpropertyandselectthatcolor.

8. ClickOKtoclosetheCell,Column,andRowEditor.9. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

SettheBackColor('BackColorProperty'intheon-linedocumentation)propertyortheForeColor('ForeColorProperty'intheon-linedocumentation)propertyfortheCellsobject.

Example

Thisexamplecodesetsthebackgroundcolorandtextcolorforthesecondcell,setsthecolorsforlockedcells,andsetsthecolorsforselections.

C#fpSpread1.ActiveSheet.Cells[0,1].Value = "This is default.";fpSpread1.ActiveSheet.Cells[1,1].Value = "This is custom.";fpSpread1.ActiveSheet.Cells[2,1].Value = "This is locked.";fpSpread1.ActiveSheet.Cells[3,1].Value = "This is selected.";fpSpread1.ActiveSheet.Cells[1,1].BackColor = Color.LimeGreen;fpSpread1.ActiveSheet.Cells[1,1].ForeColor = Color.Yellow;fpSpread1.ActiveSheet.Cells[2,1].Locked = true;fpSpread1.ActiveSheet.Protect = true;fpSpread1.ActiveSheet.LockBackColor = Color.Brown;fpSpread1.ActiveSheet.LockForeColor = Color.Orange;

fpSpread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColors;fpSpread1.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range;fpSpread1.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell;fpSpread1.ActiveSheet.SelectionBackColor = Color.Pink;fpSpread1.ActiveSheet.SelectionForeColor = Color.Red;

VBFpSpread1.ActiveSheet.Cells(0,1).Value = "This is default."FpSpread1.ActiveSheet.Cells(1,1).Value = "This is custom."FpSpread1.ActiveSheet.Cells(2,1).Value = "This is locked."FpSpread1.ActiveSheet.Cells(3,1).Value = "This is selected."FpSpread1.ActiveSheet.Cells(1,1).BackColor = Color.LimeGreenFpSpread1.ActiveSheet.Cells(1,1).ForeColor = Color.YellowFpSpread1.ActiveSheet.Cells(2,1).Locked = TrueFpSpread1.ActiveSheet.Protect = TrueFpSpread1.ActiveSheet.LockBackColor = Color.BrownFpSpread1.ActiveSheet.LockForeColor = Color.Orange

FpSpread1.ActiveSheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.SelectionColorsFpSpread1.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.Range

Spread Windows Forms Developer’s Guide 161

Copyright © GrapeCity, inc. All rights reserved.

Page 163: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.CellFpSpread1.ActiveSheet.SelectionBackColor = Color.PinkFpSpread1.ActiveSheet.SelectionForeColor = Color.Red

UsingCode

SettheBackColor('BackColorProperty'intheon-linedocumentation)propertyortheForeColor('ForeColorProperty'intheon-linedocumentation)propertyforaCell('CellClass'intheon-linedocumentation)object.

Example

ThisexamplecodesetsthebackgroundcolorforcellA1toAzureandtheforegroundcolortoNavy,thensetsthebackgroundcolorforcellsC3throughD4toBisque.

C#FarPoint.Win.Spread.Cell cellA1;cellA1 = fpSpread1.ActiveSheet.Cells[0, 0];cellA1.BackColor = Color.Azure;cellA1.ForeColor = Color.Navy;FarPoint.Win.Spread.Cell cellrange;cellrange = fpSpread1.ActiveSheet.Cells[2,2,3,3];cellrange.BackColor = Color.Bisque;

VBDim cellA1 As FarPoint.Win.Spread.CellcellA1 = FpSpread1.ActiveSheet.Cells(0, 0)cellA1.BackColor = Color.AzurecellA1.ForeColor = Color.NavyDim cellrange As FarPoint.Win.Spread.Cellcellrange = FpSpread1.ActiveSheet.Cells(2, 2, 3, 3)cellrange.BackColor = Color.Bisque

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosetthebackgroundcolor.2. Inthepropertieslist(intheMisccategory),selecttheBackColorpropertytosetthebackgroundcolor.3. Clickthedrop-downbuttontodisplaythecolorpickerandchoosethecolorfromtheavailablecolors.4. Tosetthetextcolor,repeatthosestepsandselectForeColorpropertyinthepropertieslist.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Background Image to a Cell

Youcancustomizethebackgroundofacellbyaddingagraphicimage.

Spread Windows Forms Developer’s Guide 162

Copyright © GrapeCity, inc. All rights reserved.

Page 164: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformationonimagecelltypes,refertoSettinganImageCell.

Formoreinformationonsettinganimageforallthecellsinasheet(aspartofthedefaultstyle)refertoSettingaBackgroundImageforaSheet.

Example

Thefollowingexampleaddsanimagetoatextcell.

C#private void Form1_Load(object sender, System.EventArgs e){// Create an instance of a text cell.FarPoint.Win.Spread.CellType.TextCellType t = new FarPoint.Win.Spread.CellType.TextCellType();// Load an image file and set it to BackgroundImage property.FarPoint.Win.Picture p = new FarPoint.Win.Picture(Image.FromFile("D:\\images\\lionstatue.jpg"), FarPoint.Win.RenderStyle.Stretch);t.BackgroundImage = p;// Apply the text cell.fpSpread1.ActiveSheet.Cells[1, 1].CellType = t;// Set the size of the cell so the image is displayedfpSpread1.ActiveSheet.Rows[1].Height = 50;fpSpread1.ActiveSheet.Columns[1].Width = 150;}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Create an instance of a text cell. Dim t As New FarPoint.Win.Spread.CellType.TextCellType ' Load an image file and set it to BackgroundImage property. Dim p As New FarPoint.Win.Picture(Image.FromFile("D:\\images\\lionstatue.jpg"), FarPoint.Win.RenderStyle.Stretch) t.BackgroundImage = p ' Apply the text cell. FpSpread1.ActiveSheet.Cells(1, 1).CellType = t ' Set the size of the cell so the image is displayed

Spread Windows Forms Developer’s Guide 163

Copyright © GrapeCity, inc. All rights reserved.

Page 165: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.Rows(1).Height = 50 FpSpread1.ActiveSheet.Columns(1).Width = 150End Sub

Aligning Cell Contents

Youcandeterminehowthecontentsarealignedinacellorinagroupofcells.Incode,simplysettheHorizontalAlignment('HorizontalAlignmentProperty'intheon-linedocumentation)propertyandtheVerticalAlignment('VerticalAlignmentProperty'intheon-linedocumentation)properties,andmakeuseoftheCellHorizontalAlignment('CellHorizontalAlignmentEnumeration'intheon-linedocumentation)andCellVerticalAlignment('CellVerticalAlignmentEnumeration'intheon-linedocumentation)enumerations.IntheSpreadDesigner,setthosepropertiesaccordingly.Thefollowingfigureshowstheresultofthecodeinthefirstexample.

ThereareadditionalpropertiesintheCell('CellClass'intheon-linedocumentation)classsuchasTextIndent('TextIndentProperty'intheon-linedocumentation)andCellPadding('CellPaddingProperty'intheon-linedocumentation)thatcanbeusedtocreateextramarginsaroundcelltext.

Foranexplanationofhowthealignmentaffectstheoverflowofdata,refertoAllowingCellDatatoOverflow

YoucankeepthecellalignmentwheneditingwiththeAllowEditorVerticalAlign('AllowEditorVerticalAlignProperty'intheon-linedocumentation)property.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertieslist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthealignment.7. Inthepropertieslist,selecttheHorizontalAlignmentpropertyandchoosethealignment.8. Tosettheverticalalignment,selecttheVerticalAlignmentpropertyinthepropertieslistandchoosethe

alignment.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

SettheHorizontalAlignment('HorizontalAlignmentProperty'intheon-linedocumentation)propertyand

Spread Windows Forms Developer’s Guide 164

Copyright © GrapeCity, inc. All rights reserved.

Page 166: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theVerticalAlignment('VerticalAlignmentProperty'intheon-linedocumentation)propertiesfortheCellsshortcutobject.

Example

Thisexamplecodesetsthehorizontalalignmentofthefirstcell(A1)toberight-aligned,theverticalalignmentofthatcelltobebottom-aligned,andthehorizontalalignmentandverticalalignmentofcellsfromB2toC3tobecentered.Theprecedingfigureillustratestheresults.

C#fpSpread1.Sheets[0].Cells[0,0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Right;fpSpread1.Sheets[0].Cells[0,0].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom;fpSpread1.Sheets[0].Cells[1,1,2,2].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;fpSpread1.Sheets[0].Cells[1,1,2,2].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;

VBFpSpread1.Sheets(0).Cells(0,0).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.RightFpSpread1.Sheets(0).Cells(0,0).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.BottomFpSpread1.Sheets(0).Cells(1,1,2,2).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.CenterfpSpread1.Sheets(0).Cells(1,1,2,2).VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center

UsingCode

SettheHorizontalAlignment('HorizontalAlignmentProperty'intheon-linedocumentation)propertyandtheVerticalAlignment('VerticalAlignmentProperty'intheon-linedocumentation)propertiesfortheCell('CellClass'intheon-linedocumentation)object.

Example

Thisexamplecodesetsthehorizontalalignmentforaspecificcellandtheverticalalignmentforarangeofcells.

C#FarPoint.Win.Spread.Cell cellA1;cellA1 = fpSpread1.ActiveSheet.Cells[0, 0];cellA1.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Right;cellA1.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom; FarPoint.Win.Spread.Cell cellrange;cellrange = fpSpread1.ActiveSheet.Cells[1,1,2,2];cellrange.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;cellrange.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;

VBDim cellA1 As FarPoint.Win.Spread.CellcellA1 = FpSpread1.ActiveSheet.Cells(0, 0)cellA1.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Right

Spread Windows Forms Developer’s Guide 165

Copyright © GrapeCity, inc. All rights reserved.

Page 167: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

cellA1.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Bottom Dim cellrange As FarPoint.Win.Spread.Cellcellrange = FpSpread1.ActiveSheet.Cells(1, 1, 2, 2)cellrange.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Centercellrange.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosetthehorizontalalignmentofthecellcontents.2. Inthepropertieslist(intheMisccategory),selecttheHorizontalAlignmentproperty.3. Clickthedrop-downbuttontodisplaythechoicesandchoosethealignment.4. Repeatthesestepsandinthepropertieslist,selectVerticalAlignmenttosettheverticalalignmentofthecell

orcells.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Resizing a Cell to Fit the Data

Youcanresizethecellbasedonthelengthofthedatainthecell.Thesizeofthecellwiththelargestdataiscalledthepreferredsize.

TheSheetViewGetPreferredCellSize('GetPreferredCellSizeMethod'intheon-linedocumentation)methodretrievesthepreferredsizeofthespecifiedcell.

Thisfigureshowstheresultoftheexamplecodethatresizesthecolumnbasedonthetextinthecellsofthatcolumn.

Somecelltypesignorethesizeparameterwhileothercelltypesusethesizeparameter.Forexample,asinglelinetextcelltypeignoresthesizeparameterwhileaword-wrappingmultiple-linetextcelltypeusesthesizeparameter'swidthpropertytodeterminelinebreaks.Basically,thesizeparameter'swidth(orheight)isusedindeterminingwrappingbreaksforhorizontal(orvertical)content.Thesheet'sGetPreferredRowHeight('GetPreferredRowHeightMethod'intheon-linedocumentation)methodpassesthecell'scurrentsizetothecellrenderer'sGetPreferredSizemethodsanditassumesthatyouwantmultiple-linetextcellstoexpandverticallyusingthecell'scurrentwidth.Formoreinformationonhowcelltypesdisplaydata,refertoUnderstandingHowCellTypesDisplayandFormatData.

BesidesgettingtheheightforarowwiththeGetPreferredRowHeight('GetPreferredRowHeightMethod'intheon-linedocumentation)method,youcangetawidthforacolumnusingtheGetPreferredColumnWidth('GetPreferredColumnWidthMethod'intheon-linedocumentation)method.

Forinformationonsettinganentireroworcolumnofcellsbasedonthesizeofthedata,refertoResizingtheRoworColumntoFittheData.

UsingCode

Setthewidthofthecelltothevalueofthepreferredsizetoshowtheentirecontentsofthecell.

Example

Aftersettingthetextinthecontents,resizethecolumnwidthofthecelltomatchthemaximumsizeofthecell.

C#System.Drawing.Size sz;

Spread Windows Forms Developer’s Guide 166

Copyright © GrapeCity, inc. All rights reserved.

Page 168: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.SetValue(0, 0, "Expand the cell to fit the text.");sz = fpSpread1.ActiveSheet.GetPreferredCellSize(0,0);fpSpread1.ActiveSheet.Columns[0].Width = sz.Width;MessageBox.Show("The width of the cell is " + sz.Width.ToString());

VBDim sz As System.Drawing.SizefpSpread1.ActiveSheet.SetValue(0, 0, "Expand the cell to fit the text.")sz = fpSpread1.ActiveSheet.GetPreferredCellSize(0, 0)fpSpread1.ActiveSheet.Columns(0).Width = sz.WidthMessageBox.Show("The width of the editor is " & sz.Width.ToString())

Resizing the Data to Fit the Cell

Youcandisplayallthetextinthecellwiththeshrinktofitoption.Thefontsizeisreducedifthetextistoolongforthevisibleareaofthecell.

Thispropertyisavailableforthecurrency,datetime,mask,number,percent,regularexpression,text,orgeneralcell.

ThefollowingimageshowsthedifferencebetweenacellwiththeShrinkToFit('ShrinkToFitProperty'intheon-linedocumentation)propertysettoTrueandacellwiththepropertysettoFalse.

UsingCode

1. Createacellthatsupportstheshrinktofitoptionsuchastheregularexpressioncell.2. SettheShrinkToFitproperty.3. SettheCellTypeproperty.4. Typeavalidvalueforthecellsuchas11240082777fortheregularexpressioncellinthisexample.

Example

Thisexamplereducesthefontsizesothetextisdisplayedinthecell.

C#FarPoint.Win.Spread.CellType.RegularExpressionCellType testcell = new FarPoint.Win.Spread.CellType.RegularExpressionCellType();testcell.ShrinkToFit = true;testcell.RegularExpression = "^\\d{11}$";fpSpread1.Sheets[0].Cells[0, 0].CellType = testcell;

VB

Spread Windows Forms Developer’s Guide 167

Copyright © GrapeCity, inc. All rights reserved.

Page 169: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim testcell As New FarPoint.Win.Spread.CellType.RegularExpressionCellType()testcell.ShrinkToFit = Truetestcell.RegularExpression = "^\d{11}$"FpSpread1.Sheets(0).Cells(0, 0).CellType = testcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosethecelltype.3. ExpandtheCellTypepropertyandsettheShrinkToFitpropertytoTrue.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing Cell Borders

Youcancustomizetheappearanceofcellsbysettingbordersforacellorrangeofcells.

Tasksthatrelatetocustomizingcellbordersinclude:

CreatingandCustomizingCellBordersCreatingBorderswithDiagonalLinesCreatingaComplexBorderwithMultipleLines

Creating and Customizing Cell Borders

Youcancustomizetheappearanceofthecellsbysettingbordersforacellorrangeofcells.Bordersaresetonlyforcells;youcansetaborderforacolumn,row,sheet,orrangeofcells,buttheeffectisthesameasassigningthesameborderobjecttoeachindividualcellinthecolumn,row,sheet,orrangeofcells.Forarangeofcells,thesameborderobjectisusedbyeachcell.Abordercanbedisplayedontheleft,right,top,orbottom,oraroundallfoursidesofacellorcellrange.Abordercanbedisplayedasanyofthebuilt-instylesshowninthefollowingtableorcustomizedbordersthatyoudefine.Bydefault,noborderisdisplayed.Tosettheborder,usetheCellBorder('BorderProperty'intheon-linedocumentation)property,ColumnBorder('BorderProperty'intheon-linedocumentation)property,orRowBorder('BorderProperty'intheon-linedocumentation)property.

IntheSheetView('SheetViewClass'intheon-linedocumentation)class,thereistheSetOutlineBorder('SetOutlineBorderMethod'intheon-linedocumentation)methodthathastheeffectofsettingaborderaroundtheoutsideofarangeofcells.Actually,itsetsindividualbordersineachcellintheperimeteroftherangetoachievethiseffect.Fortheinsidebordersofthatrange,thereistheSetInsideBorder('SetInsideBorderMethod'intheon-linedocumentation)methodforsettingthebordersinside.

Youcanspecifymorethanonestyleandcolorforthesamecell,column,row,orblockofcells.Thecellbordersaredrawnfromlefttorightandtoptobottominthesheet.Iftwoadjacentbordershaveadifferentstyleorcolor,thelastonedrawnhasprecedenceandistheonethatisdisplayed.Cellbordersreflecttheprecedenceusedbythesheettodeterminethecharacteristicsforsheetelements.Thatis,cellsettingsoverriderow,column,andsheetsettings,inthatorder.Formoreinformation,seethelistofprecedenceinthedescriptionofObjectParentage.

ForinformationoncustomizingbordersusingtheSpreadDesigner,refertothedescriptionoftheBorderEditor(on-linedocumentation)intheSpreadDesignerGuide.

BorderDisplay

ThecellbordersoftheleftandtopedgesarepainteddependingonthesettingoftheBorderCollapse('BorderCollapseProperty'intheon-linedocumentation)property.WhenBorderCollapseissettoSeparate,(whichisthedefault)theleftandtopedgesofthecellborderarepaintedjustinsidethegridlines.Thus,theleftandtopcellborderedgesaredisplayedintheleftandtoprows.WhenBorderCollapseissettoCollapse,theleftandtopedgesofthecellborderarepaintedoverthegridlinestotheleftandtopofthecell.

Spread Windows Forms Developer’s Guide 168

Copyright © GrapeCity, inc. All rights reserved.

Page 170: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Theleftcolumnandtoprow(ofaviewport,rowheader,columnheader,orsheetcorner)arepositionedsothatthosegridlinesarejustoutsideoftheviewableareaandthusthosecellborderedgesarejustoutsideoftheviewablearea(thatis,thosecellborderedgesarenotdisplayed).KeepthisinmindifyouchoosenottodisplayaborderfortheSpreadcomponentorheadersforthesheet,astheresultmightbevisuallyconfusing.Therightandbottomedgesofthecellborderarealwayspaintedoverthegridlinestotherightandbottomofthecell,regardlessoftheBorderCollapsesetting.Formoreinformation,seetheOverlappingBorderssectioninthistopic.

BorderStyles

Thetablebelowsummarizesthedifferentcellborderstyles.

Style Example Description FarPoint.WinClassName

Beveled Hasthree-dimensionalappearanceifthehighlightandshadowaresettodifferentcolors.

BevelBorder('BevelBorderClass'intheon-linedocumentation)

Complex Eachsideofthecellcandisplayadifferentcolorandtypeofborder,withborderpatternssuchasdashedordotted.(SeeCreatingaComplexBorderwithMultipleLines.)

ComplexBorder('ComplexBorderClass'intheon-linedocumentation)

Compound Hastwobeveledborders,whichcanbeseparatedbyaframe

CompoundBorder('CompoundBorderClass'intheon-linedocumentation)

Double-line

Hastwoparallellines. DoubleLineBorder('DoubleLineBorderClass'intheon-linedocumentation)

Single-lineborder

Hasasimple,singleline. LineBorder('LineBorderClass'intheon-linedocumentation)

Rounded-edge,single-line

Hasasinglelinebutthecornersarerounded. RoundedLineBorder('RoundedLineBorderClass'intheon-linedocumentation)

Differentborderstylesletyousetdifferentoptions.Forexample,thecomplexborderletsyousetdifferentstylesofborderdisplayforeachsideofthecell.TheComplexBorder('ComplexBorderClass'intheon-linedocumentation)classalsoallowsyoutocreatediagonalborderlines.Intheexampleshownabove,thetopandbottombordersaredashedbordersandhaveadifferentcolorfromtheleftandrightborders.Foreachoftheseborderstyles,youcanturnoffthedisplayoftheborderonanysideofthecell.

OverlappingBorders

Cellbordersareappliedaroundtheedgeofeachcell,andcanoverlapothercellbordersbutdonotdosobydefault.Thefollowingfigureshowstwosetsofcells.Inthefirstset,thecellbordersdonotoverlap,andareseparate.Inthesecondset,thecellbordersoverlap.

Borders ExampleAppearanceSeparateborders(notcollapsed)

Spread Windows Forms Developer’s Guide 169

Copyright © GrapeCity, inc. All rights reserved.

Page 171: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Collapsedborders(overlapping)

WhetherbordersoverlapisdeterminedbythesettingoftheBorderCollapse('BorderCollapseProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Iftwoadjacentcellshavedifferentsettings,andthepropertyissettohavethecellbordersoverlap,thecellthatistotherightortothebottomhasprecedence.Keepinmindthatthesheetisdrawnfromlefttorightandfromtoptobottomonthescreen.Eachsubsequentcell'sborderpropertiestakeprecedenceoverthecelldrawnbeforeit.

Cellbordersonlyoverlaptheamountofthegridlinewidth.Therefore,iftwo3pixelbordersoverlap,andthegridlineis1pixel,theoverlappedbordersare5pixelswide.

DifferentfromGridLines

Bordersaredifferentfromgridlinesinthattheycreateaborderaroundacellorrangeofcellsratherthandistinguishingrowsandcolumns.Bordersaredrawnoverthegridlines.

Ifyoudisplaycellbordersforallthecellsinasheet,youmightwanttoturnoffthegridlinedisplaybysettingthegridlinetypeoftheHorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation)andVerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)propertiesofthesheettoNone.FormoreinformationongridlinesrefertoDisplayingGridLinesonaSheet.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Clickthesheetforwhichyouwanttosetcellborders.5. SelecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.6. Selectthecellorcellsforwhichyouwanttosettheborder.7. Inthepropertylist,settheBorderproperty.8. Ifyouwanttocustomizetheborderyouhaveset,double-clicktheBorderpropertytodisplaytheborder

propertiesfortheborderstyleyouhaveselected.9. Settheborderpropertiesforyourborder.10. ClickOKtoclosetheCell,Column,andRowEditor.11. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

1. Createanewborderobjectofthetypeofborderyouwanttocreate(BevelBorder,ComplexBorder,andsoon).2. SettheCellsshortcutobjectBorderpropertytothenewborderobjectyoucreated.

Example

Thisexamplecodecreatesabevelborderandthensetsacell’sbordertobethebevelborder.

C#// Create the bevel border.FarPoint.Win.BevelBorder bevelbrdr = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Cyan, Color.DarkCyan);// Set the bevel border to the cell B3 border.fpSpread1.Sheets[0].Cells[4, 3].Border = bevelbrdr;

Spread Windows Forms Developer’s Guide 170

Copyright © GrapeCity, inc. All rights reserved.

Page 172: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VB' Create the bevel border.Dim bevelbrdr As New FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Cyan, Color.DarkCyan)' Set the bevel border to the cell B3 border.FpSpread1.Sheets(0).Cells(4, 3).Border = bevelbrdr

UsingCode

1. Createanewborderobjectofthetypeofborderyouwanttocreate(BevelBorder('BevelBorderClass'intheon-linedocumentation),ComplexBorder('ComplexBorderClass'intheon-linedocumentation),andsoon).

2. CreateanewSheetView('SheetViewClass'intheon-linedocumentation)object.3. SettheBorder('BorderProperty'intheon-linedocumentation)propertyforacell(orroworcolumn)

objectequaltotheborderobjectyoucreated.4. AssigntheSheetView('SheetViewClass'intheon-linedocumentation)objecttoasheetinthe

component.

Example

Thisexamplecodecreatesabevelborderandthensetsacell’sbordertobethebevelborder.

C#// Create a new bevel border.FarPoint.Win.BevelBorder bevelbrdr = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Cyan, Color.DarkCyan);// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet=new FarPoint.Win.Spread.SheetView();// Set a cell's border to be the bevel border.newsheet.Cells[4, 3].Border = bevelbrdr;// Assign the SheetView object to the first sheet.fpSpread1.Sheets[0] = newsheet;

VB' Create a new bevel border.Dim bevelbrdr As New FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Cyan, Color.DarkCyan)' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Set a cell's border to be the bevel border.newsheet.Cells(4, 3).Border = bevelbrdr' Assign the SheetView object to the first sheet.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetacellborder.2. Selectthecellorrangeofcellsforwhichyouwanttosettheborder.3. Right-clickandselectBorders,orinthepropertylist(intheMisccategory),settheBorderproperty.4. Ifyouwanttocustomizetheborderyouhaveset,double-clicktheBorderpropertytodisplaytheborder

Spread Windows Forms Developer’s Guide 171

Copyright © GrapeCity, inc. All rights reserved.

Page 173: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

propertiesfortheborderstyleyouhaveselected.5. Settheborderpropertiesforyourborder.6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Creating Borders with Diagonal Lines

Youcancreatecellborderswithdiagonallinesasshowninthefollowingimage.

Youcanalsodisplaythediagonallinesinacellborderthatispartofashapeasdisplayedinthefollowingimage.

Thecellmusthaveaborderandthetextorientationmustnotbezero.TheEnableDiagonalLine('EnableDiagonalLineProperty'intheon-linedocumentation)propertyshouldalsobesettotrue.

TheComplexBorder('ComplexBorderClass'intheon-linedocumentation)classalsoallowsyoutocreatediagonalborderlinesinthecell.

UsingCode

Spread Windows Forms Developer’s Guide 172

Copyright © GrapeCity, inc. All rights reserved.

Page 174: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Createatextcell.2. SettheTextOrientation('TextOrientationProperty'intheon-linedocumentation)property.3. SettheTextRotationAngle('TextRotationAngleProperty'intheon-linedocumentation)property.

Example

Thisexamplecodecreatesatextcellwithadiagonalborder.

C#fpSpread1.Sheets[0].Cells[1, 3].Text = "Test"; //Cell has to have valuefpSpread1.Sheets[0].Cells[1, 3].Border = new FarPoint.Win.ComplexBorder(new FarPoint.Win.ComplexBorderSide(Color.Red, 2));// Cell has to have border

FarPoint.Win.Spread.CellType.TextCellType cellType = new FarPoint.Win.Spread.CellType.TextCellType();cellType.TextOrientation = FarPoint.Win.TextOrientation.TextRotateCustom;cellType.TextRotationAngle = 60; // Cell has to have rotation angle to see the effect.fpSpread1.Sheets[0].Cells[1, 3].CellType = cellType;fpSpread1.Sheets[0].EnableDiagonalLine = true;

VBFpSpread1.Sheets(0).Cells(1, 3).Text = "Test" 'Cell has to have valueFpSpread1.Sheets(0).Cells(1, 3).Border = New FarPoint.Win.ComplexBorder(New FarPoint.Win.ComplexBorderSide(Color.Red, 2)) ' Cell has to have border

Dim cellType As New FarPoint.Win.Spread.CellType.TextCellType()cellType.TextOrientation = FarPoint.Win.TextOrientation.TextRotateCustomcellType.TextRotationAngle = 60 ' Cell has to have rotation angle to see the effect.FpSpread1.Sheets(0).Cells(1, 3).CellType = cellTypeFpSpread1.Sheets(0).EnableDiagonalLine = True

Example

Thisexamplecodecreatesatextcellwithadiagonalborderandashapethatcontainsthecell.

C#fpSpread1.Sheets[0].Cells[1, 3].Text = "Test"; //Cell has to have valuefpSpread1.Sheets[0].Cells[1, 3].Border = new FarPoint.Win.ComplexBorder(new FarPoint.Win.ComplexBorderSide(Color.Red, 2));// Cell has to have border

FarPoint.Win.Spread.CellType.TextCellType cellType = new FarPoint.Win.Spread.CellType.TextCellType();cellType.TextOrientation = FarPoint.Win.TextOrientation.TextRotateCustom;cellType.TextRotationAngle = 60; // Cell has to have rotation angle to see the effect.fpSpread1.Sheets[0].Cells[1, 3].CellType = cellType;

FarPoint.Win.Spread.DrawingSpace.TriangleShape a = new FarPoint.Win.Spread.DrawingSpace.TriangleShape();a.BackColor = Color.Blue;fpSpread1.ActiveSheet.AddShape(a, 1, 1);FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape test = new FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape();test.Formula = "B1:E6";

Spread Windows Forms Developer’s Guide 173

Copyright © GrapeCity, inc. All rights reserved.

Page 175: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

test.Location = new System.Drawing.Point(20, 20);fpSpread1.Sheets[0].AddShape(test);fpSpread1.Sheets[0].EnableDiagonalLine = true;

VBFpSpread1.Sheets(0).Cells(1, 3).Text = "Test" 'Cell has to have valueFpSpread1.Sheets(0).Cells(1, 3).Border = New FarPoint.Win.ComplexBorder(New FarPoint.Win.ComplexBorderSide(Color.Red, 2)) ' Cell has to have border

Dim cellType As New FarPoint.Win.Spread.CellType.TextCellType()cellType.TextOrientation = FarPoint.Win.TextOrientation.TextRotateCustomcellType.TextRotationAngle = 60 ' Cell has to have rotation angle to see the effect.FpSpread1.Sheets(0).Cells(1, 3).CellType = cellType

Dim a As New FarPoint.Win.Spread.DrawingSpace.TriangleShape()a.BackColor = Color.BlueFpSpread1.ActiveSheet.AddShape(a, 1, 1)Dim test As New FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape()test.Formula = "B1:E6"test.Location = New System.Drawing.Point(20, 20)FpSpread1.Sheets(0).AddShape(test)FpSpread1.Sheets(0).EnableDiagonalLine = True

Creating a Complex Border with Multiple Lines

Youcancreateacellborderwithmultiplelinesusingthecomplexborder.

UsingCode

UsetheCompoundArraypropertyoftheComplexBorderSide('ComplexBorderSideClass'intheon-linedocumentation)classtocreatemultiple-linebordersforacell.

Reviewthefollowingexamplesformoreinformation.

Example

ThisexamplecodecreatesaComplexBorderSidethathastwounderlines(twolineswithablankspaceinbetween)eachtakingathirdofthewidthofthepen.

Spread Windows Forms Developer’s Guide 174

Copyright © GrapeCity, inc. All rights reserved.

Page 176: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#// Create a new complex border side with two lines.FarPoint.Win.ComplexBorderSide bottomborder = new FarPoint.Win.ComplexBorderSide(true, Color.Black, 3, System.Drawing.Drawing2D.DashStyle.Solid, null, new Single[] {0f, 0.33f, 0.66f, 1f});fpSpread1.Sheets[0].Cells[3, 7].Border = new FarPoint.Win.ComplexBorder(null, null, null, bottomborder);

VB' Create a new complex border side with two lines.Dim bottomborder As New FarPoint.Win.ComplexBorderSide(Color.Black, 3, System.Drawing.Drawing2D.DashStyle.Solid, Nothing, New Single() {0, 0.33, 0.66, 1})FpSpread1.Sheets(0).Cells(3, 7).Border = New FarPoint.Win.ComplexBorder(Nothing, Nothing, Nothing, bottomborder)

Example

ThisexamplecodecreatesaComplexBorderSidethathasthreelineswithvaryingamountsofthicknessandwithsomeblankspaceoneitheredgeofthepen.

Spread Windows Forms Developer’s Guide 175

Copyright © GrapeCity, inc. All rights reserved.

Page 177: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#// Create a new complex border side with three lines.FarPoint.Win.ComplexBorderSide bottomborder = new FarPoint.Win.ComplexBorderSide(true, Color.Black, 3, System.Drawing.Drawing2D.DashStyle.Solid, null, new Single[] {0.1f, 0.2f, 0.3f, 0.6f, 0.7f, 0.9f});fpSpread1.Sheets[0].Cells[3, 7].Border = new FarPoint.Win.ComplexBorder(null, null, null, bottomborder);

VB' Create a new complex border side with three lines.Dim bottomborder As New FarPoint.Win.ComplexBorderSide(True, Color.Black, 3, System.Drawing.Drawing2D.DashStyle.Solid, Nothing, New Single() {0.1, 0.2, 0.3, 0.6, 0.7, 0.9})FpSpread1.Sheets(0).Cells(3, 7).Border = New FarPoint.Win.ComplexBorder(Nothing, Nothing, Nothing, bottomborder)

Creating a Span of Cells

Youcancombinecellstocreateaspanofcells,asshowninthefigurebelow.Creatingaspanofcellscreatesonelargecellwheretherehadpreviouslybeenseveral.Forexample,ifyoucreateaspanofcellsfromcellB2tocellD3,cellB2thenappearstooccupythespacefromcellB2throughcellD3.

Thecomponentisdividedintofourparts:sheetcorner,columnheaders,rowsheaders,anddataarea.Youcancreatespanswithinapart,butyoucannotcreateaspanthatgoesacrossparts.Forexample,youcannotspancellsinthedataareawithcellsintherowheadersandyoucannotspancellsinthecolumnheaderwiththesheetcorner.Thistopicdiscussesspanningcellsinthedataarea.Formoreinformationoncreatingaspanofheadercells,refertoCreatingaSpaninaHeader.

Spread Windows Forms Developer’s Guide 176

Copyright © GrapeCity, inc. All rights reserved.

Page 178: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Whenyoucreateaspanofcells,thedatainthefirstcellinthespan(theanchorcell)occupiesallthespaceinthespan.Whenyoucreateaspan,thedatathatwasineachofthecellsinthespanisstillineachcell,butnotdisplayed.Thedataissimplyhiddenbythespanrange.Ifyouremovethespanfromagroupofcells,thecontentofthespannedcells,whichpreviouslywashidden,isdisplayedasappropriate.CreateaspanofcellsbycallingtheAddSpanCell('AddSpanCellMethod'intheon-linedocumentation)method.Thecelltypesofthecellscombinedinthespanarenotchanged.Thespannedcelltakesthetypeoftheleft-mostcellinthespan.

YoucanreturnwhetheraspecifiedcellisinaspanofcellswiththeGetSpanCell('GetSpanCellMethod'intheon-linedocumentation)method.

YoucanremoveaspanfromarangeofcellsbycallingtheRemoveSpanCell('RemoveSpanCellMethod'intheon-linedocumentation)method.Youcanremoveaspanrangebycallingthismethod,specifyingtheanchorcellofthespanrangetoremovetherange.Whenyouremoveaspanrange,thedatathatwaspreviouslyineachofthecellsinthespanisre-displayedinthecell.Thedatawasneverremovedfromthecell,butsimplyhiddenbythespanrange.

Note:Spansthatareaddedtoasortedsheetarenotshown,andspanswillbehiddenwhenthesheetoranypartofitissortedwithanysortmethodotherthanSortRange('SortRangeMethod'intheon-linedocumentation).CellrangesthatcontainspanscannotbesortedwithSortRange('SortRangeMethod'intheon-linedocumentation).

Whateverpropertiesyousetontheanchorcellareappliedtothecellspan.Thisincludessettingacellnote,too.Ifyousetacellnotetooneofthecellsinthespanthatisnottheanchor,thecellnoteisnotdisplayed.

CalltheGetSpanCellmethodtoreturnwhetheracellisinaspanofcells,andifitisinaspanofcells,itreturnstheCellRange('CellRangeClass'intheon-linedocumentation)objectthatcontainsthecolumnandrownumberoftheanchorcellandthenumberofcolumnsandrowsinthespanrange.ThismethodiscalledforthecurrentlyselectedsheetunlessyoufirstsettheSheetsobjecttospecifythesheetwithwhichtowork.

Ifamergedcolumnoverlapsaspan,thenthemergedcolumnreplacesthespan.Itisrecommendedthatyoudonotmergecellsthatarepartofaspan.Formoreinformationonautomaticallymergingcellswithidenticalcontent,refertoAllowingCellstoMergeAutomatically.

Forinformationontheunderlyingmodelforspans,refertoUnderstandingtheSpanModel.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. InthePropertieswindowontherightsideoftheSheetViewCollectionEditor,selecttheCellspropertyfor

thesheet.5. ClickthebuttontodisplaytheCell,Column,andRowEditor.6. Intheeditor,selecteithertheRowSpanorColumnSpanpropertyandsetthenumbertothenumberofcells

tospanstartingfromtheselectedcell.Toremoveaspan,setthevaluebackto1.Thepreviewontheleftsideoftheeditorshowsthecellsspanned.

7. Ifyouwanttoapplythischange,clickApply.8. ClickOKtocloseeacheditor.

UsingaShortcut

Tospancells(orremovespanning)useanyofthefollowingmembers:

AddSpanCell,GetSpanCell,andRemoveSpanCellAddColumnHeaderSpanandAddRowHeaderSpan

Formoreinformationonthesepropertiesandmethods,refertotheSheetView('SheetViewClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 177

Copyright © GrapeCity, inc. All rights reserved.

Page 179: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CalltheSheetsobjectAddSpanCellmethodtospanthecells.

Example

Thisexamplecodedefinessomecontentthenspanssixadjoiningcells.

C#// Create some content in two cells.fpSpread1.ActiveSheet.Cells[1,1].Text = "These six cells are spanned.";fpSpread1.ActiveSheet.Cells[2,2].Text = "This is text in 2,2.";// Span six cells including the ones with different content.fpSpread1.ActiveSheet.AddSpanCell(1, 1, 2, 3);

VB' Create some content in two cells.fpSpread1.ActiveSheet.Cells(1,1).Text = "These six cells are spanned."fpSpread1.ActiveSheet.Cells(2,2).Text = "This is text in 2,2."' Span six cells including the ones with different content.fpSpread1.ActiveSheet.AddSpanCell(1, 1, 2, 3)

UsingtheSpreadDesigner

1. Onthespreadsheet,selectthecellstospan.2. Right-clickandselectSpanorinthepropertylist(intheMisccategory),selecteithertheRowSpanorColumnSpanpropertyandsetthenumbertoavaluegreaterthan1tospancells.Toremoveaspan,setthevaluebackto1.TheDesignershowsthecellsspanned.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Allowing Cells to Merge Automatically

YoucanhaveSpreadautomaticallymergecellsbetweencolumnsorbetweenrowsifthecellshavethesamevaluebasedonthepolicythatyouset.Thecomponentcanautomaticallycombinecellsthathavethesamecontents.Youmightwanttodothis,forexample,whenboundtoadatabase,asshowninthefigurebelowwherethecellsintheYearcolumnmergewheretheyearvalueisthesame,aswith1995and2003.

Spread Windows Forms Developer’s Guide 178

Copyright © GrapeCity, inc. All rights reserved.

Page 180: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Unlikespanningcells,mergingisanautomaticfeature.Youtellthecomponentwhichcolumnsandrowsallowcellstobecombinedautomatically,andanycellswithinthatsetthathavethesamecontentsarecombinedforyou.

Formoreinformationonspanningcells,refertoCreatingaSpanofCells.

Thepolicyyousetdetermineshowthecomponenthandlesmerging,asfollows:

IfthemergepolicyissettoNone,cellswithinaroworcolumnarenotmerged.IfthemergepolicyissettoAlways,cellswithinaroworcolumnaremergedwhenthecellshavethesamevalues.IfthemergepolicyissettoRestricted,cellswithinaroworcolumnaremergedwhenthecellshavethesamevaluesandthecorrespondingcellsinthepreviousroworcolumnalsohavethesamevalue.Forexample,supposecellsA1:A8contain{a;a;b;b;b;b;c;c}andcellsB1:B8contain{1;1;1;1;2;2;2;2}.IfcolumnB'smergepolicyisAlways,thecellsincolumnBaremergedintotwoblocksB1:B4andB5:B8.IfcolumnB'smergepolicyisRestrictedthenthecellsincolumnBaremergedintofourblocksB1:B2,B3:B4,B5:B6,andB7:B8.

Youcanhavethecellsinthespecifiedroworcolumncombinethecellsautomatically,oronlycombinethemifthecellstotheirleft(incolumns)orabovethem(inrows)aremerged.Typically,ifyousetthemergepolicyonseveraladjacentrowsorcolumns,thenyouwoulduseAlwaysonthefirstroworcolumnandRestrictedontheremainingrowsorcolumns.

Mergedcellstakeonthepropertiesofthetop-leftmergedcell.Forexample,ifthetop-leftmergedcellhasabluebackgroundcolor,thecellsthatmergewithitdisplaythesamebackgroundcolor.

Mergedcellsdonotlosetheirdata;itissimplyhiddenbythemerge.Ifyouremovethemerge,thedataappearsineachcellthatwasinthemerge.Youcaneditacellthatismergedwithanothercell.Whenyoudouble-clickthecelltoturneditmodeon,thecontentsofthecellappearinthecellforyoutoeditthem.Whenyouleaveeditmode,ifthecontentsofthecellarenolongeridenticaltothecellorcellswithwhichitwaspreviouslymerged,thecellsarenolongerdisplayedasmerged.

Cellsthataredifferentcelltypesbuthavethesamecontentscanmerge.Forexample,adatecellmightcontainthecontents"01/31/02"andtheadjacenteditcellmightcontainthesamecontents;ifthecolumncontainingthecellsissettomerge,thecellswillmerge.Ifthecontentschangeorthemergeisremoved,thecellsmaintaintheircelltypesaswellastheirdata.

Tosetcellstobemergediftheyhavethesamevalue,usethefollowingmembers:

GetColumMerge('GetColumnMergeMethod'intheon-linedocumentation)andSetColumMerge('SetColumnMergeMethod'intheon-linedocumentation)GetRowMerge('GetRowMergeMethod'intheon-linedocumentation)andSetRowMerge('SetRowMergeMethod'intheon-linedocumentation)GetMergePolicy('GetMergePolicyMethod'intheon-linedocumentation)andSetMergePolicy('SetMergePolicyMethod'intheon-linedocumentation)

Formoreinformationonthesemembers,refertotheSheetView('SheetViewClass'intheon-linedocumentation)class(ortheRow('RowClass'intheon-linedocumentation)orColumn('ColumnClass'

Spread Windows Forms Developer’s Guide 179

Copyright © GrapeCity, inc. All rights reserved.

Page 181: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

intheon-linedocumentation)class)ortheDefaultSheetAxisModel('DefaultSheetAxisModelClass'intheon-linedocumentation)oftheFarPoint.Win.Spread.Model('FarPoint.Win.Spread.ModelNamespace'intheon-linedocumentation)namespace.

UsingaShortcut

UsetheSetColumMerge('SetColumnMergeMethod'intheon-linedocumentation)orSetRowMerge('SetRowMergeMethod'intheon-linedocumentation)methodfortheSheetsorActiveSheetshortcutobject.

Example

Thisexamplecodesetstherowandcolumnmergepoliciesforallrowsandallcolumns.

C#fpSpread1.Sheets[0].SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);fpSpread1.Sheets[0].SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);

VBFpSpread1.Sheets(0).SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)FpSpread1.Sheets(0).SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)

UsingCode

SettheSetColumMerge('SetColumnMergeMethod'intheon-linedocumentation)orSetRowMerge('SetRowMergeMethod'intheon-linedocumentation)methodforaSheetView('SheetViewClass'intheon-linedocumentation)object.

Example

Thisexamplecodemergescolumnsandrows.

C#FarPoint.Win.Spread.SheetView Sheet0;Sheet0 = fpSpread1.Sheets[0];Sheet0.SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);Sheet0.SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);

VBDim Sheet0 As FarPoint.Win.Spread.SheetViewSheet0 = FpSpread1.Sheets(0)Sheet0.SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)Sheet0.SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)

Allowing Cell Data to Overflow

Youcandeterminehowthecontentsofacelloragroupofcellsoverflowintoadjoiningcells.Ifyouallowcellcontentstooverflow:

Left-alignedtextinacelloverflowstotheadjacentrightcell.Right-alignedtextinacelloverflowstotheadjacentleftcell.Centeredtextinacelloverflowstoboththeleftandrightadjacentcells.

Spread Windows Forms Developer’s Guide 180

Copyright © GrapeCity, inc. All rights reserved.

Page 182: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Anexampleofeachoftheseisshowninthefollowingfigure.

Tosettheoverflowbehavior,usethefollowingmembersfortheoverallcomponent(FpSpread('FpSpreadClass'intheon-linedocumentation)class)orthechildsheet(SpreadView('SpreadViewClass'intheon-linedocumentation)class):

AllowCellOverflow('AllowCellOverflowProperty'intheon-linedocumentation)GetMaximumCellOverflowWidth('GetMaximumCellOverflowWidthMethod'intheon-linedocumentation)SetMaximumCellOverflowWidth('SetMaximumCellOverflowWidthMethod'intheon-linedocumentation)AllowEditOverflow('AllowEditOverflowProperty'intheon-linedocumentation)

YoucanspecifytheamountofcontentthatwilloverflowintoadjacentcellsbyspecifyingthenumberofpixelsofoverflowallowedusingtheSetMaximumCellOverflowWidth('SetMaximumCellOverflowWidthMethod'intheon-linedocumentation)method.

Formoreinformationoncellcontentsalignment,refertoAligningCellContents.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. Select(intheBehaviorcategory)theAllowCellOverflowpropertyortheAllowEditOverflowproperty.3. SelectTruefromthedrop-downlisttoallowcellstooverflow,orselectFalsetoprohibitcellsfromoverflowing.

UsingaShortcut

1. AllowthecontentsofasetofcellstooverflowbysettingtheAllowCellOverflow('AllowCellOverflowProperty'intheon-linedocumentation)property.

2. SpecifythemaximumamountofcontentallowedtooverflowbycallingtheSetMaximumCellOverflowWidth('SetMaximumCellOverflowWidthMethod'intheon-linedocumentation)methodtospecifythenumberofpixelsallowedtooverflow.

Example

Thisexamplecodesetsthecomponenttoallowcellstooverflowbutonlyuptothemaximumof130pixels.

C#fpSpread1.AllowCellOverflow = true;fpSpread1.SetMaximumCellOverflowWidth(130);

Spread Windows Forms Developer’s Guide 181

Copyright © GrapeCity, inc. All rights reserved.

Page 183: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBFpSpread1.AllowCellOverflow = TrueFpSpread1.SetMaximumCellOverflowWidth(130)

UsingCode

1. AllowthecontentsofasetofcellstooverflowbysettingtheFpSpread('FpSpreadClass'intheon-linedocumentation)AllowCellOverflow('AllowCellOverflowProperty'intheon-linedocumentation)property.

2. SpecifythemaximumamountofcontentallowedtooverflowbycallingtheSetMaximumCellOverflowWidth('SetMaximumCellOverflowWidthMethod'intheon-linedocumentation)methodtospecifythenumberofpixelsallowedtooverflow.

Example

Thisexamplecodesetsthechildsheettoallowcellstooverflowuptoamaximumwidthof130.

C#FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();sv.AllowCellOverflow = true;sv.SetMaximumCellOverflowWidth(130);

VBDim sv As FarPoint.Win.Spread.SpreadView = FpSpread1.GetRootWorkbooksv.AllowCellOverflow = Truesv.SetMaximumCellOverflowWidth(130)

UsingtheSpreadDesigner

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent,intheBehaviorcategory,selecttheAllowCellOverflowpropertyortheAllowEditOverflowandselectthevalueTrue.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Creating and Applying a Style for Cells

Youcanquicklycustomizetheappearanceofacellorrangeofcells(orrowsorcolumns)byapplyinga"style".Youcancreateyourownnamedstyleandsaveittouseagain,similartoatemplate,oryoucansimplychangethepropertiesofthedefaultstyle.Thestyleincludesappearancesettingsthatapplytocells,suchasbackgroundcolor,textcolor,font,borders,andcelltype.Astylecanbeappliedtoanynumberofcells.Justasaskincanbeappliedtoasheet,soastylecanbeappliedtocells.

Note:Theword"appearance"isusedforthegenerallookofthecell,notsimplythesettingsintheAppearanceclass,whichcontainsonlyafewsettingsandisusedfortheappearanceofseveralpartsoftheinterface.MostoftheappearancesettingsforacellareintheStyleInfo('StyleInfoClass'intheon-linedocumentation)class.

YoutypicallysetthestyleforthecellbyusingtheStyleName('StyleNameProperty'intheon-linedocumentation)propertyforthecell.YoucanalsousetheParentStyleName('ParentStyleNameProperty'intheon-linedocumentation)tosetastyleforarangeofcellsthatmayindividuallyhavedifferentStyleNamevaluesset.Acellinheritsallthestyleinformationfromtheparentstyle(ParentStyleName).Whenyousettheparentstyle,

Spread Windows Forms Developer’s Guide 182

Copyright © GrapeCity, inc. All rights reserved.

Page 184: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

youaresettingtheParentpropertyoftheStyleInfoobjectassignedtoeachcellintherange.TheparentforanamedstylecanalsobesetbytheParentpropertyoftheNamedStyleobject.Sodifferentcells(forexample,cellsindifferentrowsorcolumns)mayhavedifferentnamedstylesbuthavethesameparentstyle.Forexample,thecellsmayhavedifferenttextcolors(setinthenamedstyle)butinheritthesamebackgroundcolor(setintheparentstyle).

Formoreinformation,refertotheDefaultStyleCollection('DefaultStyleCollectionClass'intheon-linedocumentation)classandtheNamedStyle('NamedStyleClass'intheon-linedocumentation)class.Whenyousetthestyle(StyleName),yousettheentireStyleInfo('StyleInfoClass'intheon-linedocumentation)objectinthestylemodelforeachcellintherangetotheoneintheNamedStyleCollection('NamedStyleCollectionClass'intheon-linedocumentation)withthespecifiedname.ThedefaultparentstyleissetintheDataAreaDefaultfieldintheDefaultStyleCollectionclass.

Youcanalsocreateandapplyappearancesettingstoanentiresheetbyusingsheetskins.Forinstructionsoncreatingsheetskins,seeCreatingaCustomSkinforaSheet.

Formoreinformationontheunderlyingmodelforstyles,refertoUnderstandingtheStyleModel.

UsingCode

1. CalltheNamedStyle('NamedStyleClass'intheon-linedocumentation)objectconstructor,andsetitsparameterstospecifythenameandsettingsforthestyle.Youcanalsosettheparentname.

2. Setthestylesettings.3. Setthecustomnamedstylebyassigningthestylenametothecellorcells.

Example

Thisexamplecodesetsthefirstsquareofcellsontheactivesheettousethesamecustomstylethatsetsthebackgroundcolortoblueandsetsthetextcolordependingonwhichcolumn.

C#FarPoint.Win.Spread.NamedStyle backstyle = new FarPoint.Win.Spread.NamedStyle("BlueBack");backstyle.BackColor = Color.Blue;FarPoint.Win.Spread.NamedStyle text1style = new FarPoint.Win.Spread.NamedStyle("OrangeText", "BlueBack");text1style.ForeColor = Color.Orange;FarPoint.Win.Spread.NamedStyle text2style = new FarPoint.Win.Spread.NamedStyle("YellowText", "BlueBack");text2style.ForeColor = Color.Yellow;fpSpread1.NamedStyles.Add(backstyle);fpSpread1.NamedStyles.Add(text1style);fpSpread1.NamedStyles.Add(text2style);fpSpread1.ActiveSheet.Cells[0,0,4,0].StyleName = "OrangeText";fpSpread1.ActiveSheet.Cells[0,1,4,1].StyleName = "YellowText";

VBDim backstyle As New FarPoint.Win.Spread.NamedStyle("BlueBack")backstyle.BackColor = Color.BlueDim text1style As New FarPoint.Win.Spread.NamedStyle("OrangeText", "BlueBack")text1style.ForeColor = Color.OrangeDim text2style As New FarPoint.Win.Spread.NamedStyle("YellowText", "BlueBack")text2style.ForeColor = Color.YellowFpSpread1.NamedStyles.Add(backstyle)FpSpread1.NamedStyles.Add(text1style)FpSpread1.NamedStyles.Add(text2style)FpSpread1.ActiveSheet.Cells(0,0,4,0).StyleName = "OrangeText"

Spread Windows Forms Developer’s Guide 183

Copyright © GrapeCity, inc. All rights reserved.

Page 185: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.Cells(0,1,4,1).StyleName = "YellowText"

Example

ConfigurethedefaultstylefortheentiresheetsbyspecifyingDefaultStyleproperty(StyleInfo)inSheetViewclass.Thisapproachisconvenientwhenyouwanttoapplyoneuniquestyletoallcellsinasheet,asshowninthedataareaofthespreadsheetinthisfigure.

C#private void Form1_Load(object sender, System.EventArgs e){ fpSpread1.ActiveSheet.RowCount = 5; fpSpread1.ActiveSheet.ColumnCount = 5; // Configure respective default styles. fpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.LemonChiffon; fpSpread1.ActiveSheet.DefaultStyle.ForeColor = Color.Red; fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.NumberCellType(); fpSpread1.ActiveSheet.DefaultStyle.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center; fpSpread1.ActiveSheet.DefaultStyle.Border = new FarPoint.Win.LineBorder(Color.Green); for (int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++) { for (int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++) { fpSpread1.ActiveSheet.SetValue(i, j, i + j); } }}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.ActiveSheet.RowCount = 5 FpSpread1.ActiveSheet.ColumnCount = 5 ' Configure respective default styles. FpSpread1.ActiveSheet.DefaultStyle.BackColor = Color.LemonChiffon FpSpread1.ActiveSheet.DefaultStyle.ForeColor = Color.Red FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.NumberCellType FpSpread1.ActiveSheet.DefaultStyle.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center FpSpread1.ActiveSheet.DefaultStyle.Border = New FarPoint.Win.LineBorder(Color.Green) For i As Integer = 0 To FpSpread1.ActiveSheet.RowCount - 1 For j As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1

Spread Windows Forms Developer’s Guide 184

Copyright © GrapeCity, inc. All rights reserved.

Page 186: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.SetValue(i, j, i + j) Next NextEnd Sub

UsingtheNamedStyleCollectionEditor

1. IntheFormwindow,clicktheSpreadcomponentortheSheetobjectforwhichyouwanttocreatethestyleintheNamedStyleCollection.FortheSpreadcomponent,intheAppearancecategory,selecttheNamedStylesproperty.FortheSheetobject,intheMisccategory,selecttheNamedStylesproperty.

2. ClickonthebuttontolaunchtheNamedStyleCollectionEditor.3. IntheNamedStyleCollectionEditor,selecttheAddtab.4. SetthepropertiesintheNamedStylePropertieslisttocreatethestyleyouwant.5. SettheNamepropertytospecifythenameforyourcustomstyle.6. ClickOKtoclosetheeditor.7. Selectthecells(orrowsorcolumns)toapplythestyleto.8. Inthepropertywindow,settheStyleNametothecustomnamedstylepreviouslyadded.

Using Sparklines

Youcancreateasparklineinacellwhichisasmallgraphthatusesdatafromarangeofcells.Thedataforthesparklineislimitedtoonecolumnorrowofvalues.Youcansetthesparklinetypetocolumn,line,orwinloss,asshowninthefollowingfigure.Theseimageswerecreatedusingaminimumaxisof-9andamaximumaxisof15.

Thecolumnsparklinedrawsthevaluesasacolumnchart.Thelinesparklinedrawsthevaluesasalinechart.Thewinlosssparklineshowsthepointswiththesamesize.Negativepointsextenddownfromtheaxisandpositivepointsextendup.

Thegraphscandisplaycolorsforthemarkerpoints.Youcansetcolorsforthehigh,low,negative,first,andlastpoints.

Thegraphshavehorizontalandverticalaxes.

Sparklinesarestoredasgroups.Agroupcontainsatleastonesparkline.

Formoreinformation,seethefollowingtopics:

AddingaSparklinetoaCellCustomizingMarkersandPointsSpecifyingHorizontalandVerticalAxesWorkingwithSparklines

Adding a Sparkline to a Cell

Youcanaddasparklinetoacellusingcodeorthedesigner.

Spread Windows Forms Developer’s Guide 185

Copyright © GrapeCity, inc. All rights reserved.

Page 187: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Specifyacellinwhichtocreatethesparkline.2. Specifyarangeofcellsforthedata.3. Setanypropertiesforthesparkline(suchaspointsandcolors).4. Addthesparklinetothecell.

Example

Thisexamplecreatesacolumnsparklineinacellandshowsnegativeandseriescolors.

C#FarPoint.Win.Spread.SheetView sv = new FarPoint.Win.Spread.SheetView();FarPoint.Win.Spread.Chart.SheetCellRange data = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0,0,1, 5);FarPoint.Win.Spread.Chart.SheetCellRange data2 = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 5,0,1,1);FarPoint.Win.Spread.ExcelSparklineSetting ex = new FarPoint.Win.Spread.ExcelSparklineSetting();ex.ShowMarkers = true;ex.ShowNegative = true;ex.NegativeColor = Color.Red;// Use with a Column or Winloss typeex.SeriesColor = Color.Olive;fpSpread1.Sheets[0] = sv;sv.Cells[0, 0].Value = 2;sv.Cells[0, 1].Value = 5;sv.Cells[0, 2].Value = 4;sv.Cells[0, 3].Value = -1;sv.Cells[0, 4].Value = 3;fpSpread1.Sheets[0].AddSparkline(data, data2, FarPoint.Win.Spread.SparklineType.Column, ex);

VBDim sv As New FarPoint.Win.Spread.SheetView()Dim data As New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0, 0, 1, 5)Dim data2 As New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 5, 0, 1, 1)Dim ex As New FarPoint.Win.Spread.ExcelSparklineSetting()ex.ShowMarkers = Trueex.ShowNegative = Trueex.NegativeColor = Color.Red' Use with a Column or Winloss typeex.SeriesColor = Color.Olive

Spread Windows Forms Developer’s Guide 186

Copyright © GrapeCity, inc. All rights reserved.

Page 188: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0) = svsv.Cells(0, 0).Value = 2sv.Cells(0, 1).Value = 5sv.Cells(0, 2).Value = 4sv.Cells(0, 3).Value = -1sv.Cells(0, 4).Value = 3FpSpread1.Sheets(0).AddSparkline(data, data2, FarPoint.Win.Spread.SparklineType.Column, ex)

UsingtheSpreadDesigner

1. Typedatainacelloracolumnorrowofcellsinthedesigner.2. Selectacellforthesparkline.3. SelecttheInsertmenu.4. Selectasparklinetype.5. SettheDataRangeintheEditSparklinesdialog(suchas=Sheet1!$E$1:$E$3).Youcanalsosettherangebyselectingthecellsintherangeusingthepointer.

6. SelectOK.7. SelectApplyandExitfromtheFilemenutosaveyourchangesandclosethedesigner.

Customizing Markers and Points

Youcanshowmarkersorpointsinthesparklinegraphs.Thefollowingimagedisplaysthepointsinalinesparkline.Youcanspecifydifferentcolorsforlowornegative,high,first,andlastpoints.

Thehighpointisthepointforthelargestvalue.Thelowpointisthesmallestvalue.Thenegativepointrepresentsnegativevalues.Thefirstpointisthefirstpointthatisdrawnonthegraph.Thelastpointisthelastpointthatisdrawnonthegraph.

TheSeriesColorpropertyappliestothelineforthelinesparktype.TheMarkersColorpropertyisonlyforthelinetypesparkline.SeetheExcelSparklineSetting('ExcelSparklineSettingClass'intheon-linedocumentation)classforalistofsparklinepropertiesandadditionalcodesamples.

UsingCode

1. Specifyacelltocreatethesparklinein.2. Specifyarangeofcellsforthedata.3. Setanypropertiesforthesparkline(suchasShowFirstandFirstMarkerColor).4. Addthesparklinetothecell.

Example

Thisexamplecreatesalinesparklineinacellandshowsdifferentmarkersandcolors.

Spread Windows Forms Developer’s Guide 187

Copyright © GrapeCity, inc. All rights reserved.

Page 189: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#FarPoint.Win.Spread.SheetView sv = new FarPoint.Win.Spread.SheetView();FarPoint.Win.Spread.Chart.SheetCellRange data = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0,0,1, 5);FarPoint.Win.Spread.Chart.SheetCellRange data2 = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 5,0,1,1);FarPoint.Win.Spread.ExcelSparklineSetting ex = new FarPoint.Win.Spread.ExcelSparklineSetting();ex.AxisColor = Color.SaddleBrown;ex.ShowFirst = true;ex.ShowHigh = true;ex.ShowLow = true;ex.ShowLast = true;ex.FirstMarkerColor = Color.Blue;ex.HighMarkerColor = Color.DarkGreen;ex.MarkersColor = Color.Aquamarine;ex.LowMarkerColor = Color.Red;ex.LastMarkerColor = Color.Orange;ex.ShowMarkers = true;fpSpread1.Sheets[0] = sv;sv.Cells[0, 0].Value = 2;sv.Cells[0, 1].Value = 5;sv.Cells[0, 2].Value = 4;sv.Cells[0, 3].Value = 1;sv.Cells[0, 4].Value = 3;fpSpread1.Sheets[0].AddSparkline(data, data2, FarPoint.Win.Spread.SparklineType.Line, ex);

VBDim sv As New FarPoint.Win.Spread.SheetView()Dim data As New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0, 0, 1, 5)Dim data2 As New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 5, 0, 1, 1)Dim ex As New FarPoint.Win.Spread.ExcelSparklineSetting()ex.AxisColor = Color.SaddleBrownex.ShowFirst = Trueex.ShowHigh = Trueex.ShowLow = Trueex.ShowLast = Trueex.FirstMarkerColor = Color.Blueex.HighMarkerColor = Color.DarkGreenex.MarkersColor = Color.Aquamarineex.LowMarkerColor = Color.Redex.LastMarkerColor = Color.Orangeex.ShowMarkers = TrueFpSpread1.Sheets(0) = svsv.Cells(0, 0).Value = 2sv.Cells(0, 1).Value = 5sv.Cells(0, 2).Value = 4sv.Cells(0, 3).Value = 1sv.Cells(0, 4).Value = 3FpSpread1.Sheets(0).AddSparkline(data, data2, FarPoint.Win.Spread.SparklineType.Line, ex)

UsingtheSpreadDesigner

Spread Windows Forms Developer’s Guide 188

Copyright © GrapeCity, inc. All rights reserved.

Page 190: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Typedatainacelloracolumnorrowofcellsinthedesigner.2. Selectacellforthesparkline.3. SelecttheInsertmenu.4. Selectasparklinetype.5. SelectthedataforthegraphwhentheCreateSparklinesdialogisdisplayed.6. SelectOK.7. Selectthesparklinecell,selecttheMarkerColororSparklineColoricon,andsetthecolors.8. SelectApplyandExitfromtheFilemenutosaveyourchangesandclosethedesigner.

Specifying Horizontal and Vertical Axes

Thehorizontalaxishasageneralandadatetype.Thegeneraltypespecifiesthatallthepointsarepaintedalongtheaxisatthesamedistance.Thedatetypespecifieswhichpointsaredrawnandcanhavedifferentdistancesbetweenthepointsbasedonthedayunit.

SettheDateAxispropertytotrueintheExcelSparklineSetting('ExcelSparklineSettingClass'intheon-linedocumentation)classtousethedatehorizontalaxisandtheDisplayXAxispropertyifyouwishtodisplaytheaxisline.Ifacellisblankinthedaterange,thenthatpointisnotdrawnbydefaultwiththedateaxis.ThefollowingimagedisplaysallthreepointsonthegraphbutleavesalargergapbetweenthesecondandthirdpointstoshowthedistancebetweenJanuary3rdandJanuary5th.

Youcanspecifydifferentminimumandmaximumvalueoptionsfortheverticalaxis.Theautomaticoptionallowseachsparklinetohaveadifferentminimumandmaximumvalue.Thesameoptionusesthesameminimumandmaximumvalueforallthesparklines.Thecustomoptionallowsyoutospecifytheminimumandmaximumvalueforallthesparklinesinagroup.

Ifthecustomoptionisusedfortheverticalaxis,andtheminimumvalueisequaltoorlargerthanalldatapoints,pointsorlinesarenotdrawn.Linesorcolumnsaretruncatediftheyarenotcompletelyinthedrawingarea.Ifacolumnsparklinehasatleastonepointdrawncompletelyorpartially,thenallcolumnswithvalueslessthantheminimumaredrawnasthincolumnsthatextenddown.

SeetheManualMax,ManualMin,MaxAxisType,andMinAxisTypepropertiesintheExcelSparklineSetting('ExcelSparklineSettingClass'intheon-linedocumentation)classforverticalaxisexamples.

UsingCode

1. CreateanExcelSparklineSettingobject.2. SettheDateAxispropertytousethedateforthex-axis.3. SettheDisplayXAxispropertytotrueifyouwishtodisplaytheaxis.4. Addvaluesanddatestothecells.5. Addthesparklinetothecell.

Example

Thisexamplecreatesacolumnsparklineinacellwithadatehorizontalaxis.

C#FarPoint.Win.Spread.ExcelSparklineSetting ex = new FarPoint.Win.Spread.ExcelSparklineSetting();

Spread Windows Forms Developer’s Guide 189

Copyright © GrapeCity, inc. All rights reserved.

Page 191: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ex.DisplayXAxis = true;ex.DateAxis = true;ex.Formula = "Sheet1!$A$1:$C$1";fpSpread1.Sheets[0].Cells[0, 0].Text = "1/2/2011";fpSpread1.Sheets[0].Cells[0, 1].Text = "1/3/2011";fpSpread1.Sheets[0].Cells[0, 2].Text = "1/5/2011";fpSpread1.Sheets[0].Cells[1, 0].Value = 2;fpSpread1.Sheets[0].Cells[1, 1].Value = 11;fpSpread1.Sheets[0].Cells[1, 2].Value = 4;fpSpread1.Sheets[0].AddSparkline("Sheet1!$A$2:$C$2", "Sheet1!$D$2:$D$2", FarPoint.Win.Spread.SparklineType.Column, ex);

VBDim ex As New FarPoint.Win.Spread.ExcelSparklineSetting()ex.DisplayXAxis = Trueex.DateAxis = Trueex.Formula = "Sheet1!$A$1:$C$1"FpSpread1.Sheets(0).Cells(0, 0).Text = "1/2/2011"FpSpread1.Sheets(0).Cells(0, 1).Text = "1/3/2011"FpSpread1.Sheets(0).Cells(0, 2).Text = "1/5/2011"FpSpread1.Sheets(0).Cells(1, 0).Value = 2FpSpread1.Sheets(0).Cells(1, 1).Value = 11FpSpread1.Sheets(0).Cells(1, 2).Value = 4FpSpread1.Sheets(0).AddSparkline("Sheet1!$A$2:$C$2", "Sheet1!$D$2:$D$2", FarPoint.Win.Spread.SparklineType.Column, ex)

UsingtheSpreadDesigner

1. Typedatainacelloracolumnorrowofcellsinthedesigner.2. Typedatesinacelloracolumnorrowofcellsinthedesigner.3. Selectacellforthesparkline.4. SelecttheInsertmenu.5. Selectasparklinetype.6. SelectthedataforthegraphwhentheCreateSparklinesdialogisdisplayed.7. SelectOK.8. Selectthesparklinecell,selecttheAxisicon,andthenmakeanychangestotheaxis.9. SelectApplyandExitfromtheFilemenutosaveyourchangesandclosethedesigner.

Working with Sparklines

Youcangroup,delete,cut,copy,andswitchrowsandcolumnswithsparklines.

Groupingmergessparklinesintoanewgroupandremovesthemfromtheoldgroups.Iftheselectedsparklinesbelongtodifferentgroupswithdifferenttypes,thenewgroupwillhavethetypeofthelastselectedgroup.Thenewgroupwillalsohavetheemptycell,style,andaxissettingsofthelastselectedgroup.

Ungroupingselectedsparklinegroupsseparatesthemintodifferentgroupsthatcontainonlyonesparkline.Thedataandlocationrangeoftheoriginalsparklineareusedinthenewgroups.Thesettingsoftheoriginalgrouparealsousedinthenewgroups.

Ifyoudeleteagroup,allsparklinesinthegrouparealsodeleted.YoucanclearasparklineincodewiththeClearSparklines('ClearSparklinesMethod'intheon-linedocumentation)methodintheSheetviewclass.

YoucanusestandardWindowsshortcutkeystocut,copy,orpastesparklines.

Spread Windows Forms Developer’s Guide 190

Copyright © GrapeCity, inc. All rights reserved.

Page 192: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Ifyoucopyagroupofsparklines,theywillbecomeanewgroupwhentheyarepastedtoanewlocation.Copyingasinglesparklinefromagroup,willcreateanewgroupwithasinglesparkline.

Youcanswitchtherangeofdatausedinthesparklinefromrowtocolumnorcolumntorow.UsetheSwitchRowColumn('SwitchRowColumnMethod'intheon-linedocumentation)methodintheExcelSparklineGroup('ExcelSparklineGroupClass'intheon-linedocumentation)classincode.Therangeofdatashouldhavethesamenumberofrowsandcolumns.UsetheAddSquareSparkline('AddSquareSparklineMethod'intheon-linedocumentation)methodintheSheetViewclasstoaddasparklinethatcanbeswitched.

UsingCode

1. UsetheGroupSparkline('GroupSparklineMethod'intheon-linedocumentation)methodtogroupsparklinecells.

2. UsetheUnGroupSparkline('UngroupSparklineMethod'intheon-linedocumentation)methodtoungroupsparklinecells.

Example

ThisexampleshowshowtousetheGroupSparkline('GroupSparklineMethod'intheon-linedocumentation)methodortheUnGroupSparkline('UngroupSparklineMethod'intheon-linedocumentation)method.

C#FarPoint.Win.Spread.SheetView sv = new FarPoint.Win.Spread.SheetView();private void Form1_Load(object sender, EventArgs e){FarPoint.Win.Spread.Chart.SheetCellRange test = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0, 0, 2, 4);FarPoint.Win.Spread.Model.CellRange data2 = new FarPoint.Win.Spread.Model.CellRange(0, 5, 2, 1);FarPoint.Win.Spread.ExcelSparklineSetting ex = new FarPoint.Win.Spread.ExcelSparklineSetting();ex.ShowFirst = true;ex.FirstMarkerColor = Color.Violet;fpSpread1.Sheets[0] = sv;sv.Cells[0, 0].Value = 2;sv.Cells[0, 1].Value = 5;sv.Cells[0, 2].Value = 4;sv.Cells[0, 3].Value = -1;sv.Cells[0, 4].Value = 3;sv.Cells[1, 0].Value = 3;sv.Cells[1, 1].Value = 1;sv.Cells[1, 2].Value = 2;sv.Cells[1, 3].Value = -1;sv.Cells[1, 4].Value = 5;

sv.Cells[2, 0].Value = 3;sv.Cells[2, 1].Value = 1;sv.Cells[2, 2].Value = 2;sv.Cells[2, 3].Value = -1;sv.Cells[2, 4].Value = 5;fpSpread1.Sheets[0].AddSparkline(test, data2, FarPoint.Win.Spread.SparklineType.Column, ex);

FarPoint.Win.Spread.Chart.SheetCellRange test1 = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 2, 0, 1, 4);

Spread Windows Forms Developer’s Guide 191

Copyright © GrapeCity, inc. All rights reserved.

Page 193: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.Model.CellRange data3 = new FarPoint.Win.Spread.Model.CellRange(2, 5, 1, 1);FarPoint.Win.Spread.ExcelSparklineSetting ex1 = new FarPoint.Win.Spread.ExcelSparklineSetting();ex1.FirstMarkerColor = Color.Red;ex1.ShowFirst = true;fpSpread1.Sheets[0].AddSparkline(test1, data3, FarPoint.Win.Spread.SparklineType.Column, ex1); sv.Cells[4, 0].Value = 2;sv.Cells[4, 1].Value = 1;sv.Cells[5, 0].Value = 5;sv.Cells[5, 1].Value = 3;FarPoint.Win.Spread.Chart.SheetCellRange newdata = new FarPoint.Win.Spread.Chart.SheetCellRange(sv, 4, 0, 2, 2);FarPoint.Win.Spread.Model.CellRange newlocation = new FarPoint.Win.Spread.Model.CellRange(6, 0, 1, 2);FarPoint.Win.Spread.ExcelSparklineSetting ex2 = new FarPoint.Win.Spread.ExcelSparklineSetting();fpSpread1.Sheets[0].AddSquareSparkline(newdata, newlocation, FarPoint.Win.Spread.SparklineType.Column, ex2, true);}

private void button1_Click(object sender, EventArgs e) {

fpSpread1.Sheets[0].GroupSparkline(new FarPoint.Win.Spread.Model.CellRange[] { new FarPoint.Win.Spread.Model.CellRange(5, 0, 3, 1) });// fpSpread1.Sheets[0].UnGroupSparkline(new FarPoint.Win.Spread.Model.CellRange[] { new FarPoint.Win.Spread.Model.CellRange(5, 0, 3, 1) });}

VBDim sv As New FarPoint.Win.Spread.SheetView()

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim data2 As New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 0, 0, 2, 4)Dim test As New FarPoint.Win.Spread.Model.CellRange(0, 5, 2, 1)

Dim ex As New FarPoint.Win.Spread.ExcelSparklineSetting()ex.ShowFirst = Trueex.FirstMarkerColor = Color.VioletFpSpread1.Sheets(0) = svsv.Cells(0, 0).Value = 2sv.Cells(0, 1).Value = 5sv.Cells(0, 2).Value = 4sv.Cells(0, 3).Value = -1sv.Cells(0, 4).Value = 3sv.Cells(1, 0).Value = 3sv.Cells(1, 1).Value = 1sv.Cells(1, 2).Value = 2sv.Cells(1, 3).Value = -1sv.Cells(1, 4).Value = 5

sv.Cells(2, 0).Value = 3

Spread Windows Forms Developer’s Guide 192

Copyright © GrapeCity, inc. All rights reserved.

Page 194: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

sv.Cells(2, 1).Value = 1sv.Cells(2, 2).Value = 2sv.Cells(2, 3).Value = -1sv.Cells(2, 4).Value = 5FpSpread1.Sheets(0).AddSparkline(data2, test, FarPoint.Win.Spread.SparklineType.Column, ex)

Dim data3 = New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 2, 0, 1, 4)Dim test1 = New FarPoint.Win.Spread.Model.CellRange(2, 5, 1, 1)Dim ex1 As New FarPoint.Win.Spread.ExcelSparklineSetting()ex1.FirstMarkerColor = Color.Redex1.ShowFirst = TrueFpSpread1.Sheets(0).AddSparkline(data3, test1, FarPoint.Win.Spread.SparklineType.Column, ex1)

sv.Cells(4, 0).Value = 2sv.Cells(4, 1).Value = 1sv.Cells(5, 0).Value = 5sv.Cells(5, 1).Value = 3Dim newdata = New FarPoint.Win.Spread.Chart.SheetCellRange(sv, 4, 0, 2, 2)Dim newlocation = New FarPoint.Win.Spread.Model.CellRange(6, 0, 1, 2)Dim ex2 As New FarPoint.Win.Spread.ExcelSparklineSetting()FpSpread1.Sheets(0).AddSquareSparkline(newdata, newlocation, FarPoint.Win.Spread.SparklineType.Column, ex2, True)End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickFpSpread1.Sheets(0).GroupSparkline(New FarPoint.Win.Spread.Model.CellRange() {New FarPoint.Win.Spread.Model.CellRange(5, 0, 3, 1)})'FpSpread1.Sheets(0).UnGroupSparkline(New FarPoint.Win.Spread.Model.CellRange() {New FarPoint.Win.Spread.Model.CellRange(5, 0, 3, 1)})End Sub

UsingtheSpreadDesigner

1. Selectthesparklinecells.2. SelectGrouporUngroupintheGroupsectionofthetoolbartogrouporungroupsparklines.3. SelectClearifyouwishtoremoveanysparklines.4. UsetheEditDataoptiontoeditthedataorswitchtherangeofdatausedinthesparkline.5. SelectApplyandExitfromtheFilemenutosaveyourchangesandclosethedesigner.

Spread Windows Forms Developer’s Guide 193

Copyright © GrapeCity, inc. All rights reserved.

Page 195: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Sheet Interaction

YoucancustomizevariousaspectsofuserinteractionofthespreadsheetintheSpreadcomponent.Thetasksthatrelatetocustomizingtheuserinteractionwiththespreadsheetinclude:

CustomizingInteractionintheOverallComponentCustomizingInteractionwithaSheetCustomizingUserSearchingofDataCustomizingUserSelectionofDataSettingandResettingUserInteractionCustomizingDrawing

Youcancustomizewhatyouallowtheusertodo.Thereareseveralfeaturesthatarecoveredinvarioustopicsinthissection,buttheyaresummarizedinonetopicforeasyreferenceinAllowingUserFunctionality.

Forinformationaboutinteractionsinotherareas,referto:

AllowingtheUsertoAutomaticallySortRowsManagingKeyboardInteractionManagingPrinting

Customizing Interaction in the Overall Component

YoucancustomizeseveralaspectsoftheuserinterfacetocustomizeuserinteractionwiththeSpreadcomponent.Youcanalsocustomizehowuserinteractionishandled.Formoreinformation,seethefollowingtopicsconcerningthesetwoareasofcustomization:

UserInterface

CustomizingtheScrollBarsoftheComponentCustomizingScrollBarTipsCustomizingtheSheetNameTabsoftheComponentCustomizingtheUserInterfaceImagesAllowingtheUsertoZoomtheDisplayoftheComponentCustomizingtheScaleModeAddingaContextMenutoaComponentAddingaStatusBar(on-linedocumentation)HostingtheComponentonaWebPage

InteractionHandling

CustomizingClipboardOperationOptionsCustomizingUndoandRedoActionsLocatingthePointerUsingHitTestCustomizingInteractionBasedonEventsHandlingEventsofSubeditorsCustomizingtheUserErrorMessages

YoucanalsosupplytheuserwithaSearchdialog.Formoreinformation,seeAllowingtheUsertoPerformaStandardSearch.

Customizing the Scroll Bars of the Component

Youcancustomizethedisplayandoperationofthescrollbarsonthespreadsheet.Thereareseveralaspectsofthe

Spread Windows Forms Developer’s Guide 194

Copyright © GrapeCity, inc. All rights reserved.

Page 196: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

displayofscrollbarsthatyoucanspecify.Thepartsofthescrollbarsareshowninthefollowingfigure.

OnewaytocustomizethescrollbardisplayandoperationistousetheEnhancedScrollBarRenderer('EnhancedScrollBarRendererClass'intheon-linedocumentation)classmembers.

AnotherwayistosetthesecustomizationstothescrollbarsfortheentirecomponentusingthepropertiesintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Tosetthescrollbarsfortheviewports,usethepropertiesintheSpreadView('SpreadViewClass'intheon-linedocumentation)class.ThetablebelowlinkstopropertiesintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Customization PropertyinFpSpreadWhentodisplayeitheraverticalorhorizontalscrollbarorbothontheedgesofthesheetinthecomponent

HorizontalScrollBarPolicy('HorizontalScrollBarPolicyProperty'intheon-linedocumentation)

VerticalScrollBarPolicy('VerticalScrollBarPolicyProperty'intheon-linedocumentation)

Dimensionsofthescrollbars HorizontalScrollBarHeight('HorizontalScrollBarHeightProperty'intheon-linedocumentation)

VerticalScrollBarWidth('VerticalScrollBarWidthProperty'intheon-linedocumentation)

Whetherthespreadsheetscrollsacrossthedisplaywhentheusermovesthescrollbox(tracking)

ScrollBarTrackPolicy('ScrollBarTrackPolicyProperty'intheon-linedocumentation)

Whetherscrollbarsarebasedononlytheareathathasdataorontheentirespreadsheet

ScrollBarShowMax('ScrollBarShowMaxProperty'intheon-linedocumentation)

Whethertoalignthescrollbarswiththelastrowandcolumn

ScrollBarMaxAlign('ScrollBarMaxAlignProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 195

Copyright © GrapeCity, inc. All rights reserved.

Page 197: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Whetherscrollbartipsaredisplayed SeeCustomizingScrollBarTips

Ifyouwanttosetthewidthofahorizontalscrollbar,youcanchangethetabstripratio,whichdeterminesthewidthofthetabstrip,butalsodeterminesthewidthofthescrollbar.Bydefault,theTabStripRatio('TabStripRatioProperty'intheon-linedocumentation)propertyissetto0.50(areaisdivided50%tabstripand50%scrollbar).Toincreasethewidthofthescrollbar,forexample,youcouldchangethetabstripratioto0.25,whichwoulddividetheareabetween25%forthetabstripand75%forthescrollbar.Formoreinformationoncustomizingthetabstrip,refertoCustomizingtheSheetNameTabsoftheComponent.

Therearetwoeventsthatindicatethattheenduserhasmovedthescrollbars.TheTopChange('TopChangeEvent'intheon-linedocumentation)eventisraisedwhentheendusermovestheverticalscrollbar.TheLeftChange('LeftChangeEvent'intheon-linedocumentation)eventisraisedwhenthehorizontalscrollbarismoved.Thereisnoeventraisedtoindicatethattheuserhasresizedthetabstrip.

Thescrollbarsarecontrolsandsoinheritthebenefitsofthosecontrols.Forexample,therearecontextmenusavailableonboththehorizontalandverticalscrollbarsthatareavailablebydefault.

Thedefaultscrollbarsdonotdisplaythepage,home,orendarrows.

SmoothScrolling

YoucanprovidesmoothscrollingwiththeVerticalScrollBarMode('VerticalScrollBarModeProperty'intheon-linedocumentation)andHorizontalScrollBarMode('HorizontalScrollBarModeProperty'intheon-linedocumentation)properties.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. Select(intheBehaviorcategory)eachofthescrollbarpropertiesandsetthevaluesaccordingly.3. Repeatforeachproperty.

UsingCode

Tosetthescrollbarsforthecomponent,settheFpSpread('FpSpreadClass'intheon-linedocumentation)componentscrollbarproperties.

Example

ThisexamplecreatesanewSpreadcontrolontheformandspecifiesseveralaspectsofthescrollbarsforthecomponent.Scrollbarsappearlargerthanthedefaultsize.Forscrollinghorizontally,thespreadsheetscrollsasyoumovethescrollbox;forscrollingvertically,thescrollbartipshowstherownumber,butthespreadsheetdoesnotscrolluntilyouaredone.

C#FarPoint.Win.Spread.FpSpread fpSpread1 = new FarPoint.Win.Spread.FpSpread();FarPoint.Win.Spread.SheetView shv = new FarPoint.Win.Spread.SheetView();fpSpread1.Location = new Point(10, 10);fpSpread1.Height = 250;fpSpread1.Width = 400;Controls.Add(fpSpread1);fpSpread1.Sheets.Add(shv);fpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.Always;fpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded;fpSpread1.HorizontalScrollBarHeight = 30;fpSpread1.VerticalScrollBarWidth = 30;fpSpread1.ScrollBarMaxAlign = true;

Spread Windows Forms Developer’s Guide 196

Copyright © GrapeCity, inc. All rights reserved.

Page 198: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ScrollBarShowMax = true;fpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.Horizontal;fpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Vertical;

VBDim FpSpread1 As New FarPoint.Win.Spread.FpSpread()Dim shv As New FarPoint.Win.Spread.SheetView()FpSpread1.Location = New Point(10, 10)FpSpread1.Height = 250FpSpread1.Width = 400Controls.Add(FpSpread1)FpSpread1.Sheets.Add(shv)FpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AlwaysFpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeededFpSpread1.HorizontalScrollBarHeight = 30FpSpread1.VerticalScrollBarWidth = 30FpSpread1.ScrollBarMaxAlign = TrueFpSpread1.ScrollBarShowMax = TrueFpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.HorizontalFpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Vertical

UsingCode

Todisplayallthescrollbarbuttons,settheFpSpread('FpSpreadClass'intheon-linedocumentation)componentscrollbarproperties.

Example

Thisexampleshowsallthescrollbarbuttons.

C#fpSpread1.VerticalScrollBar.Buttons = FarPoint.Win.Spread.ScrollBarButtons.HomeEnd | FarPoint.Win.Spread.ScrollBarButtons.PageUpDown | FarPoint.Win.Spread.ScrollBarButtons.LineUpDown | FarPoint.Win.Spread.ScrollBarButtons.Thumb;fpSpread1.HorizontalScrollBar.Buttons = FarPoint.Win.Spread.ScrollBarButtons.HomeEnd | FarPoint.Win.Spread.ScrollBarButtons.LineUpDown | FarPoint.Win.Spread.ScrollBarButtons.PageUpDown | FarPoint.Win.Spread.ScrollBarButtons.Thumb;

VBFpSpread1.VerticalScrollBar.Buttons = FarPoint.Win.Spread.ScrollBarButtons.HomeEnd Or FarPoint.Win.Spread.ScrollBarButtons.PageUpDown Or FarPoint.Win.Spread.ScrollBarButtons.LineUpDown Or FarPoint.Win.Spread.ScrollBarButtons.ThumbFpSpread1.HorizontalScrollBar.Buttons = FarPoint.Win.Spread.ScrollBarButtons.HomeEnd Or FarPoint.Win.Spread.ScrollBarButtons.LineUpDown Or FarPoint.Win.Spread.ScrollBarButtons.PageUpDown Or FarPoint.Win.Spread.ScrollBarButtons.Thumb

UsingtheSpreadDesigner

1. FromtheSettingsmenu,selectScrollbars.

Spread Windows Forms Developer’s Guide 197

Copyright © GrapeCity, inc. All rights reserved.

Page 199: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. IntheScrollBartab,setthedisplayandtrackingbyselectingtheoptions.3. ClickOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

or

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent(intheBehaviorcategory),selectoneofthescrollbarproperties.3. Clickthedrop-downarrowtodisplaythechoicesandselectavalue.Repeatthisforeachproperty.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing Scroll Bar Tips

Asanadditionalaidtotheendusers,youcanturnonscrollbartipswhich,bydefault,displaytherownumberwhenthepointerisovertheverticalscrollbarandthecolumnnumberwhenthepointerisoverthehorizontalscrollbar.Inthefollowingfigure,thescrollbartipshowsthecolumnnumberforhorizontalscrolling.

IntheexamplecodeinthetopicCustomizingtheScrollBarsoftheComponent,thescrollbartipsaresetfortheverticalscrollingbutturnedoffforhorizontalscrollingbyusingtheScrollTipPolicy('ScrollTipPolicyProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

YoucanspecifyhowthescrollbartipsaredisplayedfortheverticalscrollbarusingpropertiesintheScrollingContentInfo('ScrollingContentInfoClass'intheon-linedocumentation)class.Thisallowsyoutospecifythelocationoftheindexnumbersandthemaximumheightfortheverticalscrollbartips.

Youcanalsoshowimageorbuttoncellsinthescrollbartips.Ifyousetthecolumnindicestocolumnswithbuttonorimagecells,thenthecellswillbedisplayedintheverticalscrolltip.Thefollowingimageshowsaverticalscrolltipwithabuttoncell.TheextratextinthescrolltipisaddedusingtheScrollTipFetch('ScrollTipFetchEvent'intheon-linedocumentation)event.Thecolumnindexofzerocausesthebuttoncelltobedisplayedandthecolumnindexoftwocausesthenametobedisplayedinthescrolltip.

YoucanalsocustomizethetextforthescrollbartexttipbyusingtheTipText('TipTextProperty'intheon-linedocumentation)propertyoftheScrollTipFetchEventArgs('ScrollTipFetchEventArgsClass'intheon-linedocumentation)(fortheScrollTipFetchevent).ThiseventcanbeusedwiththesettingsintheScrollingContentInfo('ScrollingContentInfoClass'intheon-linedocumentation)classtocombinethecolumncontentwiththetextsetintheevent(asillustratedintheaboveimage).

Example

Inthisexample,thescrollbartipdisplayscustomtextfortheverticalscrollbaranddefaulttextforthehorizontalscrollbar.

C#private void Form1_Load(object sender, System.EventArgs e){

Spread Windows Forms Developer’s Guide 198

Copyright © GrapeCity, inc. All rights reserved.

Page 200: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Display pop-ups when scrolled horizontally/vertically. fpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Both; // Scroll sheets all together. fpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.Both;}

private void fpSpread1_ScrollTipFetch(object sender, FarPoint.Win.Spread.ScrollTipFetchEventArgs e){ if (e.Column == -1) { // Customize text to be displayed. e.TipText = "Currently, row " + e.Row.ToString() + " is scrolled."; }}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Display pop-ups when scrolled horizontally/vertically. FpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Both ' Scroll sheets all together. FpSpread1.ScrollBarTrackPolicy = FarPoint.Win.Spread.ScrollBarTrackPolicy.BothEnd Sub

Private Sub FpSpread1_ScrollTipFetch(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.ScrollTipFetchEventArgs) Handles FpSpread1.ScrollTipFetch If e.Column = -1 Then ' Customize text to be displayed. e.TipText = "Currently, row " + e.Row.ToString + " is scrolled." End IfEnd Sub

Example

Inthisexample,thescrollbartipissetusingtheScrollingContentInfoclass.YoucanalsousetheScrollTipFetcheventcodeintheprevioussamplewiththissample.

C#fpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.Both;FarPoint.Win.Spread.ScrollingContentInfo scrollingContentInfo = new FarPoint.Win.Spread.ScrollingContentInfo();scrollingContentInfo.ColumnIndices = "0,2";scrollingContentInfo.MaxHeight = 100;scrollingContentInfo.RowNumberPolicy = FarPoint.Win.Spread.ScrollingContentRowNumberPolicy.Last;fpSpread1.Sheets[0].ScrollingContentInfo = scrollingContentInfo;// The following code creates button cells for the text tip// FarPoint.Win.Spread.CellType.ButtonCellType btest = new FarPoint.Win.Spread.CellType.ButtonCellType();// btest.Text = "test";// fpSpread1.Sheets[0].Columns[0].CellType = btest;

VB

Spread Windows Forms Developer’s Guide 199

Copyright © GrapeCity, inc. All rights reserved.

Page 201: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ScrollTipPolicy = FarPoint.Win.Spread.ScrollTipPolicy.BothDim scrollingContentInfo As New FarPoint.Win.Spread.ScrollingContentInfo()scrollingContentInfo.ColumnIndices = "0,2"scrollingContentInfo.MaxHeight = 100scrollingContentInfo.RowNumberPolicy = FarPoint.Win.Spread.ScrollingContentRowNumberPolicy.LastFpSpread1.Sheets(0).ScrollingContentInfo = scrollingContentInfo' The following code creates button cells for the text tip' Dim btest As New FarPoint.Win.Spread.CellType.ButtonCellType' btest.Text = "test"' FpSpread1.Sheets(0).Columns(0).CellType = btest

Customizing the Sheet Name Tabs of the Component

Ifthereismorethanonesheetintheworkbook,thetabstripdisplaysthesheetnamestabsinatabstripwiththetabfortheactivesheethighlighted.Thesheettabsprovideawayfortheusertonavigatetodifferentsheets.

YoucancustomizehowandiftodisplaythesheetnamesintabsoftheSpreadcomponent.Bydefault,thetabstripisnotdisplayedbecausethereisonlyonesheetinthecomponentuntilmoresheetsareadded.Ifyouaddadditionalsheets,thetabstripbydefaultisthendisplayedshowingthesheetnametabs.

Youcancustomizethefollowingfeaturesforthetabstrip:

DisplayAppearancePlacementWidthPointerdisplayFirsttabdisplayedEvents

Youcancustomizeallthesefeaturesusingcode,andsomecanbesetintheSpreadDesigner.FormoreinformationonhowtoworkwiththetabstripsettingsinSpreadDesigner,refertotheSpreadSettings,GeneralTab(on-linedocumentation)intheSpreadDesignerGuide.

Forgeneralinformation,refertotheseclasses:

FpSpread('FpSpreadClass'intheon-linedocumentation)SheetTab('SheetTabClass'intheon-linedocumentation)TabStrip('TabStripClass'intheon-linedocumentation)

TabStripDisplay

Youcansetthecomponenttoalwaysorneverdisplaythetabstrip,ortodisplayonlywhenthereareatleasttwosheets.Formoreinformationandcodeexamples,refertothesemembers:

FpSpreadclass,TabStripPolicy('TabStripPolicyProperty'intheon-linedocumentation)propertyFpSpreadclass,TabStrip('TabStripProperty'intheon-linedocumentation)propertyTabStripclass,ButtonPolicy('ButtonPolicyProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 200

Copyright © GrapeCity, inc. All rights reserved.

Page 202: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TabStripButtonPolicy('TabStripButtonPolicyEnumeration'intheon-linedocumentation)enumeration

Note:IfyouareplanningtoexportthecontentsoftheSpreadtoimportintoExcel,donotusecharactersinthesheetnamethatareinvalidinExcel.InvalidExcelsheetnamecharactersinclude:?/\*[]

Formoreinformationonhowtoaddsheetstotheworkbook,refertoAddingaSheet.

TabStripAppearance

Youcancustomizetheappearanceoftheentiretabstripaswellastheindividualsheetnametabs.

Youcansetpropertiesforthetabstripsuchasthebackgroundcolor(settheInterfaceRenderertoNothingornullandvisualstylestoOff)andtextfontforthesheettabs.ThedefaultsheetnamesareSheet1,Sheet2,andsoon.Youcanspecifyothernamesforthesheetsandtheseappearinthesheettabs.Youcanalsoallowtheusertoeditthesheetnames.

Youcancustomizethenameofeachsheet.UsetheSheetName('SheetNameProperty'intheon-linedocumentation)propertyintheSheetView('SheetViewClass'intheon-linedocumentation)class.Formoreinformation,refertothesemembers:

SheetTab('SheetTabClass'intheon-linedocumentation)classmembersTabStrip('TabStripClass'intheon-linedocumentation)classmembers

TabStripPlacement

Youcancustomizewherethetabstripisdisplayedintheoverallcomponent.

PlacementValue SampleShowingPlacementTop(atthetopofthecomponentabovetheheaders)

Spread Windows Forms Developer’s Guide 201

Copyright © GrapeCity, inc. All rights reserved.

Page 203: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Bottom(underthescrollbaratthebottomofthecomponent)

WithScrollBar(alongsidethescrollbaratthebottomofthecomponent)

Ifthetabstripisplacedatthetopofthesheet,andthegroupingdisplayisturnedon,thetabstripappearsbelowthegroupbarbutabovethecolumnheadersandtherestofthesheet.

Formoreinformationandcodeexamples,refertotheFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripPlacement('TabStripPlacementProperty'intheon-linedocumentation)property.

TabStripWidth

Youcanspecifythewidthofthetabstripinrelationtotheoverallscrollbarwidth,ifthetabstripandscrollbararedisplayedtogetherinline.

Youcansethowwidethetabstripis,andtherefore,howmanysheettabsaredisplayed.Ifthenumberoftabsexceedsthewidthofthetabstrip,thecomponentdisplaysbuttons.Clickthebuttonstodisplaythenext(orprevious)sheettabs.ThewidthissetbysettingtheFpSpreadTabStripRatio('TabStripRatioProperty'intheon-linedocumentation)property,whichsetsthewidthofthetabstripasapercentageofthelengthoftheentirecomponent.Bydefault,theratioissetto0.50(areaisdivided50%tabstripand50%scrollbar).Formoreinformationonsettingthescrollbarproperties,refertoCustomizingtheScrollBarsoftheComponent.

PointerDisplayoverTabStrip

Youcanspecifythatthepointerchangesappearancewhenitisoverthetabstrip.UsetheTabStripvalueoftheCursorType('CursorTypeEnumeration'intheon-linedocumentation)enumerationtodisplayapointerinthesheettabs.

Spread Windows Forms Developer’s Guide 202

Copyright © GrapeCity, inc. All rights reserved.

Page 204: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FirstTabinTabStrip

Youcansetwhichsheettabtodisplayastheleft-mosttabwiththeLeftTab('LeftTabProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

TabStripEvents

Youcanworkwiththefollowingeventsandeventhandlers.

FpSpreadClass,OnSheetTabClick('OnSheetTabClickMethod'intheon-linedocumentation)MethodandOnSheetTabDoubleClick('OnSheetTabDoubleClickMethod'intheon-linedocumentation)MethodSheetTabClick('SheetTabClickEvent'intheon-linedocumentation)EventSheetTabClickEventArgs('SheetTabClickEventArgsClass'intheon-linedocumentation)ClassSheetTabClickEventHandler('SheetTabClickEventHandlerDelegate'intheon-linedocumentation)DelegateSheetTabDoubleClick('SheetTabDoubleClickEvent'intheon-linedocumentation)EventSheetTabDoubleClickEventArgs('SheetTabDoubleClickEventArgsClass'intheon-linedocumentation)ClassSheetTabDoubleClickEventHandler('SheetTabDoubleClickEventHandlerDelegate'intheon-linedocumentation)Delegate

ThenameoftheeventthatoccurswhenauserclicksonthesheetnametabistheSheetTabClick('SheetTabClickEvent'intheon-linedocumentation)event.

ThetabthattheuserhasclickedcanbedeterminedbygettingtheSheetTabIndex('SheetTabIndexProperty'intheon-linedocumentation)value.Thee.SheetTabIndexeventparameterreturnsthetabthatwasclickedon.

Todisplaythetabnameyoucanuseamessageboxasshowninthiscode:

MsgBox(FpSpread1.Sheets(e.SheetTabIndex).SheetName)

UsingthePropertiesWindow

1. InthePropertieswindow,selecttheSpreadcomponent.2. SpecifythewidthofthetabstripbysettingtheTabStripRatioproperty.3. SpecifywhensheettabsaredisplayedbysettingtheTabStripPolicyproperty.4. SpecifythelocationofthetabstripbysettingtheTabStripPlacementproperty.5. SpecifywhenthebuttonsaredisplayedbyclickingtheTabStripproperty,thensettingtheButtonPolicyproperty.

6. SpecifythebackgroundcolorforthesheettabsbyclickingtheTabStripproperty,thensettingtheBackColorproperty.

UsingaShortcut

1. SpecifythewidthofthetabstripbysettingFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripRatio('TabStripRatioProperty'intheon-linedocumentation)property.

2. SpecifywhensheettabsaredisplayedbysettingFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripPolicy('TabStripPolicyProperty'intheon-linedocumentation)property.

3. SpecifywherethetabstripisdisplayedbysettingtheFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripPlacement('TabStripPlacementProperty'intheon-linedocumentation)property.

4. SpecifywhenthebuttonsaredisplayedbysettingTabStrip('TabStripClass'intheon-linedocumentation)classButtonPolicy('ButtonPolicyProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 203

Copyright © GrapeCity, inc. All rights reserved.

Page 205: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

property.5. SpecifythebackgroundcolorforthesheettabsbysettingTabStrip('TabStripClass'intheon-linedocumentation)classBackColor('BackColorProperty'intheon-linedocumentation)property.

Example

Thisexamplesetsthesheettabstoalwaysappear,setsthetabstripbuttonstoonlyappearasneeded,setsthebackgroundcolorofthesheettabstoBisque,andsetsthewidthofthetabstripto60%.

C#// Set the sheet tabs to always appear.fpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Always;// Set the width to 60%.fpSpread1.TabStripRatio = 0.60;// Display the tab strip buttons as needed.fpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.AsNeeded;// Set the background color.fpSpread1.TabStrip.BackColor = Color.Bisque;fpSpread1.InterfaceRenderer = null;

VB' Set the sheet tabs to always appear.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Always' Set the width to 60%.FpSpread1.TabStripRatio = 0.60' Display the tab strip buttons as needed.FpSpread1.TabStrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.AsNeeded' Set the background color.FpSpread1.TabStrip.BackColor = Color.BisqueFpSpread1.InterfaceRenderer = Nothing

UsingCode

1. SpecifythewidthofthetabstripbysettingtheFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripRatio('TabStripRatioProperty'intheon-linedocumentation)property.

2. SpecifywhensheettabsaredisplayedbysettingtheFpSpread('FpSpreadClass'intheon-linedocumentation)classTabStripPolicy('TabStripPolicyProperty'intheon-linedocumentation)property.

3. CreateanewTabStrip('TabStripClass'intheon-linedocumentation)object,andsetitsvalueequaltotheFpSpread('FpSpreadClass'intheon-linedocumentation)objectTabStrip('TabStripProperty'intheon-linedocumentation)property.

4. SettheTabStrip('TabStripClass'intheon-linedocumentation)objectButtonPolicy('ButtonPolicyProperty'intheon-linedocumentation)propertytospecifywhenthebuttonsaredisplayed,andsetitsBackColor('BackColorProperty'intheon-linedocumentation)propertytospecifythebackgroundcolor.

Example

Thisexamplesetsthesheettabstoalwaysappear,setsthetabstripbuttonstoonlyappearasneeded,setsthebackgroundcolorofthesheettabstoBisque,andsetsthewidthofthetabstripto60%.

C#

Spread Windows Forms Developer’s Guide 204

Copyright © GrapeCity, inc. All rights reserved.

Page 206: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Set the sheet tabs to always appear.fpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Always;// Set the width to 60%.fpSpread1.TabStripRatio = 0.60;// Create new tab strip.FarPoint.Win.Spread.TabStrip tstrip;tstrip = fpSpread1.TabStrip;// Display the tab strip buttons as needed.tstrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.AsNeeded;// Set the background color.tstrip.BackColor = Color.Bisque;fpSpread1.InterfaceRenderer = null;

VB' Set the sheet tabs to always appear.FpSpread1.TabStripPolicy = FarPoint.Win.Spread.TabStripPolicy.Always' Set the width to 60%.FpSpread1.TabStripRatio = 0.60' Create new tab strip.Dim tstrip As New FarPoint.Win.Spread.TabStrip()tstrip = FpSpread1.TabStrip' Display the tab strip buttons as needed.tstrip.ButtonPolicy = FarPoint.Win.Spread.TabStripButtonPolicy.AsNeeded' Set the background color.tstrip.BackColor = Color.BisqueFpSpread1.InterfaceRenderer = Nothing

UsingtheSpreadDesigner

1. FromtheSettingsmenu,chooseTabStrip(Appearancesection).2. UnderTabStripPolicy,selectwhenyouwantthesheettabstobedisplayedorselectNevertohidethesheet

tabs.Nomatterwhichitemyouselect,insideSpreadDesignerthesheettabsarealwaysdisplayedtoassistyouindesigningyourcomponent.WhenyouexitSpreadDesignerandapplyyourchanges,youcanseetheeffectofthetabsettingsinyourcomponent,oryoucanseeitbypreviewingthecomponentinsideSpreadDesigner.TopreviewinsideSpreadDesigner,fromtheFilemenuchoosePreview.

3. SetthewidthofthetabstripbysettingthevalueintheSheetTabPercentagebox.4. ClickOKtoclosetheSpreadOptionsdialog.5. SelecttheSpreadobject.6. Inthepropertylist,selecttheTabStrippropertytoseeitsproperties.7. ChangetheButtonPolicypropertyifyouwanttochangewhenthetabstripbuttonsaredisplayed.8. ChangetheBackColorpropertyifyouwanttochangethebackgroundcolorforthetabstrip.9. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the User Interface Images

Youcancustomizevariousimagesintheuserinterfacebyselectingyourowncustomimagesandapplyingthemtoreplacedefaultimages.Thepartsoftheuserinterfacethatyoucancustomizeare:

Hierarchy(expandingandcollapsing)iconsFilteringindicatorsSortingindicators

Spread Windows Forms Developer’s Guide 205

Copyright © GrapeCity, inc. All rights reserved.

Page 207: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Rowselector

Todeterminetheimagesforthesepartsoftheuserinterface,usetheGetImage('GetImageMethod'intheon-linedocumentation)andSetImage('SetImageMethod'intheon-linedocumentation)methodsintheSpreadView('SpreadViewClass'intheon-linedocumentation)class.ThevariousfieldsoftheSpreadView('SpreadViewClass'intheon-linedocumentation)classallowyoutospecifytowhichpartoftheinterfacethegraphicimageisassigned.Theseimagescanbesetatruntimeonly,notatdesigntime.

Foranexampleofthesemethodsrefertotheexamplesgivenfortheindividualfields:

CollapseImage('CollapseImageField'intheon-linedocumentation)CollapseImageDisabled('CollapseImageDisabledField'intheon-linedocumentation)ExpandImage('ExpandImageField'intheon-linedocumentation)ExpandImageDisabled('ExpandImageDisabledField'intheon-linedocumentation)FilterActive('FilterActiveField'intheon-linedocumentation)FilterActiveDisabled('FilterActiveDisabledField'intheon-linedocumentation)FilterBarFilterActive('FilterBarFilterActiveField'intheon-linedocumentation)FilterBarFilterDateTime('FilterBarFilterDateTimeField'intheon-linedocumentation)FilterBarFilterInactive('FilterBarFilterInactiveField'intheon-linedocumentation)FilterInactive('FilterInactiveField'intheon-linedocumentation)FilterInactiveDisabled('FilterInactiveDisabledField'intheon-linedocumentation)RowSelectorImage('RowSelectorImageField'intheon-linedocumentation)RowSelectorImageDisabled('RowSelectorImageDisabledField'intheon-linedocumentation)SortAscendingImage('SortAscendingImageField'intheon-linedocumentation)SortAscendingImageDisabled('SortAscendingImageDisabledField'intheon-linedocumentation)SortDescendingImage('SortDescendingImageField'intheon-linedocumentation)SortDescendingImageDisabled('SortDescendingImageDisabledField'intheon-linedocumentation)SortUnsortedImage('SortUnsortedImageField'intheon-linedocumentation)SortUnsortedImageDisabled('SortUnsortedImageDisabledField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 206

Copyright © GrapeCity, inc. All rights reserved.

Page 208: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ToresetanimagebacktoaSpreaddefaultimage,simplysettheimagevaluetonullintheSetImage('SetImageMethod'intheon-linedocumentation)method.

Anotherwaytosettheimagesforthefilteringandsortingindicators,istooverridethePaintFilterIndicator('PaintFilterIndicatorMethod'intheon-linedocumentation)andPaintSortIndicator('PaintSortIndicatorMethod'intheon-linedocumentation)methodsintheCellTypeColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation)class.Formoreinformation,referto:

SettingtheAppearanceofFilterIndicatorsSettingtheAppearanceofSortIndicators

Formoreinformationaboutfeatures,seethefollowingtopics:

WorkingwithHierarchicalDataDisplay.AllowingtheUsertoAutomaticallySortRows.UnderstandingSimpleRowFiltering.

Allowing the User to Zoom the Display of the Component

YoucanallowtheusertochangethescaleofthedisplayoftheSpreadcomponent,inotherwordstozoominorzoomout.UsetheAllowUserZoom('AllowUserZoomProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.ThisallowstheusertozoominoroutbypressingtheCtrlkeyandturningthemousewheel.Theusercanzoominupto400%andoutto10%ofthedefaultdisplay.Thescrollbarsareunaffectedbyzooming;onlythecorner,headers,anddataareachangetheirappearancewithzooming.

UsingtheSpreadDesigner

1. SelecttheViewmenuandthentheZoomoption.2. Setthepercentage.3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexittheSpread

Designer.

Customizing the Scale Mode

Youcanprovidesupportforthe120dpiscalemodeinSpreadwiththeSpreadScaleMode('SpreadScaleModeProperty'intheon-linedocumentation)property.Spreadsupportsresizingrows,columns,cells,anddatabasedonthedpi.

Theautomaticscalingonlyoccurswhentheformisloaded.Thescalingcanchangeatruntimeiftherearechangestothecontrolsizeandlocationandthecontainerlayoutissuspended.

Forthebestresults,settheAutoScaleModepropertyofthecontainertoDpiwhenusingtheZoomDpiSupportoptionoftheSpreadScaleMode('SpreadScaleModeProperty'intheon-linedocumentation)property.

UsingCode

1. Suspendthelayout.2. Setthelocationandsizeforthecontrol.3. SettheSpreadScaleMode('SpreadScaleModeProperty'intheon-linedocumentation)propertytoZoomDpiSupport.

4. UsetheResumeLayout('ResumeLayoutMethod'intheon-linedocumentation)methodtoseethechanges.

Spread Windows Forms Developer’s Guide 207

Copyright © GrapeCity, inc. All rights reserved.

Page 209: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

ThisexamplesetstheSpreadScaleModepropertytoZoomDpiSupportandsuspendsandresumesthelayout.

C#fpSpread.SuspendLayout();

AutoScaleDimensions = new System.Drawing.SizeF(96.0F, 96.0F);AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;fpSpread1.Location = new System.Drawing.Point(23, 86);fpSpread1.Size = new System.Drawing.Size(356, 161);fpSpread1.SpreadScaleMode = FarPoint.Win.Spread.ScaleMode.ZoomDpiSupport;fpSpread1.ResumeLayout();

VBFpSpread1.SuspendLayout()

AutoScaleDimensions = New System.Drawing.SizeF(96.0F, 96.0F)AutoScaleMode = System.Windows.Forms.AutoScaleMode.DpiFpSpread1.Location = New System.Drawing.Point(23, 86)FpSpread1.Size = New System.Drawing.Size(356, 161)FpSpread1.SpreadScaleMode = FarPoint.Win.Spread.ScaleMode.ZoomDpiSupportFpSpread1.ResumeLayout()

Adding a Context Menu to a Component

YoucancreateacontextmenuandaddittotheContextMenupropertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)component(whichisinheritedfromtheSystem.Windows.Forms.Control).Thecomponentautomaticallydisplaysthismenuofcontext-specificmenuoptionswhenyourightclickonthecomponent.Acontextmenuisalsoknownasashortcutmenu.Formoreinformation,refertotheMicrosoft.NETdocumentationaboutcontextmenu(orshortcutmenu).Thefigureshowsacontextmenuwithtwochoices.Thecodeforthisfigureisshownintheexample.

Thescrollbarshave,bydefault,acontextmenuoftheirown.

UsingCode

1. AddacontextmenuusingtheContextMenuproperty.2. Definethemenuitems.

Atdesigntime,youcouldalsodropinaContextMenufromtheToolboxandlookatthecodegeneratedbythattolearnmore.

Spread Windows Forms Developer’s Guide 208

Copyright © GrapeCity, inc. All rights reserved.

Page 210: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecreatesacontextmenu.

C#ContextMenu custommenu = new ContextMenu();custommenu.MenuItems.Add("&Table");custommenu.MenuItems.Add("&Color", new EventHandler(ContextMenu_Color));fpSpread1.ContextMenu = custommenu;

private void ContextMenu_Color(object sender, System.EventArgs e){ MessageBox.Show("You chose color.");}

VBDim custommenu As New ContextMenucustommenu.MenuItems.Add("&Table")custommenu.MenuItems.Add("&Color", New EventHandler(AddressOf ContextMenu_Color))FpSpread1.ContextMenu = custommenu

Private Sub ContextMenu_Color(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("You chose color.")End Sub

Hosting the Component on a Web Page

IfyouarehostingtheSpreadWindowsFormscomponentasausercontrolonaWebpageinMicrosoftInternetExplorer(IE),youshouldmakesecuritypermissionadjustmentsbysettingtheleveloftrust.

ForMicrosoftIE

InMicrosoftIE,selectTools->InternetOptions->SecurityandselectTrustedSites.ClicktheSitesbuttonandaddtheWebsitewhereyourusercontrolresides(forexample,http://localhost).InMicrosoftWindows,selectStart->Settings->ControlPanelandselectAdministrativeTools.SelectMicrosoft.NETFrameworkConfiguration.Inthe.NETFrameworkConfigurationwindow,selectRuntimeSecurityPolicyandclickAdjustZoneSecurity.IntheAdjustZoneSecuritywizard,answerthefirstscreen(whichcomputeritappliesto)andinthenextscreen,clickTrustedSitesandslidetheindicatortogivethatzoneFullTrust.FinishthewizardbyclickingNext.

Customizing Clipboard Operation Options

ThereareseveralClipboardoperations(suchascopy,cut,andpaste)thatareautomaticallysetforasheetwithdefaultsettings;theyarebuilt-intoSpread.ButSpreadalsogivesyoutheabilitytocustomizetheseoperationsonactualapplicationsthatyoudevelop,dependingonyourspecificneeds.YoucancustomizehowtheusercaninteractwiththecontentsoftheClipboardwhenusersperformcopyingandpastingactionsincellsinthespreadsheet.Youcanimplementthoseoperationsatyourdiscretionincode.Thesecustomizationsinclude:

DeactivatingclipboardoperationsExcludingheadersfromclipboardoperationsObtainingtheclipboardcontents

Spread Windows Forms Developer’s Guide 209

Copyright © GrapeCity, inc. All rights reserved.

Page 211: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DeactivatingpastingChangingthescopeofpastingPerformingtheclipboardoperationsincode

ThefollowingmembersareusedtodetermineClipboard-relatedinteraction:

ClipboardOptions('ClipboardOptionsProperty'intheon-linedocumentation)property(andClipboardOptions('ClipboardOptionsEnumeration'intheon-linedocumentation)enumeration)AutoClipboard('AutoClipboardProperty'intheon-linedocumentation)propertyClipboardCopyOptions('ClipboardCopyOptionsEnumeration'intheon-linedocumentation)enumerationClipboardPasteOptions('ClipboardPasteOptionsEnumeration'intheon-linedocumentation)enumeration

ThespreadsheetmethodsintheSheetView('SheetViewClass'intheon-linedocumentation)classthatinvolveClipboardoperationare:

ClipboardCopy('ClipboardCopyMethod'intheon-linedocumentation),whichcopiesthecontentsfromthesheettotheClipboardClipboardCut('ClipboardCutMethod'intheon-linedocumentation),whichcutsthecontentsfromthesheettotheClipboardClipboardPaste('ClipboardPasteMethod'intheon-linedocumentation),whichpastesthecontentsfromtheClipboardtothesheet

ThecorrespondingshapemethodsintheSheetView('SheetViewClass'intheon-linedocumentation)classthatinvolveClipboardoperationare:

ClipboardCopyShape('ClipboardCopyShapeMethod'intheon-linedocumentation),whichcopiestheactiveshapetotheClipboardClipboardCutShape('ClipboardCutShapeMethod'intheon-linedocumentation),whichcutstheactiveshapetotheClipboardClipboardPasteShape('ClipboardPasteShapeMethod'intheon-linedocumentation),whichpastestheshapefromtheClipboard

IftherearelockedcellsintherangetocutorpastethentheClipboardoperationisnotperformed.

The.NETversionoftheproducthandlesClipboardoperationsdifferentlyfromthewaythattheCOMversiondoes.

YoucanalsosethowsomeClipboard-relatedfeaturesperformwhentheuserisineditmodeinacellontheSpread.Youcansetwhetherthepop-upmenuappearswhileineditmodewithinacellusingtheAutoMenupropertyinSuperEditBaseclassandwhethertheusercanperformClipboardoperationswiththeshortcutkeyswiththeAllowClipboardKeyspropertyinSuperEditBaseclass.

Formoreinformationaboutcopyingandpasting,seeCopyingDataonaSheet.

DeactivatingClipboardOperations

YoucansetwhethertheshortcutkeysareavailabletotheenduserforthemtousetoperformClipboardoperationsbysettingtheAutoClipboardpropertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.YoucandeactivatealltheClipboardoperationswithcomponentsbysettingtheAutoClipboardpropertytoFalseintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.ThedefaultsettingisTrue.YoucandeactivatesomeClipboardoperationssuchaspasting(Ctrl+V)bydeactivatingtheinputmapdefinitionforshort-cutkeysandClipboardoperations(Ctrl+C,Ctrl+V,andCtrl+X).

ExcludingHeadersfromClipboardOperations

YoucansetwhethertoincludeheaderswhenusingClipboardoperationsbysettingtheClipboardOptionspropertyin

Spread Windows Forms Developer’s Guide 210

Copyright © GrapeCity, inc. All rights reserved.

Page 212: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theFpSpread('FpSpreadClass'intheon-linedocumentation)classandtheClipboardOptionsenumeration.Thedefaultsetting,AllHeaders,allowsallheaderstobeincluded.

ObtainingtheClipboardContents

ValueswhicharecopiedonsheetsarecontrolledbytheClipboardclasswhichisprovidedfromthe.NETFramework.YoucanobtainClipboardcontentsbyusingrespectiveoperationsinthisClipboardclass.

CelldataiscopiedontotheClipboardinadvancebycallingClipboardCopymethodintheSheetView('SheetViewClass'intheon-linedocumentation)classattheLoadevent.Then,callingGetDataObjectmethodenablesyoutoobtainthoseClipboardcontentsforuse,suchasfortextformatdetermination.

DeactivatingPasting

TheClipboardPastingeventoccurswhenpastingisperformed(Ctrl+V)onsheets.Youcandeactivatepastingbycancelingthiseventundercertaincircumstances.Youcanpreventpastingbyobtainingthetimingwhenpastingisperformed,andcancelingtheaction.

ChangingtheScopeofPasting

WhencellsarecopiedorcuttotheClipboard,allthedataaspectsincludingvalues,formats,andformulas,areavailablebydefaultforpasting.Youcanconfiguretopastevaluesonly,forexample,bychangingtheinputmapdefinitions.ThedefaultsettingisClipboardPasteAll,whichenablespastingalltheaspectsofthedata.TheClipboardPasteOptionsenumerationallowsyoutosetthescopeofwhatispastedwhenaClipboardpasteisperformedbytheuser.

PerformingtheClipboardOperationsinCode

VariousmethodsareprovidedintheSheetView('SheetViewClass'intheon-linedocumentation)classforClipboardprocesses.Youcanrunthemwhenyouwant.Theseinclude:

ClipboardCopy('ClipboardCopyMethod'intheon-linedocumentation)ClipboardCopyShape('ClipboardCopyShapeMethod'intheon-linedocumentation)ClipboardCut('ClipboardCutMethod'intheon-linedocumentation)ClipboardCutShape('ClipboardCutShapeMethod'intheon-linedocumentation)ClipboardPaste('ClipboardPasteMethod'intheon-linedocumentation)ClipboardPasteShape('ClipboardPasteShapeMethod'intheon-linedocumentation)

Customizing Undo and Redo Actions

Withtheundo/redofeature,youcanaddcapabilitytoyourapplicationtoundovariousactionsinthespreadsheetperformedbyyourenduser.YoucanusetheUndoAction('UndoActionClass'intheon-linedocumentation)classandseveralspecificclassesthatcorrespondwithvarioususeractions.Thereisalsoamanagerclassthatkeepstrackoftheenduseractionsthatcanbeundoneandre-done.

TheSpreadView('SpreadViewClass'intheon-linedocumentation)classandFpSpread('FpSpreadClass'intheon-linedocumentation)classhaveproperties,AllowUndoandUndoManager,whichturnonandofftheundo/redofeatureandreturntheUndoManagerforthatSpreadViewinstance,respectively.EachSpreadViewhasitsownUndoManager.

ActionAssignment

TheUndoAction('UndoActionClass'intheon-linedocumentation)classisanabstractclassthatinheritsfromActionandaddsnewmethodstotheclass:UndoandSaveUndoState.ItalsoinheritsthePerformActionmethodfromAction.

Spread Windows Forms Developer’s Guide 211

Copyright © GrapeCity, inc. All rights reserved.

Page 213: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SaveUndoStateisusedtosaveundostateinformation(infieldsoftheclass).PerformActionisusedtoperformtheaction.Undoisusedtoreversetheaction(usingtheundostateinformationinthefields).

EachoftheclassesinheritingfromUndoActionisdesignedtodoonespecificaction(forexample,editacell,resizeacolumn,movearange,andsoon),andtoundothataction.Allrelevantinformationtodothatactionshouldbepassedintotheconstructorfortheobject,andallrelevantinformationtoundothatactionshouldbestoredintheSaveUndoStateimplementation.OncetheUndoActionobjectiscreated,thevariablesofthatspecificactionarefixed(specifiedbythevaluespassedtotheconstructor).Forexample,editcellA1insheet1andchangethevalueto"test",resizecolumnBto24pixels,andmovetherangeC4:F6toA1:D:3.Theactioncanonlydothatspecificactioninthatspecificway.

ManagingtheActions

TheUndoManager('UndoManagerClass'intheon-linedocumentation)classmanagestheundoandredostacks.Itkeepstrackofwhichactionshavebeendoneandundone,andinwhatorder.AnUndoActionmustbepassedintothePerformUndoActionmethodofUndoManagertodotheactioninorderforittobeundoablebytheUndoManager.Whenthathappens,theUndoManagerpushestheUndoActionontotheundostackandcallsPerformActionontheUndoAction,andthentheCanUndomethodreturnstrue(indicatingthereissomethingtoundo).WhenCanUndoreturnsfalse,thatmeanstheundostackisempty,andthereisnoactionreadytoundo.YoumightwanttousethistodisabletheUndomenuitemintheEditmenu,forexample,ifyourapplicationhasanEditmenu.

Whenanactionisreadytoundo,youcancallUndoontheUndoManager,anditmovesthelastactionperformedfromtheundostacktotheredostack,andcallsUndoontheaction,andthentheCanRedomethodreturnsTrue(indicatingthereissomethingtoredo).

WhenCanRedoreturnsFalse,thatmeanstheredostackisempty,andthereisnoactionreadytoredo.YoumightwanttousethistodisabletheRedomenuitemintheEditmenu,forexample,ifyourapplicationhasEditmenu.

Whenanactionisreadytoredo,youcancallRedoontheUndoManager,anditmovesthelastactionundonefromtheredostacktotheundostack,andcallsPerformActionontheaction,andtheCanUndomethodreturnstrue.

YoucancallPerformActionontheUndoManagerwithasequenceofUndoActionobjects,anditperformseachactioninsequence,andrememberseachactionandtheorderinwhichtheyaredone.ThenyoucancallUndotoundosomeofthoseactions,andeachcanbere-donewithRedo(andthenun-doneagainwithUndo).

But,whenyoucallPerformActiontoperformanewaction,ifthereareanyactionspendingintheredostack,thoseactionsarecleared,andCanRedoreturnsFalse(thatis,onceyouperformanewaction,youwillnotbeabletoredoanyactionsthatyouhaveundonewithUndo).ThatiswhythePushUndomethodintheUndoManagerclasshasaflagtoindicatewhethertheredostackshouldbeclearedwhentheactionispushedontotheundostack.

SomeoftheUndoActionclasseswillbereplacingActionobjectsintheactionmaps,sothatthoseactionsareroutedthroughtheUndoManagerandbecomeundoable.OtherUndoActionclasseswillnotbepartoftheactionmaps,butinsteadareusedintheSheetVieworSpreadViewcodetomaketheactionundoable.

OtherAPIUpdates

TheinputmapsincludenewitemstomaptheCtrl+ZandCtrl+YkeystothenewUndoActionandRedoActionactionobjects,respectively.TheseactionsmakecallsintotheUndoManagertotheUndoandRedomethods,respectively.

Locating the Pointer Using HitTest

YoucanlocatethepointeratanytimeincodeusingtheHitTestmethodoftheSpreadcomponent.Whetheryouaremeetingaccessibilitystandardsanddisplayinginformationfortheuserbasedonpointerlocation,orwanttoprovideadditionalsupportbasedonpointerlocation,youcanusethiscapabilitytocustomizethedisplayanduserinteraction.

Thelistofmemberscorrespondingtothiscapabilityarelistedhere:

Component ClassName

Spread Windows Forms Developer’s Guide 212

Copyright © GrapeCity, inc. All rights reserved.

Page 214: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

AreaSpreadcomponent FpSpread.HitTest('HitTestMethod'intheon-linedocumentation)method

Spreadcomponent HitTestType('HitTestTypeEnumeration'intheon-linedocumentation)enumeration

Spreadcomponent HitTestInformation('HitTestInformationClass'intheon-linedocumentation)class

Roworcolumnheader

HeaderHitTestInformation('HeaderHitTestInformationClass'intheon-linedocumentation)class

Outline(rangegroup)area

RangeGroupHitTestInformation('RangeGroupHitTestInformationClass'intheon-linedocumentation)class

Tabstrip TabStripHitTestInformation('TabStripHitTestInformationClass'intheon-linedocumentation)class

Viewport ViewportHitTestInformation('ViewportHitTestInformationClass'intheon-linedocumentation)class

Customizing Interaction Based on Events

YoucancustomizehowtheSpreadcomponentrespondstouser-initiatedevents.IntheFpSpread('FpSpreadClass'intheon-linedocumentation)classthereareseveralevents,fromButtonClicked('ButtonClickedEvent'intheon-linedocumentation)toLeaveCell('LeaveCellEvent'intheon-linedocumentation)toSelectionChanged('SelectionChangedEvent'intheon-linedocumentation).Useeventsthatcorrespondtouseractionstoinitiateresponses.Foralistofeventsinthecomponent,refertotheFpSpread('FpSpreadClass'intheon-linedocumentation)classmembers.Foreventsavailableforthesheet,refertotheSheetView('SheetViewClass'intheon-linedocumentation)classmembers.Foralistofeventsthatcanbeusedwhileineditmode,refertotheFarPoint.Win.SuperEditBase('FarPoint.Win.SuperEditNamespace'intheon-linedocumentation)class.

TheFpSpreadclassisderivedfromtheControlclassthathasthefollowingpropertiesandeventsthatarerelevanttoourunderstandingofeventsinSpread:

TextpropertyandTextChangedeventClickeventEnterevent

TheTextpropertyandTextChangedeventareusedbysimplecontrolsthathaveasingleTextattribute(forexample,theTextBoxcontrol).TheSpreadcomponentisamorecomplexcontrolthatconsistsofrowsandcolumnsofcells.EachcellhasitsownTextproperty.TheTextpropertyofthecellisseparatefromtheTextpropertyoftheSpreadcomponent.SincetheSpreadcomponentdoesnotusethecomponent’sTextproperty,theTextChangeeventisneverraised.

TheClickeventisusedbysimplecontrolsthathaveasinglearea(forexample,theButtoncontrol).TheSpreadcomponentisamorecomplexcontrolthatconsistsofrowsandcolumnsofcells.TheSpreadcomponentraisesaCellClickeventinsteadofaClickevent.TheCellClick('CellClickEvent'intheon-linedocumentation)eventcontainsmoredetailedinformationthantheClickevent.

TheEntereventisraisedwhenkeyboardfocusismovedfromanothercontrolontheformtotheSpreadcomponent.

Handling Events of Subeditors

YoucanhandleeventsofsubeditorswithinacellintheSpreadcomponent.

ThesubeditorhasaSubEditorClosed('SubEditorClosedEvent'intheon-linedocumentation)eventandaSubEditorOpening('SubEditorOpeningEvent'intheon-linedocumentation)event.Thisallowsyoutoknow

Spread Windows Forms Developer’s Guide 213

Copyright © GrapeCity, inc. All rights reserved.

Page 215: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

whenthesubeditoropensandcloses.

Thecelltypebringsupaneditorwheneditingthecell.Theeditorcontrolcanbetextbasedorgraphicsbased.Theeditorcontrolcandrop-downlists,bringuppop-updialogs,andsoon.Thedrop-downlistorpop-updialogisknownasthesubeditor.TheISubEditor('ISubEditorInterface'intheon-linedocumentation)interfacecanbeusedtocreateacustomsubeditor.TheIEditor('IEditorInterface'intheon-linedocumentation)interfacecanbeusedtocreateacustomeditor.

Existingeditorscanbeusedincells.Thefollowingcodeusesthedefaultdatetimecellformattingoncell(1,1):

C#fpSpread1.Sheets[0].Cells[1, 1].Editor = new FarPoint.Win.Spread.CellType.DateTimeCellType();

VisualBasicFpSpread1.Sheets(0).Cells(1,1).Editor = New FarPoint.Win.Spread.CellType.DateTimeCellType

Customizing the User Error Messages

Youcansettheerrormessagesthatthecomponentdisplayswhentheuserperformsinvalidactions.Todeterminethedisplayoferrormessages,usetheEditError('EditErrorEvent'intheon-linedocumentation)eventandtheEditError('EditErrorEnumeration'intheon-linedocumentation)enumeration.

Customizing Interaction with a Sheet

Youcancustomizeaspectsoftheviewofanindividualsheetthatprovidewaysfortheusertointeractwiththesheet.Tocustomizethisaspectofuserinteraction,youcanperformanyofthefollowingtasks:

CustomizingViewportsCustomizingSplitBoxesCustomizingthePositionintheDisplayPlacingChildControlsonaSheetCreatingTables

Youcanalsoallowaspectsoftheuserinteractionthataredescribedelsewhereinthedocumentation,includingthefollowingfeaturesthatworkwithanentiresheet:

CustomizingtheSheetNameTabsoftheComponentRearrangingDataonaSheetCustomizingUserSearchingofDataWorkingwithHierarchicalDataDisplayCustomizingDrawingLockingaCellCustomizingInteractioninCellsCustomizingtheIndividualSheetAppearance

Customizing Viewports

Youcandivideupthedisplayintoseparatelyscrollableviewports.Youcansetupthefollowingconfigurations:

Asetofhorizontalviewports(calledaviewportrowsinceitisarowofviewports)

Spread Windows Forms Developer’s Guide 214

Copyright © GrapeCity, inc. All rights reserved.

Page 216: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Asetofverticalviewports(calledaviewportcolumnsinceitisacolumnofviewports)Asetofboth(asshowninthefollowingfigure)

Theviewportsallowyoutodisplaydifferentpartsofaverylargespreadsheetinaverylimitedviewingarea.Youcanadd,remove,andcustomizeviewportsprogrammatically,andyoucanallowyourendusertocreateanduseviewports.

Foranendusertocreateaviewport,theendusercanclickonthesplitboxanddragittothedesiredlocation.Toallowtheendusertodividethedisplay,setthepolicyfordisplayingthesplitboxes.Theendusercancreatemultipleviewportsineitherorientation.Youcanallowsplitbarsinonlyoneorientationbysettingthepolicytodisplayonlythesplitboxinthatorientation.Formoreinformationonsplitboxes,refertoCustomizingSplitBoxes.Thefigurebelowshowshowtocreateaviewport.

Thesplitbarsshowtheborderofeachviewport.Eachviewportroworviewportcolumnhasitsownscrollbars.

Spread Windows Forms Developer’s Guide 215

Copyright © GrapeCity, inc. All rights reserved.

Page 217: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thescrollbarmustbevisibleforthesplitboxestobeaccessible.Formoreinformationaboutscrollbars,refertoCustomizingtheScrollBarsoftheComponent.

Toremoveasplitbar,theendusercaneitherdouble-clickonthesplitbarorclickanddragitallthewaytotheedgeofthesheet.

Thereareseveralpropertiesandmethodsthatrelatetotheuseofviewports;manyoftheseprovidecustomizationsprogrammaticallyassummarizedinthistable.

Customization MethodorPropertyinFpSpread(orSpreadView)class

Addandremoveviewports AddViewport('AddViewportMethod'intheon-linedocumentation)

RemoveViewport('RemoveViewportMethod'intheon-linedocumentation)

Settheheightandwidthofviewports SetViewportPreferredHeight('SetViewportPreferredHeightMethod'intheon-linedocumentation)

SetViewportPreferredWidth('SetViewportPreferredWidthMethod'intheon-linedocumentation)

GetViewportPreferredHeight('GetViewportPreferredHeightMethod'intheon-linedocumentation)

GetViewportPreferredWidth('GetViewportPreferredWidthMethod'intheon-linedocumentation)

Determinetheviewportforagivenlocationinthedisplay

GetViewPortX('GetViewportXMethod'intheon-linedocumentation)

GetViewPortY('GetViewportYMethod'intheon-linedocumentation)

GetViewPortHeight('GetViewportHeightMethod'intheon-linedocumentation)

GetViewPortWidth('GetViewportWidthMethod'intheon-linedocumentation)

Determinetheroworcolumnofcellsinaparticularviewportroworviewportcolumn

GetViewportBottomRow('GetViewportBottomRowMethod'intheon-linedocumentation)

GetViewportLeftColumn('GetViewportLeftColumnMethod'intheon-linedocumentation)

GetViewportRectangle('GetViewportRectangleMethod'intheon-linedocumentation)

GetViewportTopRow('GetViewportTopRowMethod'intheon-linedocumentation)

SetViewportLeftColumn('SetViewportLeftColumnMethod'intheon-linedocumentation)

SetViewportTopRow('SetViewportTopRowMethod'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 216

Copyright © GrapeCity, inc. All rights reserved.

Page 218: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Determinewhichistheactiveviewport GetActiveColumnViewportIndex('GetActiveColumnViewportIndexMethod'intheon-linedocumentation)

GetActiveRowViewportIndex('GetActiveRowViewportIndexMethod'intheon-linedocumentation)

SetActiveViewport('SetActiveViewportMethod'intheon-linedocumentation)

Determinetheindexofaparticularviewportroworviewportcolumn

GetColumnViewportIndexFromX('GetColumnViewportIndexFromXMethod'intheon-linedocumentation)

GetRowViewportIndexFromY('GetRowViewportIndexFromYMethod'intheon-linedocumentation)

Determinethenumberofviewportsineitherorientation

GetColumnViewportCount('GetColumnViewportCountMethod'intheon-linedocumentation)

GetRowViewportCount('GetRowViewportCountMethod'intheon-linedocumentation)

Positiontheviewportinthedisplay ShowColumn('ShowColumnMethod'intheon-linedocumentation)

ShowRow('ShowRowMethod'intheon-linedocumentation)

Thepreferredheightandpreferredwidtharesuggestedsizes.TheSpreadcomponentattemptstolayouttheviewportsascloseaspossibletothesuggestedsizes.However,ifthesumofthesuggestedsizesislarger(orsmaller)thanthesizeofthecomponentthentheactualsizesofoneormoreoftheviewportsmustbelarger(orsmaller)thanthesuggestedsize.

Thepreferredheightandpreferredwidthcansetto-1orapositivenumber.A-1indicatesavariablesize.Apositivenumberindicatesafixedsizeinpixels.Whenthecomponentlaysouttheviewports,availablespaceisfirstallocatedforthefixed-sizeviewports.Anyremainingspaceisevenlydividedamongthevariable-sizedviewports.

TheColumnViewportWidthChanged('ColumnViewportWidthChangedEvent'intheon-linedocumentation)andtheRowViewportHeightChanged('RowViewportHeightChangedEvent'intheon-linedocumentation)eventsareraisedanytimethesplitboxesaremovedbytheenduser.Theseeventsarenotraisedwhenyouaddaviewportprogrammatically;theyareraisedonlywhentheuserchangesthewidthorheightofaviewport.

Forfrozenrowsandcolumns,thefrozenroworcolumnisaseparateviewport.Theleadingfrozenroworcolumnisaseparateviewportwhilethetrailingfrozenroworcolumnisalsoaseparateviewport.Indexesforthefrozenviewportsare:

Index FrozenViewport-1 Leadingfrozen

0 Firstscrollable

1 Secondscrollable

n-1 Lastscrollable

n Trailingfrozen

Formoreinformationaboutfrozenrowsandcolumns,refertoSettingFixed(Frozen)RowsorColumns.

Spread Windows Forms Developer’s Guide 217

Copyright © GrapeCity, inc. All rights reserved.

Page 219: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

Tocreateorcustomizeaviewportincode,usethefollowingaddandsetmethodsintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Refertotheprecedingtablefordescriptionsofthese.RefertotheAssemblyReference(on-linedocumentation)formoredetailsoneach.

AddViewport('AddViewportMethod'intheon-linedocumentation)RemoveViewport('RemoveViewportMethod'intheon-linedocumentation)GetViewportPreferredWidth('GetViewportPreferredWidthMethod'intheon-linedocumentation)andSetViewportPreferredWidth('SetViewportPreferredWidthMethod'intheon-linedocumentation)GetViewportPreferredHeight('GetViewportPreferredHeightMethod'intheon-linedocumentation)andSetViewportPreferredHeight('SetViewportPreferredHeightMethod'intheon-linedocumentation)SetActiveViewport('SetActiveViewportMethod'intheon-linedocumentation)

Formoreinformation,refertomethodsintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Example

Thisexampleaddsaviewportandsetsitsvariousproperties.

C#fpSpread1.AddViewport(1, 2);fpSpread1.SetViewportLeftColumn(1, 3);fpSpread1.SetViewportTopRow(0, 6);fpSpread1.SetViewportPreferredHeight(0, 100);fpSpread1.SetViewportPreferredWidth(0, 100);

VBFpSpread1.AddViewport(1, 2)FpSpread1.SetViewportLeftColumn(1, 3)FpSpread1.SetViewportTopRow(0, 6)FpSpread1.SetViewportPreferredHeight(0, 100)FpSpread1.SetViewportPreferredWidth(0, 100)

UsingtheSpreadDesigner

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthemainwindow,selectthesplitboxesfromtheedgeofthescrollbarsanddragthemeachtothepositionto

createtheviewportsasneeded.3. FromtheSettingsmenu,choosePreferencesandselectSaveSplitBarsonApplytoallowSpreadDesigner

tosavetheseviewportswhenyouapplythechanges.Somedeveloperscreatesplitbarsforviewingcertainaspectsoftheirspreadsheet,butdonotwantthemsaved.

4. FromtheFilemenu,chooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing Split Boxes

Youcandeterminethedisplayandplacementofthesplitboxes.Bydefault,thesplitboxesareshownandappearattheleadingedgeofeachofthescrollbars,asshowninthefigurebelow.YoucanchangethesebysettingapropertyorbyusingSpreadDesigner.

Spread Windows Forms Developer’s Guide 218

Copyright © GrapeCity, inc. All rights reserved.

Page 220: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Whentheenduserclicksanddragsthesplitbox,theviewissplitintoseparateviewports.Formoreinformationonviewports,refertoCustomizingViewports.

Customization PropertyandEnumerationPlacementofsplitboxrelativetothescrollbar

ColumnSplitBoxAlignment('ColumnSplitBoxAlignmentProperty'intheon-linedocumentation)propertyinFpSpread('FpSpreadClass'intheon-linedocumentation)class

RowSplitBoxAlignment('RowSplitBoxAlignmentProperty'intheon-linedocumentation)propertyinFpSpread('FpSpreadClass'intheon-linedocumentation)class

SplitBoxAlignment('SplitBoxAlignmentEnumeration'intheon-linedocumentation)enumeration

Whetherorwhentodisplaythesplitbox

ColumnSplitBoxPolicy('ColumnSplitBoxPolicyProperty'intheon-linedocumentation)propertyinFpSpread('FpSpreadClass'intheon-linedocumentation)class

RowSplitBoxPolicy('RowSplitBoxPolicyProperty'intheon-linedocumentation)propertyinFpSpread('FpSpreadClass'intheon-linedocumentation)class

SplitBoxPolicy('SplitBoxPolicyEnumeration'intheon-linedocumentation)enumeration

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.

Spread Windows Forms Developer’s Guide 219

Copyright © GrapeCity, inc. All rights reserved.

Page 221: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Select(intheSplitterscategory)theColumnSplitBoxAlignment,RowSplitBoxAlignment,ColumnSplitBoxPolicy,orRowSplitBoxPolicyproperty.

3. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue.Repeatthisforeachproperty.

UsingCode

SettheColumnSplitBoxAlignment('ColumnSplitBoxAlignmentProperty'intheon-linedocumentation),RowSplitBoxAlignment('RowSplitBoxAlignmentProperty'intheon-linedocumentation),ColumnSplitBoxPolicy('ColumnSplitBoxPolicyProperty'intheon-linedocumentation),andRowSplitBoxPolicy('RowSplitBoxPolicyProperty'intheon-linedocumentation)propertiesfortheroworcolumnofviewportsfortheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Example

Inthisexample,thesplitboxforthecolumnsisattheleadingedgeofthescrollbarandisdisplayedasneeded;fortherows,thesplitboxisatthetrailingedgeofthescrollbarandisalwaysdisplayed.

C#fpSpread1.ColumnSplitBoxAlignment = FarPoint.Win.Spread.SplitBoxAlignment.Leading;fpSpread1.RowSplitBoxAlignment = FarPoint.Win.Spread.SplitBoxAlignment.Trailing;fpSpread1.ColumnSplitBoxPolicy = FarPoint.Win.Spread.SplitBoxPolicy.AsNeeded;fpSpread1.RowSplitBoxPolicy = FarPoint.Win.Spread.SplitBoxPolicy.Always;

VBFpSpread1.ColumnSplitBoxAlignment = FarPoint.Win.Spread.SplitBoxAlignment.LeadingFpSpread1.RowSplitBoxAlignment = FarPoint.Win.Spread.SplitBoxAlignment.TrailingFpSpread1.ColumnSplitBoxPolicy = FarPoint.Win.Spread.SplitBoxPolicy.AsNeededFpSpread1.RowSplitBoxPolicy = FarPoint.Win.Spread.SplitBoxPolicy.Always

UsingtheSpreadDesigner

1. FromtheSettingsmenu,selectSplitBox.2. IntheSplitBoxtab,setthevaluesfortheColumnSplitBoxAlignment,RowSplitBoxAlignment,ColumnSplitBoxPolicy,orRowSplitBoxPolicyproperty.

3. ClickOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

or

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent(intheSplitterscategory),selecttheColumnSplitBoxAlignment,RowSplitBoxAlignment,ColumnSplitBoxPolicy,orRowSplitBoxPolicyproperty.

3. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue.Repeatthisforeachproperty.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Position in the Display

Youcancustomizethepositionofthedataareaofthespreadsheetinthedisplaybychoosingarow,column,orcell,andmovingittoaparticularpositioninthedisplayedportionofthespreadsheetintheSpreadcomponent.

UsetheShowRow('ShowRowMethod'intheon-linedocumentation),ShowColumn('ShowColumnMethod'intheon-linedocumentation),ShowCell('ShowCellMethod'intheon-linedocumentation),orShowActiveCell('ShowActiveCellMethod'intheon-linedocumentation)methodsintheFpSpread

Spread Windows Forms Developer’s Guide 220

Copyright © GrapeCity, inc. All rights reserved.

Page 222: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('FpSpreadClass'intheon-linedocumentation)class,andtheHorizontalPosition('HorizontalPositionEnumeration'intheon-linedocumentation)andVerticalPosition('VerticalPositionEnumeration'intheon-linedocumentation)enumerations.Thesemethodsscrollthedisplayuntilthespecifieditemisdisplayedinthespecifiedlocation.

UsingCode

SettheShowActiveCell('ShowActiveCellMethod'intheon-linedocumentation)method.

Example

Thisexamplesetstheactivecellandthendisplaysthecellinthetop,centerofthespreadsheet.

C#fpSpread1.Sheets[0].SetActiveCell(3,4);fpSpread1.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Top, FarPoint.Win.Spread.HorizontalPosition.Center);

VBFpSpread1.Sheets(0).SetActiveCell(3,4)FpSpread1.ShowActiveCell(FarPoint.Win.Spread.VerticalPosition.Top, FarPoint.Win.Spread.HorizontalPosition.Center)

Placing Child Controls on a Sheet

Youcanplacecontrolsonasheet(notjusttheFpSpreadcomponentbutaspecificsheet)toprovidemoreinteractionwiththeuser.UsetheAddControl('AddControlMethod'intheon-linedocumentation)methodfortheSpreadcomponentorthesheet.AnythingthatcanbederivedfromtheControlclassinthe.NETframeworkcanbehostedonasheetinSpread.YoumustimplementtheIEmbeddedControlinterfaceandsetthefollowing:

ActivationPolicy('ActivationPolicyProperty'intheon-linedocumentation)-determineshowtheusercanactivatetheobjectCanMove('CanMoveProperty'intheon-linedocumentation)-determineswhethertheusercanmovetheobjectonceplacedCanSize('CanSizeProperty'intheon-linedocumentation)-determineswhethertheusercansizetheobjectonceplacedControlPaint('ControlPaintMethod'intheon-linedocumentation)-determineshowtheobjectisrepresentedwhennotactive;similartothepaintmethodforacell

Thechildcontrolisplacedonasheet,accordingtotheactivecell,butisnotanchoredtothatcell.Onceplaced,thecontrolhasanabsolutepositionthatdoesnotchangewhenthesheetischangedorthecelliseithermovedorremoved.Thechildcontrolisplacedonaseparatelayer,thecontrolslayer,whichisseparatefromthedataarea(onwhichcellswithdataappear)andisseparatefromthedrawinglayer(onwhichshapesandothergraphicalelementsappear).

Spread Windows Forms Developer’s Guide 221

Copyright © GrapeCity, inc. All rights reserved.

Page 223: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

WiththeAllowChildControlDesign('AllowChildControlDesignProperty'intheon-linedocumentation)property(inFpSpread),youcandeterminewhethertheusercaninteractwiththechildcontrolindesignmode.Whendesignisallowed,thecontrolcangetfocusanddisplaysgrabhandlestoallowmovingandsizing,anddisplaysahighlightbordertoindicateitisinfocus.Whenthedesignisnotallowed,thecontrolsimplyisalivecontrolthatrespondstotheuserclickingonit(orwhateverpolicyissetwiththeActivationpropertyofIEmbeddedControlSupport('IEmbeddedControlSupportInterface'intheon-linedocumentation).

Thechildcontrolisoneofanynumberofcontrolsthatcanbeplacedonthesheet.Forthesheetthereisachildcontrolcontainer(similartotheshapecontainerforalltheshapesonthesheet).Youcanenumeratethrougheachcontrolandoverrideanypropertyoftheinterfaceofthatcontrol.Youcanseteventsandworkwitheventhandlers.

Thechildcontrolslayerisavailableonlyatruntime.ThisfeatureisnotavailableinthestandaloneversionoftheSpreadDesigner.

SomecustomizationoftheunderlyingSystem.Controlclassmaybeneededtomaketheembeddedchildcontrolstoappearproperlyinyourapplication.

Formoreinformationontheinterfaceandpolicyenumerationofthechildcontrollayer,refertothese:

IEmbeddedControlSupport('IEmbeddedControlSupportInterface'intheon-linedocumentation)ChildActivationPolicy('ChildActivationPolicyEnumeration'intheon-linedocumentation)

Formoreinformationonthemethodsandpropertiesofthechildcontrollayeronthesheet,refertothese:

SheetView.AddControl('AddControlMethod'intheon-linedocumentation)SheetView.ClearControls('ClearControlsMethod'intheon-linedocumentation)SheetView.GetControl('GetControlMethod'intheon-linedocumentation)SheetView.GetControlContainer('GetControlContainerMethod'intheon-linedocumentation)SheetView.RemoveControl('RemoveControlMethod'intheon-linedocumentation)

FormoreinformationonthemethodsandpropertiesofthechildcontrollayerfortheSpreadcomponent,refertothese:

FpSpread.ChildControlActivated('ChildControlActivatedEvent'intheon-linedocumentation)FpSpread.ChildControlDeactivated('ChildControlDeactivatedEvent'intheon-linedocumentation)FpSpread.AddControl('AddControlMethod'intheon-linedocumentation)FpSpread.AllowChildControlDesign('AllowChildControlDesignProperty'intheon-linedocumentation)FpSpread.RemoveControl('RemoveControlMethod'intheon-linedocumentation)

Creating Tables

Spread Windows Forms Developer’s Guide 222

Copyright © GrapeCity, inc. All rights reserved.

Page 224: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcancreateatablefromarangeofcellstomakemanagingandanalyzingagroupofrelateddataeasier.Atabletypicallycontainsrelateddatainrowsandcolumns.Youcanmanagethedatainthetablerowsandcolumnsindependentlyfromthedatainotherrowsandcolumnsonthesheet.

Atablecancontainaheaderrow,bandedrows,calculatedcolumns,atotalrow,andasizinghandle.Theheaderrowcontainsiconsthatallowyoutofilterorsortthetabledataquickly.Bandedrowsarealternaterowsthathaveshadingappliedsothatthedataiseasiertoview.Youcancreateacalculatedcolumnbyenteringaformulainonecellinatablecolumn.Thiscreatesacalculatedcolumninwhichthatformulaisinstantlyappliedtoallothercellsinthattablecolumn.Youcanaddatotalrowtoyourtablethatprovidesaccesstosummaryfunctions(suchastheAVERAGE,COUNT,orSUMfunction).Adrop-downlistappearsineachtotalrowcellsothatyoucanquicklycalculatethetotalsthatyouwant.Asizinghandleinthelower-rightcornerofthetableallowsyoutochangethetablesize.

Thefollowingimageillustratesthemaintableelements.

Youcanalsomovetablesandcreatestructuredreferencesintables.

Formoreinformation,seethefollowingtopics:

AddingaTable

UsingTableFilters

ResizingaTable

SortingaTable

SettingTableStyles

AddingaTableFormula

UnderstandingStructuredReferences

Adding a Table

Youcanaddatabletoasheetusingcodeorthedesigner.YoucantypedatainthetablecellsoraddtexttothecellswiththeText('TextProperty'intheon-linedocumentation)orValue('ValueProperty'intheon-linedocumentation)property.

Spread Windows Forms Developer’s Guide 223

Copyright © GrapeCity, inc. All rights reserved.

Page 225: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

UsetheAddTable('AddTableMethod'intheon-linedocumentation)methodtoaddatabletoasheet.

Example

Thisexamplecodeaddsatableusingcelldata.

C#fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;fpSpread1.Sheets[0].AddTable("table", 1, 1, 5, 2);

VBFpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78FpSpread1.Sheets(0).AddTable("table", 1, 1, 5, 2)

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellrangewhereyouwanttoaddthetable.2. FromtheInsertmenu,selectTable.3. ProvidethecellrangeforthetableandselectOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Using Table Filters

Youcanuseenhancedfilteringwithtables.

Thedefaultfilterthatisdisplayeddependsonthedatainthecolumn.Thefiltercanbeanumber,text,date,orcolorfilter.Thefollowingimagedisplaysthemenusforsettingupatextfilter.

Spread Windows Forms Developer’s Guide 224

Copyright © GrapeCity, inc. All rights reserved.

Page 226: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanalsotypeinthesearchboxinthefilterdialogtochangethelistoffilteroptions.Thefollowingimagedisplaysthesearchboxandthefilterchoicesaftertypingcharactersinthesearchbox.

Thefiltersaredescribedinthefollowingtable.

TypeofFilters DescriptionNumberFilters

Equals Valuesinrowsareequaltocondition

Spread Windows Forms Developer’s Guide 225

Copyright © GrapeCity, inc. All rights reserved.

Page 227: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DoesNotEqual Valuesinrowsdonotequalcondition

GreaterThan Valuesinrowsaregreaterthancondition

GreaterThanOrEqualTo Valuesinrowsaregreaterthanorequaltocondition

LessThan Valuesinrowsarelessthancondition

LessThanOrEqualTo Valuesinrowsarelessthanorequaltocondition

Between Valuesinrowsaregreaterthanoneconditionandlessthananothercondition

Top10 Valuesintherowswiththetenhighestvalues

AboveAverage Valuesintherowsthatareabovetheaverageofthevaluesinalltherows

BelowAverage Valuesintherowsthatarebelowtheaverageofthevaluesinalltherows

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

TextFilters

Equals Valuesinrowsequalthecondition

DoesNotEqual Valuesinrowsdonotequalthecondition

BeginsWith Valuesinrowsbeginwiththespecifiedcharacters

EndsWith Valuesinrowsendwiththespecifiedcharacters

Contains Valuesinrowscontainthespecifiedcharacters

DoesNotContain Valuesinrowsdonotcontainthespecifiedcharacters

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

DateFilters

Equals Valuesinrowsequalthecondition

Before Valuesinrowsaredatesbeforethecondition

After Valuesinrowsaredatesafterthecondition

Between Valuesinrowsaredatesbetweentwospecifieddatesforthecondition

Tomorrow Valuesinrowsaretomorrow'sdate

Today Valuesinrowsaretoday'sdate

Yesterday Valuesinrowsareyesterday'sdate

NextWeek Valuesinrowsareduringnextweek

ThisWeek Valuesinrowsareduringcurrentweek

LastWeek Valuesinrowsareduringlastweek

NextMonth Valuesinrowsareduringnextmonth

ThisMonth Valuesinrowsareduringcurrentmonth

LastMonth Valuesinrowsareduringlastmonth

NextQuarter Valuesinrowsareduringnextquarter

ThisQuarter Valuesinrowsareduringcurrentquarter

LastQuarter Valuesinrowsareduringlastquarter

NextYear Valuesinrowsareduringnextyear

ThisYear Valuesinrowsareduringcurrentyear

Spread Windows Forms Developer’s Guide 226

Copyright © GrapeCity, inc. All rights reserved.

Page 228: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

LastYear Valuesinrowsareduringlastyear

YeartoDate Valuesinrowsareduringcurrentyeartopresentdate

AllDatesinthePeriod Valuesinrowsarewithinaspecifiedperiod

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

Userscanspecifywildcardsinconditions.The"?"characterrepresentsanysinglecharacter.The"*"characterrepresentsanyseriesofcharacters.

Whentheuserchoosesafilter,thetablefiltersthedatatodisplayonlytherowsthatmatchthefiltercriteria.

YoucanusetheFilter('FilterMethod'intheon-linedocumentation)methodtofilteratableusingcode.YoucanresetafilterbysettingnullintheFilter('FilterMethod'intheon-linedocumentation)method(forexample,table.Filter(3, null);resetsthefilterinthethirdcolumn).

Resizing a Table

Youcanresizethetablewiththeresizeindicatorinthebottom,rightcornerofthetableoryoucanusecodetodoso.

Selecttheindicatoranddragtotherighttoaddcolumnsordowntoaddrows.

UsingCode

UsetheResize('ResizeMethod'intheon-linedocumentation)methodtoaddcolumnsorrowstoatable.

Example

Thisexamplecodeaddsrowsandcolumnstothetable.

C#FarPoint.Win.Spread.TableStyle tstyle = fpSpread1.CreateTableStyle("Style1", FarPoint.Win.Spread.TableStyle.TableStyleLight2);fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;fpSpread1.TableStyleCollection.Add(tstyle);FarPoint.Win.Spread.TableView table = fpSpread1.Sheets[0].AddTable("table", 1, 1, 5, 2,

Spread Windows Forms Developer’s Guide 227

Copyright © GrapeCity, inc. All rights reserved.

Page 229: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

"Style1");table.Resize(6, 3);

VBDim tstyle As FarPoint.Win.Spread.TableStyletstyle = FpSpread1.CreateTableStyle("Style1", FarPoint.Win.Spread.TableStyle.TableStyleLight2)FpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78FpSpread1.TableStyleCollection.Add(tstyle)Dim table As FarPoint.Win.Spread.TableView = FpSpread1.Sheets(0).AddTable("table", 1, 1, 5, 2, "Style1")table.Resize(6, 3)

Sorting a Table

Youcansortatablebyselectingthedrop-downiconandselectingasortoption,asshowninthefollowingfigure,orbyusingcode.

UsingCode

Spread Windows Forms Developer’s Guide 228

Copyright © GrapeCity, inc. All rights reserved.

Page 230: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsetheSort('SortMethod'intheon-linedocumentation)methodtosortcolumnsinatable.

Example

Thisexamplecodesortsthecolumn.

C#FarPoint.Win.Spread.TableStyle tstyle = fpSpread1.CreateTableStyle("Style1", FarPoint.Win.Spread.TableStyle.TableStyleLight2);fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;fpSpread1.TableStyleCollection.Add(tstyle);FarPoint.Win.Spread.TableView table = fpSpread1.Sheets[0].AddTable("table", 1, 1, 5, 2, "Style1");FarPoint.Win.Spread.ComplexSortInfo[] sort = new FarPoint.Win.Spread.ComplexSortInfo[1];sort[0] = new FarPoint.Win.Spread.ComplexSortInfo(1, true);table.Sort(sort);

VBDim tstyle As FarPoint.Win.Spread.TableStyletstyle = FpSpread1.CreateTableStyle("Style1", FarPoint.Win.Spread.TableStyle.TableStyleLight2)FpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78FpSpread1.TableStyleCollection.Add(tstyle)Dim table As FarPoint.Win.Spread.TableView = FpSpread1.Sheets(0).AddTable("table", 1, 1, 5, 2, "Style1")Dim sort As FarPoint.Win.Spread.ComplexSortInfo() = New FarPoint.Win.Spread.ComplexSortInfo(0) {}sort(0) = New FarPoint.Win.Spread.ComplexSortInfo(1, True)table.Sort(sort)

Setting Table Styles

Youcanaddcustomorbuilt-instylestoatable.

Spread Windows Forms Developer’s Guide 229

Copyright © GrapeCity, inc. All rights reserved.

Page 231: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanspecifycustomstylesforthefirst,second,orlastcolumnaswellasotherareasofthetable.Foracompletelist,seetheTableStyle('TableStyleClass'intheon-linedocumentation)properties.Youcanspecifyabuilt-instylewiththeTableStylefields.

Tablestyleshaveapriorityorderwhenthestylesoverlap.Thepriorityfromhighesttolowestiscell,row,column,andtable.

Somestylepropertiesapplytoareasthatarenotvisibleordonothaveastylesettingbydefault.Forexample,theFirstRowStripestyleisnotdisplayedunlesstheBandedRows('BandedRowsProperty'intheon-linedocumentation)propertyistrue.ThefollowingtableliststheTableViewsettingthatmustbetruebeforetheassociatedtablestyleisdisplayedinthetable.

TableViewproperty

TableStyleproperty

BandedColumns('BandedColumnsProperty'intheon-linedocumentation)

FirstColumnStripe('FirstColumnStripeProperty'intheon-linedocumentation),FirstColumnStripSize('FirstColumnStripSizeProperty'intheon-linedocumentation),SecondColumnStripe('SecondColumnStripeProperty'intheon-linedocumentation),SecondColumnStripSize('SecondColumnStripSizeProperty'intheon-linedocumentation)

BandedRows('BandedRowsProperty'intheon-linedocumentation)

FirstRowStripe('FirstRowStripeProperty'intheon-linedocumentation),FirstRowStripSize('FirstRowStripSizeProperty'intheon-linedocumentation),SecondRowStripe('SecondRowStripeProperty'intheon-linedocumentation),SecondRowStripSize('SecondRowStripSizeProperty'intheon-linedocumentation)

FirstColumn('FirstColumnProperty'intheon-linedocumentation)

FirstColumn('FirstColumnProperty'intheon-linedocumentation)

HeaderRowVisible('HeaderRowVisibleProperty'intheon-linedocumentation)

HeaderRow('HeaderRowProperty'intheon-linedocumentation)

LastColumn('LastColumnProperty'intheon-linedocumentation)

LastColumn('LastColumnProperty'intheon-linedocumentation)

UsingCode

1. CreateastyleusingTableBorder('TableBorderClass'intheon-linedocumentation)and

Spread Windows Forms Developer’s Guide 230

Copyright © GrapeCity, inc. All rights reserved.

Page 232: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TableElementStyle('TableElementStyleClass'intheon-linedocumentation).

2. UsetheTableStyle('TableStyleConstructor'intheon-linedocumentation)constructorandtheCreateTableStyle('CreateTableStyleMethod'intheon-linedocumentation)methodtoassignthestyle.

3. SettheTableStyleFirstColumn('FirstColumnProperty'intheon-linedocumentation)propertytoassignthestyletothecolumnorsetanyoftheTableStyleproperties.

4. SettheTableViewFirstColumn('FirstColumnProperty'intheon-linedocumentation)propertytoTruetodisplaythecolumnstyleorsettheappropriateTableViewproperty.

Example

Thisexamplecodeaddsacustomstyletothefirstcolumn.

C#FarPoint.Win.ComplexBorderSide bside = newFarPoint.Win.ComplexBorderSide(Color.Yellow);FarPoint.Win.Spread.TableBorder tborder = new FarPoint.Win.Spread.TableBorder(bside);FarPoint.Win.Spread.TableElementStyle testyle = newFarPoint.Win.Spread.TableElementStyle(tborder, Color.Red, Color.Blue,FarPoint.Win.Spread.RegularBoldItalicFontStyle.Bold);FarPoint.Win.Spread.TableStyle tstyle = fpSpread1.CreateTableStyle("Style1",FarPoint.Win.Spread.TableStyle.TableStyleLight2);tstyle.FirstColumn = testyle;fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;fpSpread1.TableStyleCollection.Add(tstyle);FarPoint.Win.Spread.TableView table = fpSpread1.Sheets[0].AddTable("table", 1, 1, 5, 2,"Style1");table.FirstColumn = true;

VBDim bside As New FarPoint.Win.ComplexBorderSide(Color.Yellow)Dim tborder As New FarPoint.Win.Spread.TableBorder(bside)Dim testyle As New FarPoint.Win.Spread.TableElementStyle(tborder, Color.Red,Color.Blue, FarPoint.Win.Spread.RegularBoldItalicFontStyle.Bold)Dim tstyle As FarPoint.Win.Spread.TableStyletstyle = FpSpread1.CreateTableStyle("Style1",FarPoint.Win.Spread.TableStyle.TableStyleLight2)tstyle.FirstColumn = testyleFpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78FpSpread1.TableStyleCollection.Add(tstyle)

Spread Windows Forms Developer’s Guide 231

Copyright © GrapeCity, inc. All rights reserved.

Page 233: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim table As FarPoint.Win.Spread.TableView = FpSpread1.Sheets(0).AddTable("table", 1,1, 5, 2, "Style1")table.FirstColumn = True

Adding a Table Formula

YoucanaddformulastothetableinatotalrowatruntimewiththeFormulaEditororwithcode.

Addatotalrowandthenselectthedrop-downarrowatthebottomrightcornerofthetabletodisplayformulas.

YoucanselectMoreFunctionstodisplaytheFormulaEditorasshowninthefollowingfigure.

Spread Windows Forms Developer’s Guide 232

Copyright © GrapeCity, inc. All rights reserved.

Page 234: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanaddformulastothetablewiththeFormula('FormulaProperty'intheon-linedocumentation)property.Formoreinformationaboutusingstructuredreferencesintableformulas,seeUsingStructuredReferences.

UsingCode

UsetheTotalRowVisible('TotalRowVisibleProperty'intheon-linedocumentation)propertytodisplaythetotalrowforthetable.

Example

Thisexampleaddsatotalrow.

C#fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;FarPoint.Win.Spread.TableView table = fpSpread1.Sheets[0].AddTable("table", 1, 1, 5,2);table.TotalRowVisible = true;

VBFpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78Dim table As FarPoint.Win.Spread.TableView = FpSpread1.Sheets(0).AddTable("table", 1,1, 5, 2)table.TotalRowVisible = True

Understanding Structured References

Spreadsupportsstructuredreferenceformulasintables.Componentsofthestructuredreferenceincludethetablename,thecolumnspecifier,thespecialitemspecifier,andthetablespecifier.

Atablenameisthenameassignedtothetable.Thenamereferencesthetabledata,butnottheheaderandtotalsrows,ifany.

Acolumnspecifierisderivedfromthecolumnheaderandreferencesthecolumndata(excludingthecolumnheaderandtotal,ifany).Aspecialitemspecifierisawaytorefertospecificportionsofthetable,suchastheTotalsrow.

Thetablespecifieristheouterportionofthestructuredreference.Thespecifiersfollowthetablename,andareenclosedinsquarebrackets.Astructuredreferenceistheentirestringbeginningwiththetablenameandendingwiththecolumnspecifier.

Specifiersareenclosedinbrackets.

Spread Windows Forms Developer’s Guide 233

Copyright © GrapeCity, inc. All rights reserved.

Page 235: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingtopicsprovideadditionalinformationaboutstructuredreferencesintables.

UsingOperatorsandSpecialItems

UnderstandingStructuredReferenceSyntaxRules

UsingStructuredReferences

Using Operators and Special Items

Youcanuseoperatorsandspecialitemsinthestructuredreference.Thestructuredreferencecanbeunqualifiedorfullyqualified.

Foraddedflexibilityinspecifyingrangesofcells,youcanusethefollowingreferenceoperatorstocombinecolumnspecifiers.TheCellRangecolumnisageneralexample.

StructuredReference RefersTo

Operator CellRange

=DeptSales[[SalesPerson]:[Region]] Allofthecellsintwoormoreadjacentcolumns

:(colon)rangeoperator

A2:B7

=DeptSales[SaleAmt],DeptSales[ComAmt] Acombinationoftwoormorecolumns

,(comma)unionoperator

C2:C7,E2:E7

=DeptSales[[SalesPerson]:[SaleAmt]]DeptSales[[Region]:[ComPct]] Theintersectionoftwoormorecolumns

(space)intersectionoperator

B2:C7

Foraddedconvenience,youcanalsousespecialitemstorefertovariousportionsofatable,suchastheTotalsrow,tomakeiteasiertorefertotheseportionsinformulas.Thefollowingarethespecialitemspecifiersthatyoucanuseinastructuredreference:

SpecialItemSpecifier

RefersTo CellRange

=DeptSales[#All] Theentiretable,includingcolumnheaders,data,andtotals(ifany) A1:E8

=DeptSales[#Data] Justthedata A2:E7

=DeptSales[#Headers] Justtheheaderrow A1:E1

=DeptSales[#Totals] Justthetotalrow.Ifnoneexists,thenitreturnsnull A8:E8

Spread Windows Forms Developer’s Guide 234

Copyright © GrapeCity, inc. All rights reserved.

Page 236: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

=DeptSales[#ThisRow] Justtheportionofthecolumnsinthecurrentrow.#ThisRowcannotbecombinedwithanyotherspecialitemspecifiers.Useittoforceimplicitintersectionbehaviorforthereferenceortooverrideimplicitintersectionbehaviorandrefertosinglevaluesfromacolumn.

Whenyoucreateacalculatedcolumn,youoftenuseastructuredreferencetocreatetheformula.Thisstructuredreferencecanbeunqualifiedorfullyqualified.Forexample,tocreatethecalculatedcolumncalled,ComAmt,thatcalculatestheamountofcommissionindollars,youcanusethefollowingformulas:

StructuredReference

Example Comment

Unqualified =[SaleAmt]*[ComPct] Multipliesthecorrespondingvaluesfromthecurrentrow

Fullyqualified =DeptSales[SaleAmt]*DeptSales[ComPct] Multiplesthecorrespondingvaluesforeachrowforbothcolumns

Ifyouareusingstructuredreferenceswithinatable,suchaswhenyoucreateacalculatedcolumn,youcanuseanunqualifiedstructuredreference,butifyouusethestructuredreferenceoutsideofthetable,youneedtouseafullyqualifiedstructuredreference.

Understanding Structured Reference Syntax Rules

Structuredreferenceshaveadditionalsyntaxruleslistedasfollows:

Matchingbracketsarerequiredfortables,specifiers,andspecialcharacters.

Characterswithspecialmeaningrequireanescapecharacter.

Spacescanbeusedincertainareastomakethestructuredreferenceeasiertoread.

Alltable,column,andspecialitemspecifiersmustbeenclosedinmatchingbrackets([]).Aspecifierthatcontainsotherspecifiersrequiresoutermatchingbracketstoenclosetheinnermatchingbracketsoftheotherspecifiers,forexample:

=DeptSales[[SalesPerson]:[Region]]

Allcolumnheadersaretextstrings,butdonotrequirequoteswhentheyareusedinastructuredreference.Ifacolumnheadercontainsnumbersordates,suchas2004or1/1/2004,thesearestillconsideredtextstrings.Becausecolumnheadersaretextstrings,youcannotuseexpressionswithinbrackets,forexample:

=DeptSalesFYSummary[[2004]:[2002]]

Ifatablecolumnheadercontainsoneofthefollowingspecialcharacters,theentirecolumnheadermustbeenclosedinbrackets.Thismeansdoublebracketsarerequiredinacolumnspecifierwiththefollowingspecialcharacters:space,tab,linefeed,carriagereturn,comma(,),colon(:),period(.),leftbracket([),rightbracket(]),poundsign(#),singlequotationmark('),doublequotationmark("),leftbrace({),rightbrace(}),dollarsign($),caret(^),ampersand(&),asterisk(*),plussign(+),equalsign(=),minussign(-),greaterthansymbol(>),lessthansymbol(<),anddivisionsign(/).

Thefollowingstructuredreferenceincludesacolumnspecifierthatcontainsspecialcharacters:

=DeptSalesFYSummary[[Total$Amount]]

Theonlyexceptiontothisisiftheonlyspecialcharacterthatisusedisaspacecharacter,forexample:

=DeptSales[TotalAmount]

Thefollowingcharactershavespecialmeaningandrequiretheuseofasinglequotationmark(')asanescapecharacter:leftbracket([),rightbracket(]),poundsign(#),andsinglequotationmark(').

Thefollowingexampleillustratesastructuredreferencethatcontainsacharacterwithaspecialmeaning:

=DeptSalesFYSummary['#OfItems]

Spread Windows Forms Developer’s Guide 235

Copyright © GrapeCity, inc. All rights reserved.

Page 237: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanusespacecharacterstoimprovethereadabilityofastructuredreference.Youcanuseonespaceafterthefirstleftbracket([)andprecedingthelastrightbracket(]).Youcanalsouseonespaceafteracomma,asshowninthefollowingexamples:

=DeptSales[[SalesPerson]:[Region]]

=DeptSales[[#Headers],[#Data],[ComPct]]

Using Structured References

YoucanaddstructuredreferencestotablesusingtheFormula('FormulaProperty'intheon-linedocumentation)property.

Acelloutsideofthetablecanhaveaformulawithatablereference;however,thetablenamemustbeuniqueamongtablenamesandcustomnames.Thetablenamemustalsobevalid.

UsingCode

SettheFormula('FormulaProperty'intheon-linedocumentation)propertyforthecell.

Example

ThisexamplecodesumstheValuecolumninthetable.

C#fpSpread1.Sheets[0].Cells[1, 1].Text = "Last Name";fpSpread1.Sheets[0].Cells[1, 2].Text = "Value";fpSpread1.Sheets[0].Cells[2, 1].Text = "Smith";fpSpread1.Sheets[0].Cells[2, 2].Value = 50;fpSpread1.Sheets[0].Cells[3, 1].Text = "Vil";fpSpread1.Sheets[0].Cells[3, 2].Value = 10;fpSpread1.Sheets[0].Cells[4, 1].Text = "Press";fpSpread1.Sheets[0].Cells[4, 2].Value = 78;fpSpread1.Sheets[0].AddTable("table", 1, 1, 5, 2);fpSpread1.Sheets[0].Cells[5, 1].Formula = "SUM(table[Value])";

VBFpSpread1.Sheets(0).Cells(1, 1).Text = "Last Name"FpSpread1.Sheets(0).Cells(1, 2).Text = "Value"FpSpread1.Sheets(0).Cells(2, 1).Text = "Smith"FpSpread1.Sheets(0).Cells(2, 2).Value = 50FpSpread1.Sheets(0).Cells(3, 1).Text = "Vil"FpSpread1.Sheets(0).Cells(3, 2).Value = 10FpSpread1.Sheets(0).Cells(4, 1).Text = "Press"FpSpread1.Sheets(0).Cells(4, 2).Value = 78FpSpread1.Sheets(0).AddTable("table", 1, 1, 5, 2)FpSpread1.Sheets(0).Cells(5, 1).Formula = "SUM(table[Value])"

Customizing User Searching of Data

Youcansearchfordatainanyofthecellsintheworkbookbyspecifyingthesheetandthestringofdataforwhichtosearch.Youcanalsohavethecomponentdisplayasearchdialogandallowtheendusertosearchfordata.ThemethodsandpropertiesthatrelatetosearchingandsearchdialogsarepartoftheSpreadcomponent.

Spread Windows Forms Developer’s Guide 236

Copyright © GrapeCity, inc. All rights reserved.

Page 238: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thetasksforsearchinginclude:

AllowingtheUsertoPerformaStandardSearchAllowingtheUsertoPerformanAdvancedSearchSearchingforDatawithCode

Therearelimitationstothesearch.Rowandcolumnheadersarenotsearchedwiththesearchdialogs;onlycellsaresearched.UsetheSearchHeaders('SearchHeadersMethod'intheon-linedocumentation)methodtosearchtheheaders.Noneoftheinformationinthesheet,column,orrowobjectisincludedinthesearch.Notalltagsareincludedwhenyousearchand"includetags";onlycelltagsareincluded.

Mostsearches(exceptforthemethodthatspecifiesablockrangeofcells)startatthespecifiedstartcellandcontinuetotheendoftherowandthenstartthenextrowatthefirstcell.Thesearchcontinuesuntileithertheendcellortheendofthesheet.

Allowing the User to Perform a Standard Search

Youcanhavethecomponentdisplayasearch(find)dialogfortheend-usertoallowthemtosearchthetext(unformatteddata)ofcellsinasheetforaparticularstringoftext,asshowninthefollowingfigure.

Youcancustomizemanyfeaturesofthesearchdialogboxbysettingitsproperties.Inaddition,youcandisplayadefaultsearchstringintheFindwhatcombobox.Andyoucansetthecheckboxesfortheseoptions:

Matchcase-findingonlystringsthatmatchthecaseofthesearchstring(upperorlowercase).Matchexactly-findingonlystringsthatmatchthesearchstringexactly.Alternatesearch-searchingdownrowsthenacrosscolumnsratherthanviceversa.Usewildcards-allowtheuseofwildcardcharactersinthesearchstring.

Forinformationabouttheadvancedoptionsavailableonthesearchdialog,refertoAllowingtheUsertoPerformanAdvancedSearch.

Forinformationaboutperformingasearchwithoutadialog,refertoSearchingforDatawithCode.

UsingCode

UsetheSearchWithDialog('SearchWithDialogMethod'intheon-linedocumentation)methodsfortheFpSpread('FpSpreadClass'intheon-linedocumentation)componenttocustomizethesearchdialog.

Example

Thisexampleprovidesasearchdialogwithseveralsettingspreset.Inthiscase,itasanexact-matchsearchonthefourthsheet(Sheet3)forthephrase"NotAvailable"andstartatthefirstrowandcolumn.

C#fpSpread1.SearchWithDialog(3,"Not Available",true,true,false,false,0,0);

VBFpSpread1.SearchWithDialog(3,"Not Available",True,True,False,False,0,0)

Spread Windows Forms Developer’s Guide 237

Copyright © GrapeCity, inc. All rights reserved.

Page 239: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Allowing the User to Perform an Advanced Search

Youcanprovideamoreadvancedsearchdialogfortheend-userstoallowthemtosearchotherareasofthespreadsheet,includingcellnotesandcelltags.

Thereareseveraladvancedoptionsyoucansetthatextendthescopeofthesearch.Foradescriptionofthestandardsearchoptions(showninthetophalfoftheadvanceddialog),refertoAllowingtheUsertoPerformaStandardSearch.Theadvancedoptionsinclude:

Includecelltext-searchestherowandcolumncells.Includecelltags-searchesthecelltagsinthedataarea.Includecellnotes-searchesthecellnotesinthedataarea.

Forinformationaboutperformingasearchwiththesearchdialogwiththestandardoptions,refertoAllowingtheUsertoPerformaStandardSearch.

Forinformationaboutperformingasearchwithoutadialog,refertoSearchingforDatawithCode.

UsingCode

UsetheSearchWithDialogAdvanced('SearchWithDialogAdvancedMethod'intheon-linedocumentation)methodsfortheFpSpread('FpSpreadClass'intheon-linedocumentation)componenttocustomizetheadvancedsearchdialog.

Example

ThisexampleusestheSearchWithDialogAdvanced('SearchWithDialogAdvancedMethod'intheon-linedocumentation)methodandprovidestheusersasearchdialogwithseveralsettingspreset.

C#fpSpread1.SearchWithDialogAdvanced(0,4,"This",true,true,false,false,0,0);

VBFpSpread1.SearchWithDialogAdvanced(0,4,"This",True,True,False,False,0,0)

Searching for Data with Code

Tosearchfordatainanyofthecellsofasheet,useanyofthesesetsofmethodsintheFpSpread('FpSpreadClass'intheon-linedocumentation)class:

Search('SearchMethod'intheon-linedocumentation)methodsSearchHeaders('SearchHeadersMethod'intheon-linedocumentation)methods

Spread Windows Forms Developer’s Guide 238

Copyright © GrapeCity, inc. All rights reserved.

Page 240: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SearchWithDialog('SearchWithDialogMethod'intheon-linedocumentation)methodsSearchWithDialogAdvanced('SearchWithDialogAdvancedMethod'intheon-linedocumentation)methods

Theparametersofthevarioussearchmethodsallowyoutospecifythesheettosearch,thestringforwhichtosearch,andthematchingcriteria.Foralistofqualifications(restrictions)ofthesearch,refertothesetofmethodslistedaboveformoredetails.

Mostsearches(exceptforthemethodthatspecifiesablockrangeofcells)startatthespecifiedstartcellandcontinuetotheendoftherowandthenstartthenextrowatthefirstcell.Thesearchcontinuesuntileithertheendcellortheendofthesheet.

Forinformationaboutthesearchdialogs,refertoAllowingtheUsertoPerformaStandardSearchandAllowingtheUsertoPerformanAdvancedSearch.

UsingCode

UsetheSearch('SearchMethod'intheon-linedocumentation)methodfortheSpreadcomponenttoperformasearch.

Example

ThisexampleusestheSearch('SearchMethod'intheon-linedocumentation)methodfortheSpreadcomponenttoperformanexact-matchsearchonthethirdsheet(Sheet2)fortheword"Total"andreturnthevaluesoftherowindexandcolumnindexofthefoundcell.

C#int rowindx = 0;int colindx = 0;fpSpread1.Search(2,"Total",true,true,false,false,1,1,56,56, ref rowindx,ref colindx);

VBDim rowindx as IntegerDim colindx as IntegerFpSpread1.Search(2,"Total",True,True,False,False,1,1,56,56,rowindx,colindx)

Customizing User Selection of Data

Youcancustomizewhattheusercanselectandhowtheselectionappears.Tocustomizeaspectsofselections,youcanperformthefollowingtasks:

SpecifyingWhattheUserCanSelectCustomizingtheSelectionAppearanceWorkingwithSelectionsHidingtheSelectionWhenFocusisLost

Youcancustomizeseveralaspectsofuserselectionandwhethertohidetheselectionwhenfocusislost.Forexample,youcansetwhethertomovetheactivecellintheviewwiththeMoveActiveOnFocus('MoveActiveOnFocusProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Formoreactionswithselections,refertoWorkingwithSelections.

Tosettheselectionmodelforasheet,usetheSheetViewSelection('SelectionProperty'intheon-linedocumentation)property.

ForinformationregardingselectionsinSpreadDesigner,refertoSelectingaContiguousRangeofCells(on-linedocumentation)intheSpreadDesignerGuide(on-linedocumentation).

Spread Windows Forms Developer’s Guide 239

Copyright © GrapeCity, inc. All rights reserved.

Page 241: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Specifying What the User Can Select

Bydefault,sheetsallowuserstoselectacell,acolumn,arow,arangeofcells,ortheentiresheet.Youcancustomizehowselectionoccursandwhatcanbeselectedbyworkingwiththeoperationmodeofthesheetandwiththeselectionpolicyandselectionunitofthesheet.

Thefollowingtablesummarizestheoptionsavailableforspecifyingwhatuserscanselect:

Whatusercanselect

Whensettingthisforthesheet

Cells FpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation).Cells

Rows FpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation).Rows

Columns FpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation).Columns

Sheet FpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation).Sheet

Combination FpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation).numberwherenumberissomeadditionofthenumbersfortheindividualsettings(suchas6=2+4,RowsandColumns)

Cells,rangesofcells,ormultiplerangesofcells

OperationMode('OperationModeProperty'intheon-linedocumentation).NormalwithSelectionPolicy('SelectionPolicyProperty'intheon-linedocumentation)property

Onlyrows,noediting

OperationMode('OperationModeProperty'intheon-linedocumentation).SingleSelect

Onlyrows,editing OperationMode('OperationModeProperty'intheon-linedocumentation).RowMode

Multiplecontiguousrows,noediting

OperationMode('OperationModeProperty'intheon-linedocumentation).MultiSelect

Multiplenoncontiguousrows,noediting

OperationMode('OperationModeProperty'intheon-linedocumentation).ExtendedSelect

NotethattheFpSpread.SelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation)aresettingsattheSpreadcomponentlevel,whiletheOperationMode('OperationModeProperty'intheon-linedocumentation)settingsareatthesheetlevel.

ThesettingsoftheOperationMode('OperationModeProperty'intheon-linedocumentation)andtheSelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation)propertiesaffectuserinteractionwiththesheet,thatis,whattheusercanselect,butnotnecessarilywhattheapplicationcanselect.Ifyouwanttocustomizewhattheuserandtheapplicationbothcanselect,settheSelectionUnit('SelectionUnitProperty'intheon-linedocumentation)property.

YoucanalsorestrictwhichcellscanbeeditedbyusingtheRestrictRows('RestrictRowsProperty'intheon-linedocumentation)andRestrictColumns('RestrictColumnsProperty'intheon-linedocumentation)methodsforthesheet.Thisrestrictsusersfromenteringdatabeyondthenextroworcolumn.Formoreinformation,refertotheSelectionPolicy('SelectionPolicyProperty'intheon-linedocumentation)propertyandtheSelectionUnit('SelectionUnitProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)class,andtheSelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Formoredetails,seetheOperationMode('OperationMode

Spread Windows Forms Developer’s Guide 240

Copyright © GrapeCity, inc. All rights reserved.

Page 242: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Enumeration'intheon-linedocumentation)andtheSelectionBlockOptions('SelectionBlockOptionsEnumeration'intheon-linedocumentation)enumerations.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosettheoperationmode.5. SelecttheOperationModeproperty,thenselectoneofthevaluesfromthedrop-downlistofvalues.6. IfyousettheOperationModepropertytoNormal,andyouwanttoallowuserstoselectonlyacellortoselect

multiplerangesofcells,settheSelectionPolicypropertytoSingleortoMultiRange.7. Tosettheoverallselectioninteractionforthesheet,includinghowusersandtheapplicationcanselectitems,settheSelectionUnitpropertytospecifytheunitofselectionallowed.

8. ClickOKtoclosetheeditor.9. IfyouwanttocustomizewhatuserscanselectinallsheetsintheSpreadcomponent,settheSelectionBlockOptionspropertytospecifywhethertheycanselectcells,columns,rows,thesheetoracombinationofthese.

UsingaShortcut

1. Tosettheoveralluserinteractionmodeofthesheet,settheSheetsOperationMode('OperationModeProperty'intheon-linedocumentation)property.

2. IfyousettheOperationMode('OperationModeProperty'intheon-linedocumentation)propertytoNormal,

a. IfyouwanttocustomizewhatuserscanselectinallsheetsintheSpreadcomponent,settheFpSpreadSelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation)propertytospecifywhethertheycanselectcells,columns,rows,thesheetoracombinationofthese.

b. Ifyouwanttoallowuserstoselectonlyacellortoselectmultiplerangesofcells,settheSheetsSelectionPolicy('SelectionPolicyProperty'intheon-linedocumentation)propertytoSingleortoMultiRange.

3. Tosettheoverallselectioninteractionforthesheet,includinghowusersandtheapplicationcanselectitems,settheSheetsSelectionUnit('SelectionUnitProperty'intheon-linedocumentation)propertytospecifytheunitofselectionallowed.

Example

Thisexamplecodesetsthesheettoallowuserstoselectonlycellsorrangesofcells,includingmultiplerangesofcells.Theycannotselectcolumns,rows,ortheentiresheetinthisexample.

C#// Set option so users can select only cells.fpSpread1.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.Cells;// Set operation mode and let users select multiple blocks of cells.fpSpread1.Sheets[0].OperationMode = FarPoint.Win.Spread.OperationMode.Normal;fpSpread1.Sheets[0].SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;

VB' Set option so users can select only cells.FpSpread1.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.Cells' Set operation mode and let users select multiple blocks of cells.

Spread Windows Forms Developer’s Guide 241

Copyright © GrapeCity, inc. All rights reserved.

Page 243: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).OperationMode = FarPoint.Win.Spread.OperationMode.NormalFpSpread1.Sheets(0).SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange

UsingCode

1. Tosettheoveralluserinteractionmodeofthesheet,settheOperationMode('OperationModeProperty'intheon-linedocumentation)propertyforaSheetViewobject.

2. IfyousettheOperationMode('OperationModeProperty'intheon-linedocumentation)propertytoNormal,

a. IfyouwanttocustomizewhatuserscanselectinallsheetsintheSpreadcomponent,settheFpSpreadSelectionBlockOptions('SelectionBlockOptionsProperty'intheon-linedocumentation)propertytospecifywhethertheycanselectcells,columns,rows,thesheetoracombinationofthese.

b. Ifyouwanttoallowuserstoselectonlyacellortoselectmultiplerangesofcells,settheSheetViewobjectSelectionPolicy('SelectionPolicyProperty'intheon-linedocumentation)propertytoSingleortoMultiRange.

3. Tosettheoverallselectioninteractionforthesheet,includinghowusersandtheapplicationcanselectitems,settheSheetViewobjectSelectionUnit('SelectionUnitProperty'intheon-linedocumentation)propertytospecifytheunitofselectionallowed.

4. AssigntheSheetViewobjectyouhavecreatedtooneofthesheetsintheSpreadcomponent.

Example

Thisexamplecodesetsthesheettoallowuserstoselectonlycellsorrangesofcells,includingmultiplerangesofcells.Theycannotselectcolumns,rows,ortheentiresheetinthisexample.

C#// Set option so users can select only cells.fpSpread1.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.Cells;// Set operation mode and let users select multiple blocks of cells.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();newsheet.OperationMode = FarPoint.Win.Spread.OperationMode.Normal;newsheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;// Assign the SheetView object to a sheet.fpSpread1.Sheets[0] = newsheet;

VB' Set option so users can select only cells.FpSpread1.SelectionBlockOptions = FarPoint.Win.Spread.SelectionBlockOptions.Cells' Set operation mode and let users select multiple blocks of cells.Dim newsheet As New FarPoint.Win.Spread.SheetView()newsheet.OperationMode = FarPoint.Win.Spread.OperationMode.Normalnewsheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange' Assign the SheetView object to a sheet.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosettheselectionoperationmode.2. FromtheSettingsmenu,selectgeneral(SheetSettingssection).IntheSheetSettingsdialog,ontheGeneraltab,selectoneofthechoicesfromtheOperationModearea.

3. ClickOKtoclosetheSheetSettingsdialog.

Spread Windows Forms Developer’s Guide 242

Copyright © GrapeCity, inc. All rights reserved.

Page 244: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. IfyousettheOperationModepropertytoNormal,a. IfyouwanttocustomizewhatuserscanselectinallsheetsintheSpreadcomponent,settheSelectionBlockOptionsproperty(fortheselectedSpread)inthePropertieslisttospecifywhethertheycanselectcells,columns,rows,thesheetoracombinationofthese.

b. Ifyouwanttoallowuserstoselectonlyacellortoselectmultiplerangesofcells,settheSelectionPolicyproperty(fortheselectedSheet)inthePropertieslisttoSingleortoMultiRange.

5. Tosettheoverallselectioninteractionforthesheet,includinghowusersandtheapplicationcanselectitems,settheSelectionUnitproperty(fortheselectedSheet)inthePropertieslisttospecifytheunitofselectionallowed.

6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Selection Appearance

SelectionshaveadefaultappearanceprovidedbytheSpreadcomponentandtheselectionrenderer.Youcanchangethatappearance,includingthebackgroundandforegroundcolorsandfont.YoucanalsospecifyarowselectoriconwiththeShowRowSelector('ShowRowSelectorProperty'intheon-linedocumentation)property.YoucanspecifyarowediticonwiththeShowEditingRowSelector('ShowEditingRowSelectorProperty'intheon-linedocumentation)propertyasillustratedinthefollowingimage.

Youcanspecifywhethertodisplaytheselectionheader,border,oractivecellwiththePaintSelectionHeader('PaintSelectionHeaderProperty'intheon-linedocumentation),PaintSelectionBorder('PaintSelectionBorderProperty'intheon-linedocumentation),orPaintActiveCellInSelection('PaintActiveCellInSelectionProperty'intheon-linedocumentation)property.

Bydefault,theSpreadcomponentusestheappearancesetbytheselectionrenderer.Whensomethingisselected,therendererchangesthecolorofthebackgroundoftheselection.Insteadofusingthisrendering,youcanspecifyspecificcolorstouseforthebackgroundandtextcolorsofselections.Alternatively,youcanuseboththerenderer’sappearanceandcolorsyouset.Finally,youcanspecifythatnoappearanceisusedtohighlightselections.

Thefollowingfigureshowscellsselectedusingthedefaultrendererstyle,thencellsselectedusingsetcolors,andfinally,cellsselectedusingboththerendererstyleandsetcolors.

Ifnocolorissetfortheselection,thenthecolorisColor.FromArgb(100,193,224,255).

PaintingofselectedcellsisdeterminedbythevariouspropertiesintheSheetView('SheetViewClass'intheon-linedocumentation)class:

SheetViewProperty DescriptionSelectionBackColor('SelectionBackColor Determinesthebackgroundcolorofselections

Spread Windows Forms Developer’s Guide 243

Copyright © GrapeCity, inc. All rights reserved.

Page 245: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Property'intheon-linedocumentation)

SelectionForeColor('SelectionForeColorProperty'intheon-linedocumentation)

Determinesthetextcolorofselections

SelectionStyle('SelectionStyleProperty'intheon-linedocumentation)

Determineshowtheselectionsarestyledusingeitherthecolorsoracustomrendererorboth

SelectionFont('SelectionFontProperty'intheon-linedocumentation)

Determinesthefontoftheselectedtext

WhentheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)isSelectionColors,thecellispaintedusingtheSelectionBackColor('SelectionBackColorProperty'intheon-linedocumentation)andSelectionForeColor('SelectionForeColorProperty'intheon-linedocumentation)settingsinplaceofthecell'sForeColor('ForeColorProperty'intheon-linedocumentation)andBackColor('BackColorProperty'intheon-linedocumentation)propertysettings.WhentheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)isSelectionRenderer,thecellispaintedusingthecell'sForeColor('ForeColorProperty'intheon-linedocumentation)andBackColor('BackColorProperty'intheon-linedocumentation)propertysettings.Thenasemi-transparentlayerispaintedoverthecell.Thesemi-transparentlayerisaccomplishedusingthefollowing.

Brush selectionBrush = new SolidBrush(Color.FromArgb(100, 193, 224, 255));

g.FillRectangle(selectionBrush, x, y, width, height);

Formoreinformation,refertotheSelectionStyles('SelectionStylesEnumeration'intheon-linedocumentation)enumerationandtheISelectionRenderer('ISelectionRendererInterface'intheon-linedocumentation)interface.

Formoreinformationonselectionsettings,refertotheSelectionRenderer('SelectionRendererProperty'intheon-linedocumentation)propertyandtheRetainSelectionBlock('RetainSelectionBlockProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosettheselectionappearance.5. SelecttheSelectionStyleproperty,thenselectoneofthevaluesfromthedrop-downlistofvalues.6. IfyousettheSelectionStyletoSelectionColorsorBoth,settheSelectionBackColorandSelectionForeColorpropertiestospecifythebackgroundandtextcolorsfortheselectionhighlighting.

7. ClickOKtoclosetheeditor.

UsingaShortcut

1. Tospecifyhowtodrawtheselectionhighlighting,settheSheetsSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)property.

2. IfyousettheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)toSelectionColorsorBoth,settheSheetsSelectionBackColor('SelectionBackColorProperty'intheon-linedocumentation)andSelectionForeColor('SelectionForeColorProperty'intheon-linedocumentation)tospecifythecolorstouseforthebackgroundandforthetext.

Example

Thisexamplecodesetstheselectionhighlightingtousetherenderersettingsandcolors.

C#

Spread Windows Forms Developer’s Guide 244

Copyright © GrapeCity, inc. All rights reserved.

Page 246: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Use the selection renderer and colors.fpSpread1.Sheets[0].SelectionStyle = FarPoint.Win.Spread.SelectionStyles.Both;// Set the background and text colors.fpSpread1.Sheets[0].SelectionBackColor = System.Drawing.Color.Pink;fpSpread1.Sheets[0].SelectionForeColor = System.Drawing.Color.Navy;

VB' Use the selection renderer and colors.FpSpread1.Sheets(0).SelectionStyle = FarPoint.Win.Spread.SelectionStyles.Both' Set the background and text colors.FpSpread1.Sheets(0).SelectionBackColor = System.Drawing.Color.PinkFpSpread1.Sheets(0).SelectionForeColor = System.Drawing.Color.Navy

UsingCode

1. Tospecifyhowtodrawtheselectionhighlighting,settheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)propertyforaSheetView('SheetViewClass'intheon-linedocumentation)object.

2. IfyousettheSelectionStyle('SelectionStyleProperty'intheon-linedocumentation)toSelectionColorsorBoth,settheSheetViewobjectSelectionBackColor('SelectionBackColorProperty'intheon-linedocumentation)andSelectionForeColor('SelectionForeColorProperty'intheon-linedocumentation)tospecifythecolorstouseforthebackgroundandforthetext.

3. AssigntheSheetView('SheetViewClass'intheon-linedocumentation)objectyouhavecreatedtooneofthesheetsinthecomponent.

Example

Thisexamplecodesetstheselectionhighlightingtousetherenderersettingsandcolors.

C#FarPoint.Win.Spread.SheetView newsheet=new FarPoint.Win.Spread.SheetView();// Use the selection renderer and colors.newsheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.Both;newsheet.SelectionBackColor = System.Drawing.Color.AliceBlue;// Set the background and text colors.newsheet.SelectionForeColor = System.Drawing.Color.Navy;// Assign the SheetView to a sheet in the component.fpSpread1.Sheets[0] = newsheet;

VBDim newsheet As New FarPoint.Win.Spread.SheetView()' Use the selection renderer and colors.newsheet.SelectionStyle = FarPoint.Win.Spread.SelectionStyles.Both' Set the background and text colors.newsheet.SelectionBackColor = System.Drawing.Color.AliceBluenewsheet.SelectionForeColor = System.Drawing.Color.Navy' Assign the SheetView to a sheet in the component.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosettheselectionstyle.

Spread Windows Forms Developer’s Guide 245

Copyright © GrapeCity, inc. All rights reserved.

Page 247: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Inthepropertylist,settheSelectionStyleproperty.3. IfyousettheSelectionStyletoSelectionColorsorBoth,settheSelectionBackColorandSelectionForeColorpropertiestospecifythebackgroundandtextcolorsfortheselectionhighlighting.

4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Working with Selections

Whenauserselectsarangeofcells,thatrangeofcellscanhaveaseparatebackgroundcolorandforegroundcolortodistinguishitfromtheothercellsinthespreadsheet.Therangeiscalledaselection.Therearemanyaspectsofselectionsthatyoucanmanageprogrammatically.Incodeyoucanaddandremoveselectionsandyoucanfindoutwhatisselected.Thistopicsummarizessomeofthetasksyoucanperformwithselectionsincode.

Toaddaselection(arangeofcellsthataredisplayedasselected),usetheSheetsAddSelection('AddSelectionMethod'intheon-linedocumentation)methodandspecifythestartingrowandcolumn,andthenumberofrowsandcolumnsintheselection.Togetalltherangesofcellsthatarepresentlyselected,usetheSheetsGetSelections('GetSelectionsMethod'intheon-linedocumentation)method.Toreturnaspecificselection,usetheSheetsGetSelection('GetSelectionMethod'intheon-linedocumentation)method.Toremovealloftheselections,usetheSheetsClearSelection('ClearSelectionMethod'intheon-linedocumentation)method.Toremoveaspecificselection,usetheSheetsRemoveSelection('RemoveSelectionMethod'intheon-linedocumentation)methodandspecifytherowandcolumn,andthenumberofrowsandcolumnstoremovefromtheselection.Toclearallselectionswhenanewactivecellissetprogrammatically,usingtheBooleanclearSelectionparameterintheSetActiveCell('SetActiveCellMethod'intheon-linedocumentation)method.Tokeepaselectionhighlighted,usetheRetainSelectionBlock('RetainSelectionBlockProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.YoucanmoveaselectedcellintheviewusingtheMoveActiveOnFocus('MoveActiveOnFocusProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Toworkwitheventsregardingselections,refertotheSelectionChangedEventArgs('SelectionChangedEventArgsClass'intheon-linedocumentation)class.

ToselectallthecellsinasheetusetheRowCount('RowCountProperty'intheon-linedocumentation)andColumnCount('ColumnCountProperty'intheon-linedocumentation)propertiesforthatsheet,asinthislineofcode:

FpSpread1.ActiveSheet.Models.Selection.SetSelection(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount)

TheDefaultSheetSelectionModelclass(andIDisjointSelectioninterface)GetSelectionsmethodreturns-1foreithertheRowCountortheColumnCountifallthecellsinthatroworcolumnareselected,aswhentheenduserclicksonaheadertomakeaselection.

Forinformationontheunderlyingmodelforselections,refertoUnderstandingtheSelectionModel.

UsingaShortcut

Toaddaselection,usetheSheetView'sAddSelection('AddSelectionMethod'intheon-linedocumentation)methodfromtheSheetsshortcut,specifyingthenecessaryparameters.

Example

Thisexamplecodeselectstworangesofcells.

C#// Set the sheet to allow multiple range selections.fpSpread1.Sheets[0].SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;// Select cells C3 through D4.fpSpread1.Sheets[0].AddSelection(2, 2, 2, 2);// Select cells F6 through H8.fpSpread1.Sheets[0].AddSelection(5, 5, 3, 3);

VB' Set the sheet to allow multiple range selections.FpSpread1.Sheets(0).SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange' Select cells C3 through D4.FpSpread1.Sheets(0).AddSelection(2, 2, 2, 2)' Select cells F6 through H8.FpSpread1.Sheets(0).AddSelection(5, 5, 3, 3)

UsingCode

Toaddaselection,usetheAddSelection('AddSelectionMethod'intheon-linedocumentation)methodfromtheSheetsshortcut,specifyingthenecessaryparameters.ThenassigntheSheetView('SheetViewClass'intheon-linedocumentation)objecttoasheetinthecomponent.

Example

Thisexamplecodeselectstworangesofcells.

C#FarPoint.Win.Spread.SheetView newsheet=new FarPoint.Win.Spread.SheetView();

Spread Windows Forms Developer’s Guide 246

Copyright © GrapeCity, inc. All rights reserved.

Page 248: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Add two selections.newsheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;newsheet.AddSelection(2, 2, 2, 2);newsheet.AddSelection(5, 5, 3, 3);// Assign the SheetView to a sheet in the component.fpSpread1.Sheets[0] = newsheet;

VBDim newsheet As New FarPoint.Win.Spread.SheetView()' Add two selections.newsheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRangenewsheet.AddSelection(2, 2, 2, 2)newsheet.AddSelection(5, 5, 3, 3)' Assign the SheetView to a sheet in the component.FpSpread1.Sheets(0) = newsheet

Hiding the Selection When Focus is Lost

Bydefault,theSpreadcomponentdisplaysthefocusrectangleandhighlightsselections,regardlessofwhetherthecomponenthasthefocus.Ifyouprefer,youcansetthecomponenttohidethefocusrectangleandselectionhighlightingwhenthecomponentdoesnothavethefocus.Inthiscase,thecomponentstilldisplaysthefocusandhighlightselectionswhenthecomponentregainsthefocus.(ThisdoesnotapplywhenEditModePermanent('EditModePermanentProperty'intheon-linedocumentation)issettoTrue,inwhichcasethefocusrectangleandselectionhighlightingarenotdisplayed.)FormoreinformationrefertotheRetainSelectionBlock('RetainSelectionBlockProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Youcanspecifythateditmodeisalwaysoninthespreadsheet.Wheneditmodeisalwayson,thespreadsheetactslikeaform,wheretheusercanenterdatainanydatafieldandthefocusrectangleisnotdisplayed.OnlyablinkingI-barisdisplayedinacelltoshowthecursor.FormoreinformationrefertotheEditModePermanent('EditModePermanentProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.

Formoreinformationaboutthefocusindicator,refertoCustomizingtheFocusIndicatorforaCell.

Using Application Tags

Youcanaddanapplicationtagtoasheet,toaroworcolumn,ortoacellinthespreadsheet.

AddingaTagtoaSheetAddingaTagtoaRoworColumnAddingaTagtoaCell

Adding a Tag to a Sheet

Youcanaddanapplicationtagtoasheet.Ifyouprefer,youcanassociatedatawithanycellinthespreadsheet,orthecellsinacolumn,arow,ortheentirespreadsheet.Thestringdatacanbeusedtointeractwithacellortoprovideinformationtotheapplicationyoucreate.Thesheetdata,orsheettag,issimilartoitemdatayoucanprovideforthespreadsheet,columns,orrows.

Becausethesheettagisdeclaredasanobject,itisveryflexible;itcanbeanumber,aboolean,astring,oraninstanceofaclass.

Formoreinformationontags,refertotheTag('TagProperty'intheon-linedocumentation)propertyintheSheetView('SheetViewClass'intheon-linedocumentation)classandtheGetCellFromTag('GetCellFromTagMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 247

Copyright © GrapeCity, inc. All rights reserved.

Page 249: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Adding a Tag to a Row or Column

Youcanaddanapplicationtagtoaroworcolumn.Ifyouprefer,youcanassociatedatawithanycellinthespreadsheet,orthecellsinacolumn,arow,ortheentirespreadsheet.Thestringdatacanbeusedtointeractwitharoworcolumn,ortoprovideinformationtotheapplicationyoucreate.Therowdata(columndata),orrowtag(columntag),issimilartoitemdatayoucanprovideforthespreadsheetorcells.

Sincetherowtag(columntag)isdeclaredasanobject,itisveryflexible;itcanbeanumber,aboolean,astring,oraninstanceofaclass.

Formoreinformationontags,refertotheTag('TagProperty'intheon-linedocumentation)propertyintheRow('RowProperty'intheon-linedocumentation)classorColumn('ColumnProperty'intheon-linedocumentation)classandtheGetCellFromTag('GetCellFromTagMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)class.

Adding a Tag to a Cell

Youcanaddanapplicationtagtoacellorrangeofcells.Ifyouprefer,youcanassociatedatawithanycellinthespreadsheet,orthecellsinacolumn,arow,ortheentirespreadsheet.Thestringdatacanbeusedtointeractwithacellortoprovideinformationtotheapplicationyoucreate.Thecelldata,orcelltag,issimilartoitemdatayoucanprovideforthespreadsheet,columns,orrows.

Thecelltagisfortheapplicationmuchlikethecellnoteisfortheenduser.Thecellnotecontainsanextrabitofhuman-readableinformationthatisusefultotheenduser.Thecelltagallowstheapplicationtoattachanextrabitofcomputer-readableinformationtoacell.Theinformationcanbewhateverisusefultotheapplication.Forexample,supposetheapplicationismanuallypopulatinganunboundsheetwithvaluesfromaDataTable.TheapplicationcouldusethecelltagtoindicatetheDataRowintheDataTablefromwhichthecellvaluewasobtained(celltag=DataRow).Asanotherexample,theapplicationcouldusethecelltagasadirtyflag(celltag=Trueindicatesthatthecellneedstobeprocessed).

Sincethecelltagisdeclaredasanobject,itisveryflexible;itcanbeanumber,aboolean,astring,oraninstanceofaclass.

Formoreinformationontags,refertotheTag('TagProperty'intheon-linedocumentation)propertyintheCell('CellClass'intheon-linedocumentation)classandtheGetCellFromTag('GetCellFromTagMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)class.

UsingaShortcut

SettheTag('TagProperty'intheon-linedocumentation)propertyforthecellsinthesheetoftheSpreadcomponent.

Example

ThisexamplecodesetstheTag('TagProperty'intheon-linedocumentation)propertyforarangeofCellobjects.

C#fpSpread1.Sheets[0].Cells[1, 1, 3, 3].Tag = "This is the tag that describes the value.";fpSpread1.Sheets[0].Cells[1, 1, 3, 3].Value = "Value Here";

VBFpSpread1.Sheets(0).Cells(1, 1, 3, 3).Tag = "This is the tag that describes the value."

Spread Windows Forms Developer’s Guide 248

Copyright © GrapeCity, inc. All rights reserved.

Page 250: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).Cells(1, 1, 3, 3).Value = "Value Here"

UsingCode

SettheTag('TagProperty'intheon-linedocumentation)propertyfortheCell('CellClass'intheon-linedocumentation)objectforarangeofcells.

Example

ThisexamplecodesetstheTag('TagProperty'intheon-linedocumentation)propertyforarangeofCellobjects.

C#FarPoint.Win.Spread.Cell range1;range1 = fpSpread1.ActiveSheet.Cells[1, 1, 3, 3];range1.Value = "Value Here";range1.Tag = "This is the tag that describes the value.";

VBDim range1 As FarPoint.Win.Spread.Cellrange1 = FpSpread1.ActiveSheet.Cells(1, 1, 3, 3)range1.Value = "Value Here"range1.Tag = "This is the tag that describes the value."

Setting and Resetting User Interaction

Youcansetvariousaspectsofuserinteraction.Ifyoueverneedtoresetthecomponentbacktoitsdefaultvaluesorclearvaluesinordertostartover,followthetopicsinthissection.

AllowingUserFunctionalityResettingPartsoftheInterfaceClearingorRemovingPartsoftheInterface

Allowing User Functionality

ThereareseveralaspectsoftheSpreadcomponentthatcanbesettoalloworrestricthowtheusercaninteractwiththecomponent.

Hereisalistsummarizingthethingsyoucanallowtheusertodo(orpreventtheuserfromdoing)withthedataareaofthecomponent:

Userfunctionalitytoallow

Relatedpropertyormethod

Draganddropcelldata

FpSpread.AllowDragDrop('AllowDragDropProperty'intheon-linedocumentation)property

Dragandfillcelldata FpSpread.AllowDragFill('AllowDragFillProperty'intheon-linedocumentation)property

Editcellnotes SheetView.AllowNoteEdit('AllowNoteEditProperty'intheon-linedocumentation)property

Spread Windows Forms Developer’s Guide 249

Copyright © GrapeCity, inc. All rights reserved.

Page 251: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Enterformulas FpSpread.AllowUserFormulas('AllowUserFormulasProperty'intheon-linedocumentation)property

Filterrows Column.AllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)property

Expandorcollapsehierarchy

GetRowExpandable('GetRowExpandableMethod'intheon-linedocumentation),SetRowExpandable('SetRowExpandableMethod'intheon-linedocumentation)methods

Moverowsandcolumns

FpSpread.AllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)propertyandFpSpread.AllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)property

Performastandardsearch

FpSpread.SearchWithDialog('SearchWithDialogMethod'intheon-linedocumentation)method)

Performanadvancedsearch

FpSpread.SearchWithDialogAdvanced('SearchWithDialogAdvancedMethod'intheon-linedocumentation)method

Resizerowsorcolumns

Column.Resizable('ResizableProperty'intheon-linedocumentation)propertyandRow.Resizable('ResizableProperty'intheon-linedocumentation)property

Sortbyclickingthesortindicatorinthecolumnheader

Column.AllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)property

Hereisalistsummarizingthethingsyoucanallowtheusertodo(orpreventtheuserfromdoing)withthecomponent:

Userfunctionalitytoallow

Relatedpropertyormethod

Restrictaccesstorowsorcolumns

SheetView.RestrictColumns('RestrictColumnsProperty'intheon-linedocumentation)property

SheetView.RestrictRows('RestrictRowsProperty'intheon-linedocumentation)property

Zoom,orscalethedisplayofthecomponent

FpSpread.AllowUserZoom('AllowUserZoomProperty'intheon-linedocumentation)property

UseofClipboardshortcuts(keys)

FarPoint.Win.SuperEditBase.AllowClipboardKeys('AllowClipboardKeysProperty'intheon-linedocumentation)property

Editthesheetnames FpSpread.TabStrip.Editable('EditableProperty'intheon-linedocumentation)property

Hereisalistofthingsyoucanallowtheusertodo(orpreventtheuserfromdoing)withtheshapes(onthedrawingspacelayer):

Userfunctionalitytoallow

Relatedpropertyormethod

Moveshapes PSObject.CanMove('CanMoveProperty'intheon-linedocumentation)property

Resizeshapes PSObject.CanSize('CanSizeProperty'intheon-linedocumentation)property

Rotateshapes PSObject.CanRotate('CanRotateProperty'intheon-linedocumentation)property

Youcancustomizehowtheuserinteractswiththekeyboard.Formoreinformation,refertoManagingKeyboard

Spread Windows Forms Developer’s Guide 250

Copyright © GrapeCity, inc. All rights reserved.

Page 252: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Interaction.

Youcanalsocustomizehowtheuserinteractswithprinting.Formoreinformation,refertoManagingPrinting.

Formoreinformationonshapes,refertoCustomizingDrawing.

Resetting Parts of the Interface

YoucanresetvarioussettingsonvariouspartsoftheSpreadcomponentinterfacebacktodefaultororiginalvalues.Youcanalsoclearpartsofthedataareaofvariousitems,bothdataandformatting.

Thewaysinwhichpartsofthecomponentcanberesetinclude:

ResetthecomponenttoitsoriginalstateusingtheFpSpread('FpSpreadClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.ResetthesizeofthecomponenttoitsoriginalsizeusingtheFpSpread('FpSpreadClass'intheon-linedocumentation)classDefaultSize('DefaultSizeProperty'intheon-linedocumentation)property.ResetthesheettoitsoriginalstateusingtheSheetView('SheetViewClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.ResettheskinpropertiesforasheetorsheetsusingtheDefaultSkins('DefaultSkinsClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.ResetthevalueofacellorthetextinacelltoemptyusingtheCell('CellClass'intheon-linedocumentation)class,ResetText('ResetTextMethod'intheon-linedocumentation)orResetValue('ResetValueMethod'intheon-linedocumentation)method.ResetallthenamedstylepropertiestotheirdefaultvaluesusingtheNamedStyle('NamedStyleClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.Therearealsoindividualresetmethodsforeachofthesettingsinastyle:ResetallthestylesettingsintheStyleInfo('StyleInfoClass'intheon-linedocumentation)objecttothedefaultsettingsusingtheStyleInfo('StyleInfoClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.

Resetthesettingsforcells,rows,orcolumnsusingtheindividualresetmethodsforeachsettingintheCell('CellClass'intheon-linedocumentation)orRow('RowClass'intheon-linedocumentation)orColumn('ColumnClass'intheon-linedocumentation)class:

ResettingDesired MethodNameBackgroundcolorforindividualcellsorforroworcolumnofcells

ResetBackColor('ResetBackColorMethod'intheon-linedocumentation)

Borderforindividualcellsorforroworcolumnofcells

ResetBorder('ResetBorderMethod'intheon-linedocumentation)

Celltypeforindividualcellsorforroworcolumnofcells

ResetCellType('ResetCellTypeMethod'intheon-linedocumentation)

Textfontforindividualcellsorforroworcolumnofcells

ResetFont('ResetFontMethod'intheon-linedocumentation)

Foregroundcolorforindividualcellsorforroworcolumnofcells

ResetForeColor('ResetForeColorMethod'intheon-linedocumentation)

Rowheight ResetHeight('ResetHeightMethod'intheon-linedocumentation)

Cellcontentshorizontalalignmentforindividualcellsorforroworcolumnofcells

ResetHorizontalAlignment('ResetHorizontalAlignmentMethod'intheon-linedocumentation)

Cellheaderlabel ResetLabel('ResetLabelMethod'intheon-line

Spread Windows Forms Developer’s Guide 251

Copyright © GrapeCity, inc. All rights reserved.

Page 253: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

Lockedstatusforindividualcellsorforroworcolumnofcells

ResetLocked('ResetLockedMethod'intheon-linedocumentation)

Mergepolicyforaroworcolumnofcells ResetMergePolicy('ResetMergePolicyMethod'intheon-linedocumentation)

Cellnoteindicatorcolorforindividualcellsorforroworcolumnofcells

ResetNoteIndicatorColor('ResetNoteIndicatorColorMethod'intheon-linedocumentation)

Parentstylenameforindividualcellsorforroworcolumnofcells

ResetParentStyleName('ResetParentStyleNameMethod'intheon-linedocumentation)

Columnresizable ResetResizable('ResetResizableMethod'intheon-linedocumentation)

Columnsortindicator ResetSortIndicator('ResetSortIndicatorMethod'intheon-linedocumentation)

Cellcontentsverticalalignmentforindividualcellsorforroworcolumnofcells

ResetVerticalAlignment('ResetVerticalAlignmentMethod'intheon-linedocumentation)

Roworcolumnvisible ResetVisible('ResetVisibleMethod'intheon-linedocumentation)

Columnwidth ResetWidth('ResetWidthMethod'intheon-linedocumentation)

ResetallthenamedstylepropertiestotheirdefaultvaluesusingtheNamedStyle('NamedStyleClass'intheon-linedocumentation)classReset('ResetMethod'intheon-linedocumentation)method.Therearealsoindividualresetmethodsforeachofthesettingsinastyle:

MethodName ResettingDesiredReset('ResetMethod'intheon-linedocumentation) Allthepropertiesofthestyle

ResetBackColor('ResetBackColorMethod'intheon-linedocumentation)

Backgroundcolorofacell

ResetBorder('ResetBorderMethod'intheon-linedocumentation)

Borderaroundacell

ResetCanFocus('ResetCanFocusMethod'intheon-linedocumentation)

Whetherthecellcanreceivefocus

ResetCellType('ResetCellTypeMethod'intheon-linedocumentation)

Celltypeofthecell

ResetEditor('ResetEditorMethod'intheon-linedocumentation)

Editorusedforeditingthecell

ResetFont('ResetFontMethod'intheon-linedocumentation) Fontfaceusedinthetextofthecell

ResetForeColor('ResetForeColorMethod'intheon-linedocumentation)

Text(foreground)colorinacell

ResetFormatter('ResetFormatterMethod'intheon-linedocumentation)

Formatterforformattingthecontentsofthecell

ResetHorizontalAlignment('ResetHorizontalAlignmentMethod'intheon-linedocumentation)

horizontalalignmentoftextinacell

ResetLocked('ResetLockedMethod'intheon-linedocumentation)

Whetherthecellismarkedaslocked

ResetName('ResetNameMethod'intheon-linedocumentation) Defaultnameofthestyle

Spread Windows Forms Developer’s Guide 252

Copyright © GrapeCity, inc. All rights reserved.

Page 254: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ResetNoteIndicatorColor('ResetNoteIndicatorColorMethod'intheon-linedocumentation)

Colorofthecellnoteindicator

ResetNoteStyle('ResetNoteStyleMethod'intheon-linedocumentation)

Cellnotestyle

ResetParent('ResetParentMethod'intheon-linedocumentation)(InheritedfromStyleInfo)

Parentstylename

ResetProperty('ResetPropertyMethod'intheon-linedocumentation)

Specifiedsettingproperty

ResetRenderer('ResetRendererMethod'intheon-linedocumentation)

Rendererforpaintingthecell

ResetTabStop('ResetTabStopMethod'intheon-linedocumentation)

WhethertheusercansetfocustothecellusingtheTabkey

ResetVerticalAlignment('ResetVerticalAlignmentMethod'intheon-linedocumentation)

Verticalalignmentoftextinacell

Ifyouaresettingthebackgroundcolorforanindividualcell,thenResetBackColorresetsthatcell'sbackgroundcolortoitsdefaultcolor.If,instead,yousetthebackgroundcolorusingtheBackColorpropertyforaRowobject,thenyoumustusetheResetBackColorforthatrow.IfyouwanttoloopallthecellssettingthecolortoWhite,youcanspeedthisupbyinvalidatingthepaintingintheSpreadwhileyouareloopingthecellsasshowninthefollowingcode.

VisualBasicFpSpread1.SuspendLayout()FpSpread1.Sheets(0).Cells(0, 0, 499, 499).BackColor = Color.WhiteFpSpread1.ResumeLayout(True)

C#fpSpread1.SuspendLayout();fpSpread1.Sheets[0].Cells(0, 0, 499, 499).BackColor = Color.White;fpSpread1.ResumeLayout(true);

Resettingthecomponentorasheettoitsdefaultsettingsreturnsthecomponentorthesheettoitsinitialstatepriortoanydesign-timeorrun-timechanges.Itclearsdata,resetscolors,andreturnscellstothedefaultcelltype.Resettingthecomponentresetseverythinginthecomponenttothestatewhenthecomponentisfirstdrawnontheform.

Note:Resettingthecomponentorasheetclearsthedatainthesheet(s)aswellastheformatting.Ifyouprovideawayforuserstoresettheirsheet(s),besuretohavethemconfirmtheactionbeforeresettingthesheet(s).

YoucanfindoutthedefaultsizeofthecomponentusingtheFpSpreadDefaultSize('DefaultSizeProperty'intheon-linedocumentation)property.

Formoreinformationaboutclearingdata,refertoRemovingDatafromaSheet.

ForinformationonresettingvaluescreatingduringthedesignusingSpreadDesigner,refertotheexplanationofthisprocedureintheSpreadDesignerGuide(on-linedocumentation).

Clearing or Removing Parts of the Interface

YoucanresetvarioussettingsonvariouspartsoftheSpreadcomponentinterfacebacktodefaultororiginalvalues.Youcanalsoclearpartsofthedataareaofvariousitems,bothdataandformatting.

Formoreinformationaboutclearingdata,refertoRemovingDatafromaSheet.

Spread Windows Forms Developer’s Guide 253

Copyright © GrapeCity, inc. All rights reserved.

Page 255: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Drawing

Eachsheetcanhaveitsowndrawinglayerthatcancontainbuilt-inshapes,customshapes,andannotations(free-handdrawings).Shapesandannotationsareaformofgraphicsthataredrawnonaseparatelayerfromthatofthespreadsheet.Thisdrawinglayer,ordrawingspace,isinfrontofthespreadsheetinthedisplay.Shapescanbemadeallorpartiallytransparenttorevealthespreadsheetbehind.Anexampleofamultiple-sidedshapedrawninthespaceaboveaspreadsheetisshowninthisfiguretohelpyouunderstandtheconceptoflayers.Becausetheshapesappearonthisseparatelayerfromthesheetandcanbethoughttofloatabovethespreadsheet,theyaresometimescalledfloatingobjects.

Thesetopicscanhelpyoucustomizetheinteractionwiththedrawinglayer:

WorkingwithShapesinCodeWorkingwithAnnotationsAllowingtheUsertoDrawwithaTabletPCCreatingCameraShapes

Forinstance,inaspreadsheetyoucouldcreateashapelikea"star"orothergraphicthatcouldhighlightdataorpointtheusertosomeaspectofworkingwiththesheetandplacethisonalayerindependentofthecellsandtheirvalues.Youcouldthenproceedtocustomizeaspectsofthatstarorgraphicfromsizeandbackgroundcolortorotationangleorgradient.Theshapesareavailableincode(eachshapebeingaseparateclassintheDrawingSpacenamespace)orfromtheInsertmenuintheSpreadDesigner.Youcanuseshapesandannotationtodrawattentiontopartsofyourspreadsheetoremphasizesomeinformationorprocessinvolvingtheuseofthespreadsheet.Forexample,youcandisplayalogoonyoursheet,showaprocesswithflowchart-likegraphics,oruseshapestosimplyhighlightaparticularresult.

Formoreinformationonshapes,refertotheSpreadDesignerGuide(on-linedocumentation).

Working with Shapes in Code

Thereareseveralbuilt-inshapesforyoutouseonasheet.Eachshapecanberotatedandresized,andtheirabilitytoberotatedandresizedbytheendusercanbeconstrained.Whenselected,theshapehasresizehandleswithwhichyoucanadjustthesizeandarotatehandlewithwhichyoucanrotatetheshape.Colors,shadows,andtransparencycanbeadjusted.MostusersfinditeasytocreateandplacetheshapesusingSpreadDesigner.Youmayalsocreateandplaceshapesusingcode.

TheDynamicSize('DynamicSizeProperty'intheon-linedocumentation)andDynamicMove('DynamicMoveProperty'intheon-linedocumentation)propertiesspecifyhowshapesaremovedandresizedwhenhidingorshowing,resizing,ormovingrowsorcolumnsthatintersectwiththeshapeorthatappearbeforetheshape(forexample,resizingacolumntotheleftorarowabovetheshape).

Spread Windows Forms Developer’s Guide 254

Copyright © GrapeCity, inc. All rights reserved.

Page 256: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingoptionsareavailable:

Moveandsizewithcells(DynamicMove=TrueandDynamicSize=True)Move,butdonotsizewithcells(DynamicMove=TrueandDynamicSize=False)Donotmoveorsizewithcells(DynamicMove=FalseandDynamicSize=False)

Hidingcolumnsandrowsthatcontainashapehidestheshapeaswell.

TheFarPoint.Win.Spread.DrawingSpace.DrawingToolbarclassallowsyoutobringuptheshapetoolbaratrun-time.

BesidesworkingwithshapesfromSpreadDesigner,youcanalsoaddandremoveshapesprogrammatically.YoucanperformthefollowingworkwithshapesusingthecorrespondingmethodsintheSheetView('SheetViewClass'intheon-linedocumentation)class:

AddashapeincodeusingtheAddShape('AddShapeMethod'intheon-linedocumentation)methodRemoveashapeusingtheRemoveShape('RemoveShapeMethod'intheon-linedocumentation)methodRemovealltheshapesusingtheClearShapes('ClearShapesMethod'intheon-linedocumentation)methodGetashapeusingtheGetShape('GetShapeMethod'intheon-linedocumentation)method

Toaddashapeusingcode,refertotheDrawingSpacenamespaceandselecttheparticularshapeanddefineitspropertiesusingcode.Whilethereismuchflexibilityinsettingupshapes,therearesomelimitations.ThesearelistedintheAssemblyReference(on-linedocumentation)inthetopicsfortheshapemethodsandclasses.Forexample,fortheLineShape('LineShapeClass'intheon-linedocumentation)class,themaximumthicknessforalineis64pixels.

Thesimplestwaytoaddashapecanbeperformedinonelineofcode,asshowninthefollowingexample:

FpSpread1.ActiveSheet.AddShape(New FarPoint.Win.Spread.DrawingSpace.RectangleShape())

Thisconstructsabasicrectangleshapewithdefaultpropertiesandaddstheshapetheactivesheet.Thefollowingexamplecreatesashapewithcustomsettings.

Formoreinformationonshapes,refertotheSpreadDesignerGuide(on-linedocumentation).

Example

Thisexamplecreatesashape,changessomeofthemostusedproperties,andthenaddsittotheactivesheet.

C# // Create a new shape. FarPoint.Win.Spread.DrawingSpace.RectangleShape rShape = new FarPoint.Win.Spread.DrawingSpace.RectangleShape(); // Assign a name, overriding the unique default assigned name. // All shape names within a sheet must be unique. rShape.Name = "rShape1"; // Assign a location at which to start the display of the shape. rShape.Top = 20; rShape.Left = 60; // Alternatively, you could set the Location property // with a Point object as in: // rShape.Location = new Point(20, 60);

// Assign a custom fill color to the shape. rShape.BackColor = Color.Blue; // Assign a size to the shape. rShape.Width = 100; rShape.Height = 100; // Alternatively, you could set the Size property

Spread Windows Forms Developer’s Guide 255

Copyright © GrapeCity, inc. All rights reserved.

Page 257: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// with a Size object as in: // rShape.Size = new Size(100, 100); // Add the shape to the sheet so that it appears on that sheet. fpSpread1.ActiveSheet.AddShape(rShape); // This code will display the shape property dialog //FarPoint.Win.Spread.DrawingSpace.ShapeProps f = new FarPoint.Win.Spread.DrawingSpace.ShapeProps(fpSpread1); //f.Shape = fpSpread1.Sheets[0].DrawingContainer.GetShape("rShape1"); //f.ShowDialog();

VB ' Create a shape. Dim rShape As New FarPoint.Win.Spread.DrawingSpace.RectangleShape() ' Assign a name, overriding the unique default assigned name. ' All shape names within a sheet must be unique. rShape.Name = "rShape1" ' Assign a location at which to start the display of the shape. rShape.Top = 20 rShape.Left = 60 ' Alternatively, you could set the Location property ' with a Point object as in: ' rShape.Location = new Point(20, 60)

' Assign a custom fill color to the shape. rShape.BackColor = Color.Blue ' Assign a size to the shape. rShape.Width = 100 rShape.Height = 100 ' Alternatively, you could set the Size property ' with a Size object as in: ' rShape.Size = new Size(100, 100) ' Add the shape to the sheet so that it appears on that sheet. FpSpread1.ActiveSheet.AddShape(rShape) ' This code will display the shape property dialog ' Dim f As New 'FarPoint.Win.Spread.DrawingSpace.ShapeProps(FpSpread1) 'f.Shape = 'FpSpread1.Sheets(0).DrawingContainer.GetShape("rShape1") 'f.ShowDialog()

Working with Annotations

Youcanaddfree-handdrawingtothedrawinglayerofthesheetusingannotationmode.Annotationmodeallowstheusertodrawinfree-handmodeontheshapeslayerandtosavetheannotationonthesheetasashape.

UseStartAnnotationMode('StartAnnotationModeMethod'intheon-linedocumentation)andStopAnnotationMode('StopAnnotationModeMethod'intheon-linedocumentation)toturnonandofftheabilityoftheusertodrawonthedrawinglayer.Therearecorrespondingevents,AnnotationModeStarting('AnnotationModeStartingEvent'intheon-linedocumentation)andAnnotationModeEnding('AnnotationModeEndingEvent'intheon-linedocumentation).YoucanalsocustomizewhatoccursusingtheOnAnnotationModeStarting('OnAnnotationModeStartingMethod'intheon-linedocumentation)andOnAnnotationModeEnding('OnAnnotationModeEndingMethod'intheon-linedocumentation)methods.

Bydefaultathinblacklineisdrawn.Youcanchangethisandyoucanhavethecomponentdisplayadialogfortheuser

Spread Windows Forms Developer’s Guide 256

Copyright © GrapeCity, inc. All rights reserved.

Page 258: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

toselectthedrawingpenorstencilorbitmappattern.

UsetheCloseFigureparameterifyouwanttoclosethedrawingbetweenthestartandendpointswithastraightline.

YoucanusetheCancelAnnotationMode('CancelAnnotationModeMethod'intheon-linedocumentation)tocancelannotationmodeandreturntonormalcelleditingmode.

Formoreinformationonbuilt-inandcustomshapesthatcanalsobeplacedonthedrawinglayer,refertoWorkingwithShapesinCode.

Allowing the User to Draw with a Tablet PC

Spreadprovidesalimitedsetoffunctionalityinsupportof"inking"onTabletPCsthatareenabledwithMicrosoft’sTabletPCSDK.MicrosoftWindowsXPTabletPCEditionisasupersetoftheWindowsXPProfessionaloperatingsystemthataddspen-basedcapabilitiestofullnotebookcomputers.ThisfeatureinSpreadiscalled"inknotation".Inthisversioninkingonagivenviewportofthespreadsheetisallowed.

Thedrawingfeatureallowstheuseofapen(stylus)ontheTabletPCfordrawingandwritingonthespreadsheet.Thisprocess,sometimescalledinking,allowsuserstowriteindigitalink,whichappearsasnatural-lookinghandwritingonthescreen.Thespreadsheetsavestheinknotation.

GettingSetUp

Beforeyoucanusethisfeature,youmustperformthesesteps:

1. GototheMicrosoftsiteanddownloadthelatestversionTabletPCSDK.2. MakesuretheInkassemblyisintheGACbeforerunningtheStartInkNotationmethodinSpread.

UsingInkNotation

Touseinknotation,useoneoftheFpSpread.StartInkNotation('StartInkNotationMethod'intheon-linedocumentation)methods.Therearevariousoverloadstoallowyoutospecifytheviewport,alpha-blending,andbackgroundcoloroftheinkviewport,asfollows:

Thedefaultsettingthatspecifiestheactiveviewportastheviewportthatcanbeinkedin.Youspecifytheviewportthatwillallowinking.Youcanspecifythebackgroundcolorandalpha-blending(transparency)toallowyoutohighlighttheinkingviewportandseethespreadsheetunderneath.

WhenyoucalltheStartInkNotationmethod,SpreadcheckstoseeiftheInkassemblyisintheGAC.Ifitcannotfindit,themethodreturnsFalseandgoesnofurther.Ifitisthere,itloadsitandthenitloadstheFarPoint.Inkassembly(whichisinstalledwithSpread,butisnotloadeduntilnow).SpreadattemptstoloadFpInkdynamicallyatruntime,anditwillsucceedifFpInkisintheGAC,alongwithMicrosoft.Ink(theMSInkassembly).Microsoft.Inkispartofthe

Spread Windows Forms Developer’s Guide 257

Copyright © GrapeCity, inc. All rights reserved.

Page 259: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

MicrosoftTabletPCSDK.

Wheninking,thecursorchangestoadrawingpoint;youcandrawwiththestylus.Youfinishdrawingbyclickingtherightmousebuttontocallupthecontextmenu.ClickSaveNotationtosavethenotation,theinkingthatyouhavedone,totheSpreadcomponent.Thenotationissavedasa"shape"residingoverapartofthespreadsheet.Inkingisdoneonthedrawing/presentationspacelayer,sosimilartoshapes,theinkingisdrawnontopofthespreadsheet.Itisdrawnonlyintheviewport,notovertheheadersorscrollbarsorotherpartsoftheSpreadcomponent.Itappearsasashape,soitcanbeselected,moved,rotated,andresized.Whenitissaved,itisgivenanamebeginningwith"inkShape"andauniquenumber.

Whenyouwanttoerasewhatyouhavedone,right-clicktogetthecontextmenuandselectEraseMode,andthestylusbecomesaneraser,ormoreaccuratelyaselectorofwhatgetserased.Ifyouclickonastrokeorpartofaninknotation,iterasesthatsegment.Ifyouwriteincursiveandallthenotationiscontinuous,thenifselected,theentirenotationiserased.Thecontextmenuchoice,ClearNotation,clearstheentirenotation,regardlessofthenumberofdiscontinuousstrokes.

Ininknotation,thecursorchangestoapenpointwiththethicknessandcolor(blackisthedefault)ofthepen.

Whentheuserright-clicksonthemouse,acontextmenuisdisplayedasshowninthefollowingfigure.

TheInkModeisdisplayedcheckedwhiletheuserisinking(orwritingordrawing).InEraseMode,theuseriserasingtheinkingpreviouslydone,whicherasesthesegmentorstrokethatisclickedwheninEraseMode.WithSaveNotation,theuseracceptstheinknotationanditispermanentlydisplayedonthesheet.TheClearNotationclearsalloftheinknotationdrawnsincethelastsave.

Creating Camera Shapes

YoucancreateasnapshotofarangeofcellsandusethatasashapeintheSpreadcontrol.Thecellrangecancontainothershapesincludingcharts.Thefollowingimagedisplaysacamerashapethatcontainsachart.

FormoreinformationaboutusingtheSpreadDesignertoaddcamerashapes,seetheInsertMenu(on-line

Spread Windows Forms Developer’s Guide 258

Copyright © GrapeCity, inc. All rights reserved.

Page 260: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)topic.Ingeneral,propertiesthatapplytotheinterioroftheshape,donotapplytothecamerashape.

Thecamerashapecannotuseanothercamerashape.

UsingCode

1. CreateacamerashapeobjectbyusingtheSpreadCameraShape('SpreadCameraShapeClass'intheon-linedocumentation)class.

2. SpecifytherangeofcellsthatwillbecometheshapewiththeFormulaproperty.3. Setanyothershapeproperties.4. Addthecamerashapetothesheet.

Example

Thisexamplecreatesabluetriangle,addstexttoacell,andcreatesacamerashapethatincludesboth.Thefollowingimagedisplaysacamerashapethatcontainsatriangleshapeandacellwithtext.

C#fpSpread1.Sheets[0].Cells[1, 3].Text = "Test";FarPoint.Win.Spread.DrawingSpace.TriangleShape a = new FarPoint.Win.Spread.DrawingSpace.TriangleShape();a.BackColor = Color.Blue;fpSpread1.ActiveSheet.AddShape(a, 1, 1);FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape test = new FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape();test.Formula = "B1:D6";test.Location = new System.Drawing.Point(20, 20);fpSpread1.Sheets[0].AddShape(test);

VBFpSpread1.Sheets(0).Cells(1, 3).Text = "Test"Dim a As New FarPoint.Win.Spread.DrawingSpace.TriangleShapea.BackColor = Color.BlueFpSpread1.ActiveSheet.AddShape(a, 1, 1)Dim test As New FarPoint.Win.Spread.DrawingSpace.SpreadCameraShape()test.Formula = "B1:D6"test.Location = New System.Drawing.Point(20, 20)FpSpread1.Sheets(0).AddShape(test)

UsingtheSpreadDesigner

Spread Windows Forms Developer’s Guide 259

Copyright © GrapeCity, inc. All rights reserved.

Page 261: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Selectablockofcellsinthedesigner.2. SelecttheInsertmenu.3. Selectthecamerashapeicon.4. Clickontheshapetomoveit.5. TheDrawingToolsmenuwithadditionaloptionsisdisplayed.6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Spread Windows Forms Developer’s Guide 260

Copyright © GrapeCity, inc. All rights reserved.

Page 262: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Row or Column Interaction

YoucancustomizevariousaspectsofuserinteractionofthespreadsheetintheSpreadcomponent.Thetasksthatrelatetocustomizingtheuserinteractionwiththespreadsheetinclude:

AllowingUserInteractionwithRowsandColumnsManagingFilteringofRowsofUserDataManagingGroupingofRowsofUserDataManagingOutlines(RangeGroups)ofRowsandColumnsManagingSortingofRowsofUserData

Youcancustomizewhatyouallowtheusertodo.Thereareseveralfeaturesthatarecoveredinvarioustopicsinthissection,buttheyaresummarizedinonetopicforeasyreferenceinAllowingUserFunctionality.

Tocustomizethestaticappearanceofrowsandcolumns,refertoCustomizingtheRoworColumnAppearance.

Tocustomizeotheraspectsofinteractivityatthesheetlevel,refertoCustomizingSheetInteractionandwithindividualcells,refertoCustomizingInteractioninCells.

Fordetailsonthespreadsheetobjects,refertothesemembersintheAssemblyReference:

Row('RowClass'intheon-linedocumentation)Rows('RowsClass'intheon-linedocumentation)AlternatingRow('AlternatingRowClass'intheon-linedocumentation)AlternatingRows('AlternatingRowsClass'intheon-linedocumentation)Column('ColumnProperty'intheon-linedocumentation)Columns('ColumnsClass'intheon-linedocumentation)

Allowing User Interaction with Rows and Columns

Youcancustomizetheuserinteractionwithrowsandcolumns.Tocustomizethisaspectofuserinteraction,youmayperformthefollowingtasks:

AllowingtheUsertoEnterDatainRowsorColumnsAllowingtheUsertoMoveRowsorColumnsAllowingtheUsertoResizeRowsorColumnsSettingFixed(Frozen)RowsorColumnsSettingupPreviewRows

Formoreinformationaboutinteractingwithrowsandcolumns,referto:

ResizingtheRoworColumntoFittheDataAllowingtheUsertoFilterRowsCustomizingUserSelectionofDataAllowingtheUsertoAutomaticallySortRows

Forinformationontheunderlyingmodelresponsibleforrowsandcolumns,refertotheUnderstandingtheAxisModel.

Formoreinformation,refertotheRow('RowClass'intheon-linedocumentation),Rows('RowsClass'intheon-linedocumentation),AlternatingRow('AlternatingRowClass'intheon-linedocumentation),AlternatingRows('AlternatingRowsClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),andColumns('ColumnsClass'intheon-linedocumentation)objectsintheAssemblyReference.

Allowing the User to Enter Data in Rows or Columns

Spread Windows Forms Developer’s Guide 261

Copyright © GrapeCity, inc. All rights reserved.

Page 263: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanrestricttheportionofthesheetinwhichtheusercanenterdata.Youcansetthesizeofthesheetintermsofrowsandcolumns.Youcanhiderowsorcolumnssotheuserdoesnothaveaccesstothematall,orsetthemasfrozensothatuserscanseethembutcannotmovethemoutofviewbyscrolling.Formoreinformationonhiddenrowsandcolumns,refertoShowingorHidingaRoworColumn.Forinformationonfrozenrowsandcolumns,refertoSettingFixed(Frozen)RowsorColumns.Forinformationonsettingthenumberofrowsandcolumnsinasheet,refertoCustomizingtheNumberofRowsorColumns.

Youcanrestricttheuserfromenteringdatabeyondthedataalreadyinthesheet.SettheRestrictRows('RestrictRowsProperty'intheon-linedocumentation)propertyandRestrictColumns('RestrictColumnsProperty'intheon-linedocumentation)propertytorestrictorallowtheusertoenterdatainaroworcolumnonasheetthatismorethanoneroworcolumnbeyondthelastroworcolumnthatcontainsdata.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selectthesheet.2. IntheBehaviorcategory,selecttheRestrictRows('RestrictRowsProperty'intheon-linedocumentation)ortheRestrictColumns('RestrictColumnsProperty'intheon-linedocumentation)property.

3. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue(TrueorFalse).Repeatthisforeachproperty.

UsingCode

SettheRestrictRows('RestrictRowsProperty'intheon-linedocumentation)orRestrictColumns('RestrictColumnsProperty'intheon-linedocumentation)propertyforthesheet.

Example

C#fpSpread1.ActiveSheet.RestrictColumns = true;fpSpread1.ActiveSheet.RestrictRows = true;

VBFpSpread1.ActiveSheet.RestrictColumns = TrueFpSpread1.ActiveSheet.RestrictRows = True

UsingtheSpreadDesigner

1. SelectSheetfromthedrop-downcombolistlocatedonthetoprightsideoftheDesigner.2. FromtheBehaviorsection,selectTrueorFalseforRestrictRowsorRestrictColumns.3. FromtheFilemenu,selectSaveandExittosavethechanges.

Allowing the User to Move Rows or Columns

Youcanallowtheusertodragandmoverowsorcolumns.SettheAllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)propertytoallowtheusertomoverowsandtheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)propertytoallowtheusertomovecolumns.Ifyouwishtoallowtheusertomovemultiplerowsorcolumns,alsosettheAllowRowMoveMultiple('AllowRowMoveMultipleProperty'intheon-linedocumentation)orAllowColumnMoveMultiple('AllowColumnMoveMultipleProperty'intheon-linedocumentation)property.

Spread Windows Forms Developer’s Guide 262

Copyright © GrapeCity, inc. All rights reserved.

Page 264: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanhidethedragbandwhilemovingtheroworcolumnwiththeShowDragBandOnMoving('ShowDragBandOnMovingProperty'intheon-linedocumentation)property.

Fortheusertomoverowsorcolumns,theyleftclickontheheaderoftheroworcolumntomoveanddragtheheaderbackorforthovertheheaderareaandreleasethemouseovertheheaderofthedesireddestination(formultiplerowsorcolumns,selectthemfirst).Theroworcolumnthatisbeingmovedisshowninatransparentcloneattachedtothepointer,asshowninthisfigure,wherethefourthcolumnisbeingmovedtotheleft.

MovingtheRoworColumninCode

Torelocatearow,usetheSheetView.MoveRowmethod;toremovemultiplerowsatatime,usetheSheetView.RemoveRowsmethod.Torelocateacolumn,usetheSheetView.MoveColumnmethod;toremovemultiplecolumnsatatime,usetheSheetView.RemoveColumnsmethod.Alternatively,youcanusetheDefaultSheetAxisModel.Movemethod.

YoucanusetheGetColumnFromTagmethodtofindcolumnsbasedontheirTagproperty,whichyoucansetprogrammaticallytowhateveryouwant.YoucandothesamewiththeGetRowFromTagmethodforrows.

YoucanremovemorethanonecolumnatatimeusingtheRemovemethodonarangeofcolumnsorrows.Forexample,

FpSpread1.Sheets(0).Columns(1,5).Remove()

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. IntheMisccategory,selecttheAllowRowMoveortheAllowColumnMoveproperty.3. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue(TrueorFalse).Repeatthisforeach

property.

UsingCode

SettheAllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)orAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)propertyfortheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Spread Windows Forms Developer’s Guide 263

Copyright © GrapeCity, inc. All rights reserved.

Page 265: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexampleallowstheusertomovecolumnsorrows.

C#fpSpread1.AllowRowMove = true;fpSpread1.AllowColumnMove = true;

VBFpSpread1.AllowRowMove = TrueFpSpread1.AllowColumnMove = True

UsingtheSpreadDesigner

1. SelectSpreadfromthedrop-downcombolistlocatedonthetoprightsideoftheDesigner.2. FromtheMiscsection,selectTrueorFalseforAllowRowMoveorAllowColumnMove.3. FromtheFilemenu,selectSaveandExittosavethechanges.

Allowing the User to Resize Rows or Columns

Youcanallowtheusertoadjustthesizeofaroworcolumninthesheet.SettheResizable('ResizableProperty'intheon-linedocumentation)propertyfortherowtoallowtheusertoresizerowsandtheResizable('ResizableProperty'intheon-linedocumentation)propertyforthecolumntoallowtheusertoresizecolumns.Theusercanalsodouble-clickontheborderbetweenthecolumnheaderstoresizethecolumntomatchthewidthoftheheadertext.

Foruserstoresizerowsorcolumns,theyleftclickontheedgeoftheheaderoftheroworcolumntoresizeanddragthesideoftheheaderandreleasethemouseatthedesiredsize.Whiletheleftmousebuttonisdown,abarisdisplayedalongwiththeresizepointerasshowninthefollowingfigure.Besuretoclickontherightedgeofthecolumnandbottomedgeoftherow.

Double-clickingontheroworcolumnedgeresizestheroworcolumntofitthetallestorwidestcontentofthatroworcolumn(preferredheightorwidth).Wrappedtextinthecolumnisignoredwhendouble-clickingonacolumndivider.Unwrappedtextisignoredwhendouble-clickingonarowdivider.YoucanspecifytheautomaticfitbehaviorwiththeAutoFitColumnOptions('AutoFitColumnOptionsProperty'intheon-linedocumentation)orAutoFitRowOptions('AutoFitRowOptionsProperty'intheon-linedocumentation)property.

Bydefault,userresizingofrowsorcolumnsisallowedforrowsandcolumnsinthedataareaandnotallowedfortheheaderarea.Incode,youcanresizerowandcolumnheaders,notjustdataarearowsandcolumns.YoucanoverridethedefaultbehaviorusingtheResizable('ResizableProperty'intheon-linedocumentation)propertyandpreventtheuserfromresizing.

Spread Windows Forms Developer’s Guide 264

Copyright © GrapeCity, inc. All rights reserved.

Page 266: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingcodeturnsonresizingforasinglecolumnintherowheader:

spread.Sheets[0].RowHeader.Columns[0].Resizable = true;

Thefollowingcodeturnsonresizingforallcolumnsintherowheader:

spread.Sheets[0].RowHeader.Columns.Default.Resizable = true;

YoucandetermineifaroworcolumncanberesizedbytheuserwiththesemethodsintheSheetViewclass:

GetColumnSizeable('GetColumnSizeableMethod'intheon-linedocumentation)SetColumnSizeable('SetColumnSizeableMethod'intheon-linedocumentation)GetRowSizeable('GetRowSizeableMethod'intheon-linedocumentation)SetRowSizeable('SetRowSizeableMethod'intheon-linedocumentation)

Toresizetherowsorcolumnbasedonthesizeofthedata,refertoResizingtheRoworColumntoFittheData.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selectSheet.2. InthePropertieswindow,selectColumnorselectRow,andclickonthebuttonfortheCell,Column,andRowEditor.

3. IntheEditor,selectacolumnorarow.4. SelecttheResizableproperty.5. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue(TrueorFalse).Repeatthisforeachproperty.

UsingCode

SettheResizable('ResizableProperty'intheon-linedocumentation)propertyfortheroworResizable('ResizableProperty'intheon-linedocumentation)propertyforthecolumn.

Example

Thefollowingexamplesetsthesheettoallowthefirstrowandfirstcolumntoberesizable.

C#fpSpread1.Sheets[0].Columns[0].Resizable = true;fpSpread1.Sheets[0].Rows[0].Resizable = true;

VBFpSpread1.Sheets(0).Columns(0).Resizable = TrueFpSpread1.Sheets(0).Rows(0).Resizable = True

UsingtheSpreadDesigner

1. SelectSheetfromthedrop-downcombolistlocatedonthetoprightsideoftheDesigner.2. FromtheAppearancecategory,selectColumnorselectRow,andclickonthebuttonfortheCell,Column,andRowEditor.

3. IntheEditor,selectacolumnorarow.4. SelecttheResizableproperty.5. Selectthevaluefromthedrop-downlist(eitherTrueorFalse).6. FromtheFilemenu,selectSaveandExittosavethechanges.

Spread Windows Forms Developer’s Guide 265

Copyright © GrapeCity, inc. All rights reserved.

Page 267: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Setting Fixed (Frozen) Rows or Columns

Youcanfreeze(makeunscrollable)anumberofeitherrowsorcolumnsorbothinasheet.Youcanfreezeanynumberoftoprows,calledleadingrowsoranynumberofleft-mostcolumns,calledleadingcolumns.Youcanalsofreezeanynumberofthetrailingbottomrowsortrailingright-mostcolumns.Thefrozenleadingrowsandcolumnsstayatthetopandleftoftheviewregardlessofthescrolling.Thefrozentrailingrowsandcolumnsstayatthebottomandrightoftheviewregardlessofthescrolling.

Thefigurebelowdisplaysonefrozentrailingrowandcolumnthatstayinview:

Propertiesinvolvedwithfrozenrowsandcolumnsare:

FrozenRowCount('FrozenRowCountProperty'intheon-linedocumentation)FrozenColumnCount('FrozenColumnCountProperty'intheon-linedocumentation)FrozenTrailingColumnCount('FrozenTrailingColumnCountProperty'intheon-linedocumentation)FrozenTrailingRowCount('FrozenTrailingRowCountProperty'intheon-linedocumentation)

Frozenrowsorcolumnsarenonscrollableatruntime,butduringdesigntime,theyarestillscrollable.

Trailingfrozenrowsandcolumnsarenotprintedrepeatedlyatthebottomandrightofeverypage,butprintonlyonceasthelastrowandcolumn.Leadingfrozenrowsandcolumnscanberepeated.Formoreinformationaboutrepeatingrowsandcolumns,refertoRepeatingRowsorColumnsonPrintedPages.

Theleadingfrozenroworcolumnisaseparateviewportwhilethetrailingfrozenroworcolumnisalsoaseparateviewport.Indexesforthefrozenviewportsare:

Formoreinformationaboutviewports,refertoCustomizingViewports.

Spread Windows Forms Developer’s Guide 266

Copyright © GrapeCity, inc. All rights reserved.

Page 268: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Inhierarchicaldisplays,frozenleadingrowsandcolumnsarepossibleinchildsheets.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSheet.2. IntheSheetViewCollectionEditor(Appearancesection),selecttheFrozenRowCount,FrozenColumnCount,FrozenTrailingRowCount,ortheFrozenTrailingColumnCountproperty.

3. Typeavalue.(Thedefaultis0.)Repeatthisforeachproperty.

UsingCode

SettheFrozenRowCount('FrozenRowCountProperty'intheon-linedocumentation),FrozenColumnCount('FrozenColumnCountProperty'intheon-linedocumentation),FrozenTrailingColumnCount('FrozenTrailingColumnCountProperty'intheon-linedocumentation),ortheFrozenTrailingRowCount('FrozenTrailingRowCountProperty'intheon-linedocumentation)propertyforthesheet.

Example

C#fpSpread1.Sheets[0].FrozenColumnCount = 2;fpSpread1.Sheets[0].FrozenRowCount = 2;fpSpread1.Sheets[0].FrozenTrailingColumnCount = 2;fpSpread1.Sheets[0].FrozenTrailingRowCount = 2;

VBFpSpread1.Sheets(0).FrozenColumnCount = 2FpSpread1.Sheets(0).FrozenRowCount = 2FpSpread1.Sheets(0).FrozenTrailingColumnCount = 2FpSpread1.Sheets(0).FrozenTrailingRowCount = 2

UsingtheSpreadDesigner

1. SelectSheetfromthedrop-downcombolistlocatedonthetoprightsideoftheDesigner.2. FromtheSheetViewCollectionEditor,typeanumberforFrozenColumnCount,FrozenRowCount,FrozenTrailingColumnCount,orFrozenTrailingRowCount.

3. FromtheFilemenu,selectSaveandExittosavethechanges.

Setting up Preview Rows

Youcandisplayapreviewrowtoprovidemoreinformationaboutarecord.Thepreviewrowisdisplayedbelowtherowforwhichitprovidesinformation.Youcanspecifycolorsandotherformattingforthepreviewrowaswell.Thefollowingfigureshowspreviewrowswithtext(therowswithoutrowheadernumbers):

Spread Windows Forms Developer’s Guide 267

Copyright © GrapeCity, inc. All rights reserved.

Page 269: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SetthePreviewRowInfo('PreviewRowInfoClass'intheon-linedocumentation)Visible('VisibleProperty'intheon-linedocumentation)propertytotruetoseethepreviewrow.UsethePreviewRowInfo('PreviewRowInfoClass'intheon-linedocumentation)ColumnIndex('ColumnIndexProperty'intheon-linedocumentation)propertytospecifywhichcolumn’stextyouwanttoseeinthepreviewrow.Ifthecelltextisnull,thenthepreviewrowcontentisnull.YoucanalsousethePreviewRowFetch('PreviewRowFetchEvent'intheon-linedocumentation)eventtospecifythepreviewrowtext.YoucansetvariouspropertiesforthePreviewRowInfo('PreviewRowInfoClass'intheon-linedocumentation)classsuchasBackColor('BackColorProperty'intheon-linedocumentation),Border('BorderProperty'intheon-linedocumentation),Font('FontProperty'intheon-linedocumentation),andsoon.

Thecolumnheaderorfooterdoesnotdisplayapreviewrow.Achildsheetinahierarchydoesnotinheritthepreviewrowsettingsfromtheparentsheet.Ifthesheetwiththepreviewrowhaschildsheets,thepreviewrowisshownbelowtherowswithplussymbols.Ifarowthathasapreviewrowhasspannedrows,thespanisnotdisplayed.Thepreviewrowisread-only(nokeyboardormouseevents,focus,and/orselections).

ThepreviewrowisprintedandexportedtoPDFwhenprintingorprintingtoPDF.Theheightofthepreviewrowcanbeincreasedtoshowallthepreviewrowtext.Iftherearemultiplehorizontalpages,thepreviewrowcontentisdisplayedintheleft-mostpage.

TheAPImembersinvolvedinthisfeatureinclude(seethePreviewRowInfo('PreviewRowInfoClass'intheon-linedocumentation)classforacompletelist):

PreviewRowInfo('PreviewRowInfoClass'intheon-linedocumentation)classColumnIndex('ColumnIndexProperty'intheon-linedocumentation)propertyBackColor('BackColorProperty'intheon-linedocumentation)propertyVisible('VisibleProperty'intheon-linedocumentation)property

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSheet.2. IntheSheetViewCollectionEditor(Miscsection),selectthePreviewRowInfooptionandsetproperties.

UsingCode

SetthePreviewRowInfoclasspropertiesforthesheet.

Example

Thisexamplesetspreviewrowproperties.

C#private void Form1_Load(object sender, EventArgs e){FarPoint.Win.BevelBorder bord = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Red, Color.Blue);fpSpread1.Sheets[0].Cells[0, 1, 10, 1].Text = "Preview Row";fpSpread1.Sheets[0].PreviewRowInfo.Visible = true;fpSpread1.Sheets[0].PreviewRowInfo.BackColor = Color.BurlyWood;fpSpread1.Sheets[0].PreviewRowInfo.ForeColor = Color.Black;fpSpread1.Sheets[0].PreviewRowInfo.Border = bord;}

private void fpSpread1_PreviewRowFetch(object sender, FarPoint.Win.Spread.PreviewRowFetchEventArgs e){FarPoint.Win.Spread.SheetView sheetView = e.View.GetSheetView();

Spread Windows Forms Developer’s Guide 268

Copyright © GrapeCity, inc. All rights reserved.

Page 270: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

if (sheetView.SheetName == "Sheet1"){if (e.PreviewRowContent == string.Empty)e.PreviewRowContent = "The preview row content is empty";if ((e.Row + 1) % 2 == 0)e.PreviewRowContent = string.Format("Preview Row Content is: {0}", e.PreviewRowContent);}}

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim bord As New FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.DarkBlue, Color.Blue)FpSpread1.Sheets(0).Cells(0, 1, 10, 1).Text = "Preview Row"FpSpread1.Sheets(0).PreviewRowInfo.Visible = TrueFpSpread1.Sheets(0).PreviewRowInfo.BackColor = Color.BurlyWoodFpSpread1.Sheets(0).PreviewRowInfo.ForeColor = Color.BlackFpSpread1.Sheets(0).PreviewRowInfo.Border = bordEnd Sub

Private Sub FpSpread1_PreviewRowFetch(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.PreviewRowFetchEventArgs) HandlesFpSpread1.PreviewRowFetchDim sheetView As FarPoint.Win.Spread.SheetViewsheetView = e.View.GetSheetView()If sheetView.SheetName = "Sheet1" ThenIf (e.PreviewRowContent = String.Empty) Thene.PreviewRowContent = "The preview row content is empty"End IfIf ((e.Row + 1) / 2 = 0) Thene.PreviewRowContent = String.Format("Preview Row Content is: {0}", e.PreviewRowContent)End IfEnd IfEnd Sub

UsingtheSpreadDesigner

1. SelectSheetfromthedrop-downcombolistlocatedonthetoprightsideoftheDesigner.2. FromtheMiscsection,selectthePreviewRowInfooptiontosetproperties.3. FromtheFilemenu,selectSaveandExittosavethechanges.

Managing Filtering of Rows of User Data

Spreadprovidestwotypesoffiltering,simpleandenhanced.ThesimplefilteringisthestyleoffilteringprovidedinthisandpreviousreleasesofSpread.TheenhancedfilteringissimilartoExcel'sfilterfeature.

Eachtypeoffilteringprovidesawayforuserstochangedata'sappearanceortemporarilyhidedatabasedonconditionsthattheyspecify,asshowninthefollowingfigures.Thisfigureillustratesthesimplefilter.

Spread Windows Forms Developer’s Guide 269

Copyright © GrapeCity, inc. All rights reserved.

Page 271: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingfigureillustratestheenhancedfilter.

Ifyouprovideenhancedfiltering,youcanchoosetoofferafilterlisttoassistusersinsettinguptheirfilter,asshownintheprecedingfigure,orafilterbar,asshowninthefollowingfigure.

Spread Windows Forms Developer’s Guide 270

Copyright © GrapeCity, inc. All rights reserved.

Page 272: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SpecifythewayusersareallowedtofilterdatausingtheinstructionsinAllowingtheUsertoFilterRows.Youcancustomizemanyfeaturesforeachtypeoffiltering,aswellasthedisplayoffilteredrows,asdescribedinthefollowingsections.

CustomizingSimpleFilteringCustomizingEnhancedFiltering

UnderstandingSimpleRowFilteringandUnderstandingEnhancedRowFilteringdescribehowusersinteractwiththefilterfeaturesyoucreate.

Allowing the User to Filter Rows

Bydefault,thespreadsheetdoesnotallowtheusertofiltertherowsofaspreadsheet.Youcanturnonthisfeatureandallowrowfilteringforallorspecificcolumnsinasheet.Hiddenrowsarenotdisplayedeveniftheymatchthefiltercriteria.

UsetheHideRowFilter('HideRowFilterClass'intheon-linedocumentation)classorStyleRowFilter('StyleRowFilterClass'intheon-linedocumentation)classdependingonwhetheryouwanttohiderowsthatarefilteredorchangethestyleofthoserows.UsetheColumn.AllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)propertytoturnonfilteringforagivencolumn.

UsetheAutoFilterMode('AutoFilterModeProperty'intheon-linedocumentation)propertytospecifythetypeoffiltering.Youcanspecifythesimplefilterstyle(FilterGadget),theenhancedfilterstyle(EnhancedContextMenu),ortheenhancedfilterstylewithfilterbar(FilterBar).

Theusercanthenclicktheitemsinthedrop-downtofiltertherows.Tounderstandhowthefilteringworksfortheenduser,refertoUnderstandingSimpleRowFiltering.

Tounderstandtheotheraspectsoffilteringthatcanbecustomized,returntotheoverviewatManagingFilteringofRowsofUserData.

UsingCode

Spread Windows Forms Developer’s Guide 271

Copyright © GrapeCity, inc. All rights reserved.

Page 273: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Allowrowfiltering(hidingrowsthatarefilteredout)basedonvaluesinonecolumn.Makesurethecolumnheadersarevisible.(RefertoShowingorHidingHeaders.)

Selectthetypeofrowfiltering,usingtheHideRowFilter('HideRowFilterClass'intheon-linedocumentation)class,thenallowthatfilteringforaspecifiedcolumn,usingtheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)property.

Example

Thefollowingexamplesetsupsimplefilteringandassumesthatyouhavesomedatainthecells,eitherbyassigningvaluesorbindingtoadatasource.

C#fpSpread1.ActiveSheet.ColumnHeaderVisible = true;FarPoint.Win.Spread.HideRowFilter hideRowFilter = new FarPoint.Win.Spread.HideRowFilter(fpSpread1.ActiveSheet);fpSpread1.ActiveSheet.Columns[1,3].AllowAutoFilter = true;fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget;

VBFpSpread1.ActiveSheet.ColumnHeaderVisible = TrueDim hideRowFilter As New FarPoint.Win.Spread.HideRowFilter(FpSpread1.ActiveSheet)FpSpread1.ActiveSheet.Columns(1, 3).AllowAutoFilter = TrueFpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget

UsingtheSpreadDesigner

1. Selectacolumnbyclickingonthecolumnheader.2. SetAllowAutoFilterundertheMiscsectionofthePropertywindow.3. UsetheFilemenu,thenApplyandExittosavethechanges.

Customizing Simple Filtering

Youcancustomizemanythingsaboutsimplefiltering,includingthecontents,order,andappearanceofthefilterlist,andtheappearanceoffilterindicators.

Forinstructions,seethefollowingtopics.

UnderstandingSimpleRowFilteringSettingtheAppearanceofFilteredRowsCustomizingtheFilterListCreatingaCustomFilterSettingtheAppearanceofFilterIndicators

Understanding Simple Row Filtering

Thistopicsummarizeshowtheenduserinteractswiththesimplefilterfeature.

Onceyouhaverowfilteringappliedtoacolumn(asdescribedinAllowingtheUsertoFilterRows),anindicatorappearsinthecolumnheader.Thedifferentappearancesoftherowfilteringindicatoraresummarizedinthistable:

RowFilteringIndicator

Description

Spread Windows Forms Developer’s Guide 272

Copyright © GrapeCity, inc. All rights reserved.

Page 274: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Appearanceofheadercellwithnorowfiltering;thisoccurswhenthereisnorowfiltering,orwhenrowfilteringisoff

Appearanceofheadercellwithrowfilteringallowedbutnorowsfiltered;thisoccurswhenrowfilteringissetto(All)thusnotrestrictingrowsbasedonthecontentsofthiscolumn

Appearanceofheadercellwithrowfilteringallowedandsomerowsfilter;thisoccurswhenrowfilteringsomeoftherowsbasedonthecontentsofthiscolumn

Thecolumnheaderdisplaystherowfilteringindicator,adrop-downarrowsymbol.Clickingonthisindicatorprovidesadrop-downlistofthefilterchoices.Pickinganitemfromthislistcausesthatfiltertobeappliedandalltherowsmeetingthatcondition(inthiscolumn)arefiltered.Thedefaultdrop-downlistcontainsalltheuniquetextvaluesincellsinthiscolumn.Thefigurebelowshowsanexampleofadrop-downlistoffilters.

Thetablebelowsummarizestheentriesinthedrop-downlist.

FilterListItem

Description

(All) Includeorallowalltherowsinthiscolumnregardlessofcontent

[contents] Includeorallowonlythoserowswiththisparticularcellcontentinthiscolumn

(Blanks) Includeorallowonlyrowsthathaveblanks(emptycells)inthiscolumn

(NonBlanks) Includeorallowonlyrowsthathavenon-blanks(non-emptycells)inthiscolumn,inotherwordsanycellthathasanycontent

Youcancustomizethewaythislistisdisplayed,asdescribedinCustomizingtheFilterList.Youcancreatecustomfilterstoaddtothedrop-downlist,asdescribedinCreatingaCustomFilter.

Foragivensheet,multiplecolumnsmayhavefilteringset.Thedifferentcolumnsmayhavedifferentfilters,dependingonthecontentsofcellsinthatcolumn.Theresultsoffilteringwouldbesimilartowhatonewouldexpectwithprimaryandsecondarykeyswhensortingdata.Thechoicefromthefilterlistfromtheinitialcolumnwouldfiltersomerows,leavingthechoicesinthesubsequentfilterlisttobeasubsetofthetotalpossible.Byselectingchoicesfrommorethanonefilter,theresultsincludeonlythoserowsthatsatisfyalltheselectedfilteringconditions.

Formoreinformationonsettinguprowfilters,refertoAllowingtheUsertoFilterRows.Formoreinformationonsettingtheappearanceoffilteredrows,refertoSettingtheAppearanceofFilteredRows.

Tounderstandtheaspectsoffilteringthatcanbecustomized,returntotheoverviewatManagingFilteringofRowsofUserData.

Setting the Appearance of Filtered Rows

Youcancustomizetheappearanceoffilteredrowstoallowyoutoseewhichrowsarefilteredinandwhichonesarefilteredout.Rowsthatmeetthecriteriafortherowfilteraresaidtobe"filteredin";rowsthatdonotmeetthecriteriaaresaidtobe"filteredout."Filteringmayeitherhidetherowsthatarefilteredout,orchangethestylesforbothfiltered-inandfiltered-outrows.Ifyouwantthestylestochange,sothatyoucancontinuetodisplayallthedatabuthighlightrowsthatmatchsomecriteria,thenyoumustdefineafiltered-instyleandafiltered-outstyle.

Spread Windows Forms Developer’s Guide 273

Copyright © GrapeCity, inc. All rights reserved.

Page 275: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoudefinestylesbycreatingNamedStyleobjectsthatcontainallthestylesettings.Thenwhentherowfilteringisappliedtoacolumn,youspecifythosedefinedstylesettingsbyreferringtotheNamedStyleobjectforthatfilteredstate.

Inthefigurebelow,fromtheexamplecodegivenhere,thechoiceofGibsoninthefilteritemsresultsintherowswiththatfilteritembeingformattedwithoneappearancestyleandalltheotherrowsbeingformattedwithanotherappearancestyle.

Formoreinformationabouttherowfilterthatusesstyles,refertotheStyleRowFilter('StyleRowFilterClass'intheon-linedocumentation)class.

UsingCode

1. DefinethestylesettingsinaNamedStyleobject.2. ApplytheNamedStyleobjecttothefilter.3. Allowfilteringforaspecifiedcolumnorcolumns.

Example

Thisexamplecreatesafilter.

C#// Define styles to apply to filtered rows.FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();inStyle.BackColor = Color.LightCyan;inStyle.ForeColor = Color.DarkRed;

Spread Windows Forms Developer’s Guide 274

Copyright © GrapeCity, inc. All rights reserved.

Page 276: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

outStyle.BackColor = Color.LemonChiffon;outStyle.ForeColor = Color.Green;

// Create a new filter column definition for the first column (Definition of the default setting).FarPoint.Win.Spread.FilterColumnDefinition fcdef = new FarPoint.Win.Spread.FilterColumnDefinition(0);// Create a StyleRowFilter object (Style filter), and add the above filtering column definition.FarPoint.Win.Spread.StyleRowFilter styleFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, inStyle, outStyle);styleFilter.AddColumn(fcdef);// Set the row filtering object you created to sheets.fpSpread1.ActiveSheet.RowFilter = styleFilter;fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget;

// Fill the data area with text data.fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();fpSpread1.ActiveSheet.SetText(0, 0, "Fender");fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");fpSpread1.ActiveSheet.SetText(2, 0, "Fender");fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");fpSpread1.ActiveSheet.SetText(5, 0, "Yamaha");fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");fpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II");fpSpread1.ActiveSheet.SetColumnWidth(0, 90);fpSpread1.ActiveSheet.SetColumnWidth(1, 210);

VB' Create a named style object for Filter-In rows.Dim inStyle As New FarPoint.Win.Spread.NamedStyleDim outStyle As New FarPoint.Win.Spread.NamedStyleinStyle .BackColor = Color.LightCyaninStyle .ForeColor = Color.DarkRedoutStyle.BackColor = Color.LemonChiffonoutStyle.ForeColor = Color.Green

' Create a new filter column definition for the first column (definition of the default setting).Dim fcdef As New FarPoint.Win.Spread.FilterColumnDefinition(0)' Create a StyleRowFilter object (Style filter), and add the above filtering column definition.Dim styleFilter As New FarPoint.Win.Spread.StyleRowFilter(FpSpread1.ActiveSheet, inStyle, outStyle)styleFilter.AddColumn(fcdef)' Set the row filtering object you created to sheets.FpSpread1.ActiveSheet.RowFilter = styleFilterFpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget

' Fill the data area with text data.

Spread Windows Forms Developer’s Guide 275

Copyright © GrapeCity, inc. All rights reserved.

Page 277: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.TextCellTypeFpSpread1.ActiveSheet.SetText(0, 0, "Fender")FpSpread1.ActiveSheet.SetText(1, 0, "Gibson")FpSpread1.ActiveSheet.SetText(2, 0, "Fender")FpSpread1.ActiveSheet.SetText(3, 0, "Ibanez")FpSpread1.ActiveSheet.SetText(4, 0, "Gibson")FpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA")FpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC")FpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus")FpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX")FpSpread1.ActiveSheet.SetText(3, 1, "AGS83B")FpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme")FpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II")FpSpread1.ActiveSheet.SetColumnWidth(0, 90)FpSpread1.ActiveSheet.SetColumnWidth(1, 210)

Customizing the Filter List

Whentheuserclicksontherowfilterindicator,adrop-downlistoffilteritemsisdisplayed.Youcancustomizethatdrop-downlistintheseways:

DefiningtheContentsoftheFilterItemListDefiningtheOrderoftheItemsintheFilterItemListSettingtheAppearanceoftheDisplayoftheFilterItemList

Theusercanthenclicktheitemsinthedrop-downtofiltertherows.Formoreinformationonusingtherowfilters,refertoUnderstandingSimpleRowFiltering.

Defining the Contents of the Filter Item List

Youcanfilterallrowsinasheetbasedoncriteriaofthecontentsofaparticularcellinacolumn.Tosetuprowfilters,followthesebasicsteps:

1. Definefiltercriteria2. Definefilterresultbehavior(changestylesofrowsorhiderows)3. Defineanycustomfilters4. Applyfilter

Definethefiltercriteriaforeachcolumn,whicharecalledthecolumnfilterdefinitions.Thisisthecriteriathatisusedtofilterrowsbasedonthecontentsofthecolumnandisassignedtoanindividualcolumn.Combinetheseindividualcolumncriteriaorcolumnfilterdefinitionsintoacollection.

Definetheappearanceoftherowstobefiltered,eitherbydefiningafiltered-instyleandafiltered-outstyleorbydecidingtohidethefilteredoutrows.Formoreinformationaboutstylesandtheappearanceofrowsoffiltereddata,refertoSettingtheAppearanceofFilteredRows.

Youcancustomizethewordsthatappearinthefollowingchoicesinthedrop-downlist,usingthecorrespondingpropertiesintheDefaultRowFilter('DefaultRowFilterClass'intheon-linedocumentation)class.

All-AllString('AllStringProperty'intheon-linedocumentation)PropertyBlanks-BlanksString('BlanksStringProperty'intheon-linedocumentation)PropertyNonBlanks-NonBlanksString('NonBlanksStringProperty'intheon-linedocumentation)Property

Applytherowfilteringtoallorspecificcolumnsinasheet(whichappliesthecolumnfilterdefinitioncollectiontothe

Spread Windows Forms Developer’s Guide 276

Copyright © GrapeCity, inc. All rights reserved.

Page 278: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

columnsofthatsheet).

UsingCode

1. Definethecolumnfilterdefinitions.2. Groupthemintoacollection.3. Definethestyles.4. Applytherowfilter.

Example

Thefollowingexamplesetsupfilteredrows,includingfilteredrowstyles.

C#// Declare the row filter and column definitions.FarPoint.Win.Spread.FilterColumnDefinitionCollection fcdc = new FarPoint.Win.Spread.FilterColumnDefinitionCollection();FarPoint.Win.Spread.FilterColumnDefinition fcd1 = new FarPoint.Win.Spread.FilterColumnDefinition(2);FarPoint.Win.Spread.FilterColumnDefinition fcd2 = new FarPoint.Win.Spread.FilterColumnDefinition(3);FarPoint.Win.Spread.FilterColumnDefinition fcd3 = new FarPoint.Win.Spread.FilterColumnDefinition(1);// Add column filter definitions to a collection.fcdc.Add(fcd1);fcdc.Add(fcd2);fcdc.Add(fcd3);FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();inStyle.BackColor = Color.Yellow;outStyle.BackColor = Color.Aquamarine;// Apply styles and column filter definitions to the row filter.FarPoint.Win.Spread.StyleRowFilter rowFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet,inStyle,outStyle);// Apply the column definition to the filter.rowFilter.ColumnDefinitions = fcdc;// Apply the row filter to the sheet.fpSpread1.ActiveSheet.RowFilter = rowFilter;fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget;

VB' Declare the row filter and column definitionsDim fcdc As New FarPoint.Win.Spread.FilterColumnDefinitionCollection()Dim fcd1 As New FarPoint.Win.Spread.FilterColumnDefinition(2)Dim fcd2 As New FarPoint.Win.Spread.FilterColumnDefinition(3)Dim fcd3 As New FarPoint.Win.Spread.FilterColumnDefinition(1)' Add column filter definitions to a collection.fcdc.Add(fcd1)fcdc.Add(fcd2)fcdc.Add(fcd3)Dim inStyle As New FarPoint.Win.Spread.NamedStyle()Dim outStyle As New FarPoint.Win.Spread.NamedStyle()inStyle.BackColor = Color.YellowoutStyle.BackColor = Color.Aquamarine

Spread Windows Forms Developer’s Guide 277

Copyright © GrapeCity, inc. All rights reserved.

Page 279: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

' Apply styles and column filter definitions to the row filter.Dim rowFilter As New FarPoint.Win.Spread.StyleRowFilter(FpSpread1.ActiveSheet, inStyle, outStyle)' Apply the column definition to the filter.rowFilter.ColumnDefinitions = fcdc' Apply the row filter to the sheet.FpSpread1.ActiveSheet.RowFilter = rowFilterFpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget

Example

Thisexamplecodecreatesrowfiltersinadrop-downlistthatcanbeaccessedbyclickingonthedrop-downarrowiconinthecolumnheader.Twofiltersarecreated(hideandstyle).Commentoutthestylefiltertoseethehidefilter.

Thisexampledefinesfiltersbasedoncriteriafromthecontentsofcolumns1and2ofthespreadsheetusingthetextoftheitemsinthecolumnsasthefilterchoices.

C#// Set the rows to hide when they are filtered out.FarPoint.Win.Spread.HideRowFilter hideRowFilter = new FarPoint.Win.Spread.HideRowFilter(fpSpread1.ActiveSheet);hideRowFilter.AddColumn(1);hideRowFilter.AddColumn(2);fpSpread1.ActiveSheet.RowFilter = hideRowFilter;

// Set the styles for the filtered-in rows and filtered-out rows.FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.StyleRowFilter styleRowFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, inStyle, outStyle);inStyle.BackColor = Color.Yellow;outStyle.BackColor = Color.Aquamarine;// Apply the row filter to the two columns.styleRowFilter.AddColumn(1);styleRowFilter.AddColumn(2);fpSpread1.ActiveSheet.RowFilter = styleRowFilter;

// Fill the cells with test data.fpSpread1.ActiveSheet.Cells[0,1].Value = "aaa";fpSpread1.ActiveSheet.Cells[1,1].Value = "aaa";fpSpread1.ActiveSheet.Cells[2,1].Value = "bbb";fpSpread1.ActiveSheet.Cells[3,1].Value = "ccc";fpSpread1.ActiveSheet.Cells[4,1].Value = "ddd";fpSpread1.ActiveSheet.Cells[5,1].Value = "bbb";fpSpread1.ActiveSheet.Cells[6,1].Value = "aaa";fpSpread1.ActiveSheet.Cells[7,1].Value = "eee";fpSpread1.ActiveSheet.Cells[8,1].Value = "jjj";fpSpread1.ActiveSheet.Cells[9,1].Value = "jjj";fpSpread1.ActiveSheet.Cells[10,1].Value = "fff";fpSpread1.ActiveSheet.Cells[11,1].Value = "fff";fpSpread1.ActiveSheet.Cells[12,1].Value = "eee";fpSpread1.ActiveSheet.Cells[13,1].Value = "jjj";fpSpread1.ActiveSheet.Cells[14,1].Value = "eee";fpSpread1.ActiveSheet.Cells[15,1].Value = "jjj";fpSpread1.ActiveSheet.Cells[16,1].Value = "fff";fpSpread1.ActiveSheet.Cells[0,2].Value = "111";

Spread Windows Forms Developer’s Guide 278

Copyright © GrapeCity, inc. All rights reserved.

Page 280: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.Cells[1,2].Value = "222";fpSpread1.ActiveSheet.Cells[2,2].Value = "333";fpSpread1.ActiveSheet.Cells[3,2].Value = "222";fpSpread1.ActiveSheet.Cells[4,2].Value = "555";fpSpread1.ActiveSheet.Cells[5,2].Value = "444";fpSpread1.ActiveSheet.Cells[6,2].Value = "444";fpSpread1.ActiveSheet.Cells[0,3].Value = "North";fpSpread1.ActiveSheet.Cells[1,3].Value = "South";fpSpread1.ActiveSheet.Cells[2,3].Value = "East";fpSpread1.ActiveSheet.Cells[3,3].Value = "South";fpSpread1.ActiveSheet.Cells[4,3].Value = "North";fpSpread1.ActiveSheet.Cells[5,3].Value = "North";fpSpread1.ActiveSheet.Cells[6,3].Value = "West";

VB' Set the rows to hide when they are filtered out.Dim hRowFilter As New FarPoint.Win.Spread.HideRowFilter(FpSpread1.ActiveSheet)hRowFilter.AddColumn(1)hRowFilter.AddColumn(2)FpSpread1.ActiveSheet.RowFilter = hRowFilter

' Set the styles for the filtered-in rows and filtered-out rows.Dim inStyle As New FarPoint.Win.Spread.NamedStyle()Dim outStyle As New FarPoint.Win.Spread.NamedStyle()Dim styleRowFilter As New FarPoint.Win.Spread.StyleRowFilter(FpSpread1.ActiveSheet, inStyle, outStyle)inStyle.BackColor = Color.YellowoutStyle.BackColor = Color.Aquamarine' Apply the row filter to the two columns.styleRowFilter.AddColumn(1)styleRowFilter.AddColumn(2)FpSpread1.ActiveSheet.RowFilter = styleRowFilter

' Fill the cells with test data.FpSpread1.ActiveSheet.Cells(0, 1).Value = "aaa"FpSpread1.ActiveSheet.Cells(1, 1).Value = "aaa"FpSpread1.ActiveSheet.Cells(2, 1).Value = "bbb"FpSpread1.ActiveSheet.Cells(3, 1).Value = "ccc"FpSpread1.ActiveSheet.Cells(4, 1).Value = "ddd"FpSpread1.ActiveSheet.Cells(5, 1).Value = "bbb"FpSpread1.ActiveSheet.Cells(6, 1).Value = "aaa"FpSpread1.ActiveSheet.Cells(7, 1).Value = "eee"FpSpread1.ActiveSheet.Cells(8, 1).Value = "jjj"FpSpread1.ActiveSheet.Cells(9, 1).Value = "jjj"FpSpread1.ActiveSheet.Cells(10, 1).Value = "fff"FpSpread1.ActiveSheet.Cells(11, 1).Value = "fff"FpSpread1.ActiveSheet.Cells(12, 1).Value = "eee"FpSpread1.ActiveSheet.Cells(13, 1).Value = "jjj"FpSpread1.ActiveSheet.Cells(14, 1).Value = "eee"FpSpread1.ActiveSheet.Cells(15, 1).Value = "jjj"FpSpread1.ActiveSheet.Cells(16, 1).Value = "fff"FpSpread1.ActiveSheet.Cells(0, 2).Value = "111"FpSpread1.ActiveSheet.Cells(1, 2).Value = "222"FpSpread1.ActiveSheet.Cells(2, 2).Value = "333"FpSpread1.ActiveSheet.Cells(3, 2).Value = "222"FpSpread1.ActiveSheet.Cells(4, 2).Value = "555"

Spread Windows Forms Developer’s Guide 279

Copyright © GrapeCity, inc. All rights reserved.

Page 281: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.Cells(5, 2).Value = "444"FpSpread1.ActiveSheet.Cells(6, 2).Value = "444"FpSpread1.ActiveSheet.Cells(0, 3).Value = "North"FpSpread1.ActiveSheet.Cells(1, 3).Value = "South"FpSpread1.ActiveSheet.Cells(2, 3).Value = "East"FpSpread1.ActiveSheet.Cells(3, 3).Value = "South"FpSpread1.ActiveSheet.Cells(4, 3).Value = "North"FpSpread1.ActiveSheet.Cells(5, 3).Value = "North"FpSpread1.ActiveSheet.Cells(6, 3).Value = "West"

Defining the Order of the Items in the Filter Item List

Youcancustomizehowthedrop-downlistoffilteritemsisdisplayed.Bydefault,thelistshowsthepossiblefilteritemsalphabeticallyandincludesalltheoptions.BychangingthevalueoftheFilterListBehavior('FilterListBehaviorEnumeration'intheon-linedocumentation)enumeration,youchangehowthefilterlistisdisplayed.Forexampleyoucansetthefilterlisttodisplayitemsinorderofnumberofoccurrencesinthatcolumn.

UsetheAddColumn('AddColumnMethod'intheon-linedocumentation)methodsandspecifythecolumnfilterdefinition.Thisalsodefinesthewaythefilteritemsappearinthedrop-down.

UsingCode

SettheFilterListBehavior('FilterListBehaviorEnumeration'intheon-linedocumentation)enumerationtochangehowthefilterlistisdisplayed.

Example

ThefollowingexampleillustratessettingtheFilterListBehavior('FilterListBehaviorEnumeration'intheon-linedocumentation)enumerationincode.

C#FarPoint.Win.Spread.NamedStyle instyle = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyleim outstyle = new FarPoint.Win.Spread.NamedStyle();instyle.BackColor = Color.Yellow;outstyle.BackColor = Color.Aquamarine;FarPoint.Win.Spread.FilterColumnDefinition fcd = new FarPoint.Win.Spread.FilterColumnDefinition(1, FarPoint.Win.Spread.FilterListBehavior.SortByMostOccurrences | FarPoint.Win.Spread.FilterListBehavior.Default);FarPoint.Win.Spread.FilterColumnDefinition fcd1 = new FarPoint.Win.Spread.FilterColumnDefinition(2);FarPoint.Win.Spread.FilterColumnDefinition fcd2 = new FarPoint.Win.Spread.FilterColumnDefinition();FarPoint.Win.Spread.StyleRowFilter sf = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, instyle, outstyle);sf.AddColumn(fcd);sf.AddColumn(fcd1);sf.AddColumn(fcd2);fpSpread1.ActiveSheet.RowFilter = sf;fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget;

VBDim instyle As New FarPoint.Win.Spread.NamedStyleDim outstyle As New FarPoint.Win.Spread.NamedStyle

Spread Windows Forms Developer’s Guide 280

Copyright © GrapeCity, inc. All rights reserved.

Page 282: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

instyle.BackColor = Color.Yellowoutstyle.BackColor = Color.AquamarineDim fcd As New FarPoint.Win.Spread.FilterColumnDefinition(1, FarPoint.Win.Spread.FilterListBehavior.SortByMostOccurrences Or FarPoint.Win.Spread.FilterListBehavior.Default)Dim fcd1 As New FarPoint.Win.Spread.FilterColumnDefinition(2)Dim fcd2 As New FarPoint.Win.Spread.FilterColumnDefinitionDim sf As New FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, instyle, outstyle)sf.AddColumn(fcd)sf.AddColumn(fcd1)sf.AddColumn(fcd2)fpSpread1.ActiveSheet.RowFilter = sfFpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget

Setting the Appearance of the Display of the Filter Item List

Youcansettheappearanceoftheoutlineofthedrop-downlist.Thefollowingfiguresshowthetypesofoutlines(orborder)styles.

Outline(Border)Style ExampleFixed,three-dimensional(default)

Fixed,single-line

None

Formoredetails,refertotheDefaultRowFilterclassDropDownBorderStyle('DropDownBorderStyleProperty'intheon-linedocumentation)propertyandthe.NETBorderStyleenumeration.

Spread Windows Forms Developer’s Guide 281

Copyright © GrapeCity, inc. All rights reserved.

Page 283: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. SettheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)property.2. SettheDropDownBorderStyle('DropDownBorderStyleProperty'intheon-linedocumentation)

property.

Example

Thisexamplecreatesafilterandsetstheborderstyle.

C#// Activate the automatic filtering features.fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;fpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadget;// Change the drop-down list style to "Single Line".fpSpread1.ActiveSheet.RowFilter.DropDownBorderStyle = BorderStyle.FixedSingle;

fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();fpSpread1.ActiveSheet.SetText(0, 0, "Fender");fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");fpSpread1.ActiveSheet.SetText(2, 0, "Fender");fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");fpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA");fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");fpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II");fpSpread1.ActiveSheet.SetColumnWidth(0, 90);fpSpread1.ActiveSheet.SetColumnWidth(1, 210);

VB' Activate the automatic filtering features.FpSpread1.ActiveSheet.Columns(0).AllowAutoFilter = True' Change the drop-down list style to "Single Line".FpSpread1.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterGadgetFpSpread1.ActiveSheet.RowFilter.DropDownBorderStyle = BorderStyle.FixedSingle

FpSpread1.ActiveSheet.DefaultStyle.CellType = New FarPoint.Win.Spread.CellType.TextCellTypeFpSpread1.ActiveSheet.SetText(0, 0, "Fender")FpSpread1.ActiveSheet.SetText(1, 0, "Gibson")FpSpread1.ActiveSheet.SetText(2, 0, "Fender")FpSpread1.ActiveSheet.SetText(3, 0, "Ibanez")FpSpread1.ActiveSheet.SetText(4, 0, "Gibson")FpSpread1.ActiveSheet.SetText(5, 0, "YAMAHA")FpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC")FpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus")FpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX")FpSpread1.ActiveSheet.SetText(3, 1, "AGS83B")FpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme")

Spread Windows Forms Developer’s Guide 282

Copyright © GrapeCity, inc. All rights reserved.

Page 284: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.SetText(5, 1, "ATTITUDE-Limited II")FpSpread1.ActiveSheet.SetColumnWidth(0, 90)FpSpread1.ActiveSheet.SetColumnWidth(1, 210)

Creating a Custom Filter

Youcancreateacustomfilterthatyoucanthenincludeinthecolumnfilterdefinitioncollection.Inordertocreateacustomfilter,followthesesteps:

1. CreateaclassthatinheritsfromFarPoint.Win.Spread.BaseFilterItem('BaseFilterItemClass'intheon-linedocumentation)orFarPoint.Win.Spread.DefaultFilterItem('DefaultFilterItemClass'intheon-linedocumentation).

2. OverridetheDisplayName('DisplayNameProperty'intheon-linedocumentation)propertytoreturnthenametobedisplayedinthedrop-downlistoffilteritems.

3. OverridetheShowInDropDown('ShowInDropDownMethod'intheon-linedocumentation)methodtospecifyifthisfilteritemshouldbedisplayedinthedrop-downlistgiventhecurrentfilteredinrows.

4. OverridetheFilter('FilterMethod'intheon-linedocumentation)methodtoperformthefilteractiononthespecifiedcolumn.

5. OverridetheSerialize('SerializeMethod'intheon-linedocumentation)andDeserialize('DeserializeMethod'intheon-linedocumentation)methods.Makecallstothebase.Serializeandbase.Deserializemethodsunlessyourmethodshandlepersistingthedefaultproperties.

6. CreateaHideRowFilter('HideRowFilterClass'intheon-linedocumentation)orStyleRowFilter('StyleRowFilterClass'intheon-linedocumentation)object.

7. Addthecustomfiltertothecustomfilter’slistofthecolumnfilterdefinitionintherowfilteringobjectfromthepreviousstep.

Formoredetails,refertothesemembers:

BaseFilterItem('BaseFilterItemClass'intheon-linedocumentation)IFilterItem('IFilterItemInterface'intheon-linedocumentation)DefaultFilterItem('DefaultFilterItemClass'intheon-linedocumentation)FilterItemCollection('FilterItemCollectionClass'intheon-linedocumentation)

Setting the Appearance of Filter Indicators

Thefilterindicatorsaredisplayedinthecolumnheaderwhenrowfilteringisavailabletotheuser.Youcancustomizevariousaspectsofthefilterindicators.Youcandoanyofthefollowing:

UsingCustomFilterIndicatorImagesShowingorHidingFilterIndicatorsDeterminingWhichHeaderRowDisplaystheIndicators

Using Custom Filter Indicator Images

Youcancustomizethefilterindicatorimagethatappearsinthecolumnheaderofcolumnsthathavefiltersassigned.Oneofthedefaultimagesisshownhereinthesecond(B)column.

OnewayistooverridethePaintFilterIndicator('PaintFilterIndicatorMethod'intheon-linedocumentation)methodintheCellTypeColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation)classandcreateyourowncustomfilterindicator.

AnotherwayistousetheGetImage('GetImageMethod'intheon-linedocumentation)andSetImage

Spread Windows Forms Developer’s Guide 283

Copyright © GrapeCity, inc. All rights reserved.

Page 285: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('SetImageMethod'intheon-linedocumentation)methodsintheSpreadViewclass,whichisdescribedinCustomizingtheUserInterfaceImages.

UsingCode

1. CreateanewcolumnheaderrendererwiththeColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation)class.

2. OverridethePaintSortIndicator('PaintSortIndicatorMethod'intheon-linedocumentation)method.

3. OverridethePaintFilterIndicator('PaintFilterIndicatorMethod'intheon-linedocumentation)method.

Example

Thisexampleillustrateshowtosetcreateacustomfilterincode,byfirstcreatinganewcolumnheaderrenderer,andthencustomizingthefilterindicatorthatappearsinthecolumnheader.

C#// In the form load section, allow filtering (and sorting).private void Form1_Load(object sender, System.EventArgs e){ fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = new myColumnHeaderRenderer(); fpSpread1.Sheets[0].Columns[0].AllowAutoSort =true; fpSpread1.Sheets[0].Columns[0].AllowAutoFilter =true;}// Define a new column header renderer.public class myColumnHeaderRenderer : FarPoint.Win.Spread.CellType.ColumnHeaderRenderer{ // Override the sorting indicator paint method. override public void PaintSortIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor) { g.FillRectangle(new SolidBrush(Color.Red), r); } // Override the filtering indicator paint method. override public void PaintFilterIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor) { g.FillRectangle(new SolidBrush(Color.Blue), r); }} //End Form1_Load

VB' Define a new column header renderer.Public Class myColumnHeaderRendererInherits FarPoint.Win.Spread.CellType.ColumnHeaderRenderer ' Override the sorting indicator paint method. Public Overrides Sub PaintSortIndicator(ByVal g As Graphics, ByVal r As Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal zoomFactor As Single) g.FillRectangle(New SolidBrush(Color.Red), r) End Sub 'PaintSortIndicator ' Override the filtering indicator paint method. Public Overrides Sub PaintFilterIndicator(ByVal g As Graphics, ByVal r As Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal zoomFactor As Single)

Spread Windows Forms Developer’s Guide 284

Copyright © GrapeCity, inc. All rights reserved.

Page 286: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

g.FillRectangle(New SolidBrush(Color.Blue), r) End Sub 'PaintFilterIndicatorEnd Class 'myColumnHeaderRenderer' In the form load section, allow sorting and filtering.Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = New myColumnHeaderRenderer FpSpread1.Sheets(0).Columns(0).AllowAutoSort = True FpSpread1.Sheets(0).Columns(0).AllowAutoFilter = TrueEnd Sub 'Form1_Load

Showing or Hiding Filter Indicators

Youcandisplayfortheuserorhidefromtheuserthefilterindicatorsthatappearinthecolumnheaders.

UsingCode

1. SettheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)property.2. SettheShowFilterIndicator('ShowFilterIndicatorProperty'intheon-linedocumentation)

property.

Example

Thisexampledisplaysthefilterindicatorandsetsthefilterstrings.

C#fpSpread1.ActiveSheet.Columns[1].AllowAutoFilter = true;fpSpread1.ActiveSheet.RowFilter.ShowFilterIndicator = true;fpSpread1.ActiveSheet.RowFilter.AllString = "Show All";fpSpread1.ActiveSheet.RowFilter.BlanksString = "Show The Blanks";fpSpread1.ActiveSheet.RowFilter.NonBlanksString = "Show The Non-Blanks";

VBFpSpread1.ActiveSheet.Columns(1).AllowAutoFilter = TrueFpSpread1.ActiveSheet.RowFilter.ShowFilterIndicator = TrueFpSpread1.ActiveSheet.RowFilter.AllString = "Show All"FpSpread1.ActiveSheet.RowFilter.BlanksString = "Show The Blanks"FpSpread1.ActiveSheet.RowFilter.NonBlanksString = "Show The Non-Blanks"

Determining Which Header Row Displays the Indicators

Ifyouhavemultiplecolumnheaderrowsthenyoucanspecifywhichrowdisplaysthefilterindicators.Bydefaulttheyappearinthebottomcolumnheaderrow.YoucanspecifywhichrowdisplaystheindicatorbysettingtheAutoFilterIndex('AutoFilterIndexProperty'intheon-linedocumentation)propertyoftheColumnHeader('ColumnHeaderClass'intheon-linedocumentation)class.

UsingCode

SettheColumnHeaderclassAutoFilterIndex('AutoFilterIndexProperty'intheon-linedocumentation)propertytotherowindextodisplaytheindicator.Therowindexiszerobased,sothefirstrowis0.

Spread Windows Forms Developer’s Guide 285

Copyright © GrapeCity, inc. All rights reserved.

Page 287: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thefollowingexamplesetstheindicatortoappearinthenexttothebottomcolumnheaderrow.

C#fpSpread1.ActiveSheet.Columns[1].AllowAutoFilter = true;fpSpread1.ActiveSheet.ColumnHeaderRowCount = 3;fpSpread1.ActiveSheet.ColumnHeader.AutoFilterIndex = 1;

VBFpSpread1.ActiveSheet.Columns(1).AllowAutoFilter = TrueFpSpread1.ActiveSheet.ColumnHeaderRowCount = 3FpSpread1.ActiveSheet.ColumnHeader.AutoFilterIndex = 1

Customizing Enhanced Filtering

Youcancustomizeenhancedfilteringbyspecifyingtousethedefaultfiltermenuortodisplayafilterbar,asdescribedinAllowingtheUsertoFilterRows.Ifyoudecidetohavethecontroldisplayafilterbar,youcancustomizethefilterbar.Youcanalsouseanenhancedsortdialogwithenhancedfiltering.

UnderstandingEnhancedRowFilteringCustomizingtheFilterBarAddingaCustomSortDialog(on-linedocumentation)

Understanding Enhanced Row Filtering

Whenthecontrolhasenhancedfilteringturnedon,theusercandrop-downalistofavailablefilterstoapplytothedata,asshowninthefollowingfigure.

Spread Windows Forms Developer’s Guide 286

Copyright © GrapeCity, inc. All rights reserved.

Page 288: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thedefaultfilterthatisdisplayeddependsonthedatainthecolumn.Thefiltercanbeanumber,text,date,orcolorfilter.

Thefiltersaredescribedinthefollowingtable.

FilterType DescriptionNumberFilters

Equals Valuesinrowsareequaltocondition

DoesNotEqual Valuesinrowsdonotequalcondition

GreaterThan Valuesinrowsaregreaterthancondition

GreaterThanOrEqualTo Valuesinrowsaregreaterthanorequaltocondition

LessThan Valuesinrowsarelessthancondition

LessThanOrEqualTo Valuesinrowsarelessthanorequaltocondition

Between Valuesinrowsaregreaterthanoneconditionandlessthananothercondition

Top10 Valuesintherowswiththetenhighestvalues

AboveAverage Valuesintherowsthatareabovetheaverageofthevaluesinalltherows

BelowAverage Valuesintherowsthatarebelowtheaverageofthevaluesinalltherows

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

TextFilters

Equals Valuesinrowsequalthecondition

DoesNotEqual Valuesinrowsdonotequalthecondition

BeginsWith Valuesinrowsbeginwiththespecifiedcharacters

Spread Windows Forms Developer’s Guide 287

Copyright © GrapeCity, inc. All rights reserved.

Page 289: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

EndsWith Valuesinrowsendwiththespecifiedcharacters

Contains Valuesinrowscontainthespecifiedcharacters

DoesNotContain Valuesinrowsdonotcontainthespecifiedcharacters

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

DateFilters

Equals Valuesinrowsequalthecondition

Before Valuesinrowsaredatesbeforethecondition

After Valuesinrowsaredatesafterthecondition

Between Valuesinrowsaredatesbetweentwospecifieddatesforthecondition

Tomorrow Valuesinrowsaretomorrow'sdate

Today Valuesinrowsaretoday'sdate

Yesterday Valuesinrowsareyesterday'sdate

NextWeek Valuesinrowsareduringnextweek

ThisWeek Valuesinrowsareduringcurrentweek

LastWeek Valuesinrowsareduringlastweek

NextMonth Valuesinrowsareduringnextmonth

ThisMonth Valuesinrowsareduringcurrentmonth

LastMonth Valuesinrowsareduringlastmonth

NextQuarter Valuesinrowsareduringnextquarter

ThisQuarter Valuesinrowsareduringcurrentquarter

LastQuarter Valuesinrowsareduringlastquarter

NextYear Valuesinrowsareduringnextyear

ThisYear Valuesinrowsareduringcurrentyear

LastYear Valuesinrowsareduringlastyear

YeartoDate Valuesinrowsareduringcurrentyeartopresentdate

AllDatesinthePeriod Valuesinrowsarewithinaspecifiedperiod

CustomFilter Valuesinrowsthatmeettheconditionsofacustomfilter

Userscanspecifywildcardsinconditions.The"?"characterrepresentsanysinglecharacter.The"*"characterrepresentsanyseriesofcharacters.

Whentheuserchoosesafilter,thecontroleitherfiltersthedatatodisplayonlytheitemsthatmatchthefiltercriteria,orthecontroldisplaystherowsthatmeetthecriteriawithoneappearance,andtherowsthatdonotmeetthecriteriawithanotherappearance.Forinformationaboutsettingthestylesforrows,seeSettingtheAppearanceofFilteredRows.

Inthecontrol,columnswithfiltersdisplayfilterindicators,whichindicatewhetherafilterhasbeenapplied,asshowninthefollowingtable.

RowFilteringIndicator DescriptionAppearanceofheadercellwithnorowfiltering

Spread Windows Forms Developer’s Guide 288

Copyright © GrapeCity, inc. All rights reserved.

Page 290: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Appearanceofheadercellwithrowfilteringallowedbutnorowsfiltered

Appearanceofheadercellwithrowfilteringallowedandsomerowsfiltered

Ifyouprefer,youcanhavethecontroldisplayafilterbarthatallowstheusertochoosethefiltertoapply.Thefilterbarisdisplayedinthecontrolatalltimes,andchoosingafilterfromthefilterbarmakesthefiltergointoeffectimmediately.Thefollowingfigureillustratesacontrolwithafilterbar.

UsingCode

1. SettheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)property.2. SettheAutoFilterMode('AutoFilterModeProperty'intheon-linedocumentation)property.

Example

Thefollowingexamplecreatesanenhancedfilterinthefirstthreecolumns.Adddifferenttypesofdatatoseethevariousfilteroptions.

C#fpSpread1.Sheets[0].Columns[0, 2].AllowAutoFilter = true;fpSpread1.Sheets[0].AutoFilterMode =FarPoint.Win.Spread.AutoFilterMode.EnhancedContextMenu;

VBFpSpread1.Sheets(0).Columns(0, 2).AllowAutoFilter = TrueFpSpread1.Sheets(0).AutoFilterMode =FarPoint.Win.Spread.AutoFilterMode.EnhancedContextMenu

Youcancustomizetheappearanceofthefilterbar,asdescribedinCustomizingtheFilterBar.

Spread Windows Forms Developer’s Guide 289

Copyright © GrapeCity, inc. All rights reserved.

Page 291: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing the Filter Bar

Youcancustomizetheappearanceofthefilterbar.Youcanchangethebackgroundandtextcolorsandthegridlinesandtheircolor.Thefollowingfigureillustratesafilterbarwithacustomappearance.

Thefilterbaralsoprovidesadatepickertopickadatetofilterby.Certainfiltermenuchoiceswilldisplaythedatepicker(beforeorafter,forexample).Youcanalsotypethevalueintheeditportionofthefilterafteryouselectafiltermenuoption.

SettingtheAutoFormat('AutoFormatProperty'intheon-linedocumentation)propertytotruespecifiestousetheDateTimeFormatInfo('DateTimeFormatInfoProperty'intheon-linedocumentation),FormatString('FormatStringProperty'intheon-linedocumentation),andNumberFormatInfo('NumberFormatInfoProperty'intheon-linedocumentation)propertiestoformatthevalueinthefilterbar.Setthesepropertiesiftheformatofthedatainthecellisdifferentfromtheformatinthefilterbar.TheEqualsfiltermenuoptionrequiresthatthecellformatandthefilterbarformatbethesame.

UsingCode

1. Tocustomizespecificcellsinthefilterbar,settheFilterBar('FilterBarClass'intheon-linedocumentation)class'sCells('CellsProperty'intheon-linedocumentation)properties.

2. Tocustomizethefilterbaroverall,settheFilterBar'sDefaultStyle('DefaultStyleProperty'intheon-linedocumentation),Height('HeightProperty'intheon-linedocumentation),HorizontalGridLine('HorizontalGridLineProperty'intheon-linedocumentation),andVerticalGridLine('VerticalGridLineProperty'intheon-linedocumentation)properties.

Example

Spread Windows Forms Developer’s Guide 290

Copyright © GrapeCity, inc. All rights reserved.

Page 292: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingexamplesetsonecellinthefilterbartodisplayacustomborderandbackgroundcolor,andtheentirefilterbartodisplayacustomborder.

C#FarPoint.Win.Spread.SheetView sheetView = fpSpread1.ActiveSheet;sheetView.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterBar;sheetView.FilterBar.Cells[0].Border = new FarPoint.Win.DoubleLineBorder(Color.Red);sheetView.FilterBar.Cells[0].BackColor = Color.GreenYellow;sheetView.FilterBar.DefaultStyle.Border = new FarPoint.Win.DoubleLineBorder(Color.Yellow);

VBDim sheetView As FarPoint.Win.Spread.SheetView = FpSpread1.ActiveSheetsheetView.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.FilterBarsheetView.FilterBar.Cells(0).Border = New FarPoint.Win.DoubleLineBorder(Color.Red)sheetView.FilterBar.Cells(0).BackColor = Color.GreenYellowsheetView.FilterBar.DefaultStyle.Border = New FarPoint.Win.DoubleLineBorder(Color.Yellow)

Managing Grouping of Rows of User Data

Youcansetthedisplayofthespreadsheetcomponenttoallowrowstobegroupedaccordingtothecolumnheaders.Youcancustomizetheuserexperienceforgroupingdataonasheet.Withgrouping,youcanallowtheusertogrouprowsofdataaccordingtothecolumnheadersthataredraggedintothegroupbar.Specialgroupheadingsaredisplayedabovethegroupedrows.Groupingofrowsincludesthefollowingtasks.

AllowingtheUsertoGroupRowsUsingGroupingSettingtheAppearanceofGroupedRowsCustomizingtheGroupBarCreatingaCustomGroupInteroperabilityofGroupingwithOtherFeatures

Allowing the User to Group Rows

Bydefault,thespreadsheetdoesnotallowtheusertogrouptherowsofaspreadsheet.Youcanturnonthisfeatureandallowgroupingofrowsforanentiresheet.Besidesallowinggrouping,youalsoneedtoallowcolumnstomove,sincetheuserperformsgroupingbyclickinganddraggingacolumnheaderintothegroupbar,whichissimilartotheactofmovingacolumn.Also,thegroupbarmustbevisibleandthecolumnheaders(atleastonerow)shouldbevisible.

Thefollowingimagedisplaysthecomponentwithgroupingallowed.

UsetheAllowGroup('AllowGroupProperty'intheon-linedocumentation)propertyofthesheettoturnon

Spread Windows Forms Developer’s Guide 291

Copyright © GrapeCity, inc. All rights reserved.

Page 293: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

grouping.UsetheVisible('VisibleProperty'intheon-linedocumentation)propertyoftheGroupBarInfo('GroupBarInfoClass'intheon-linedocumentation)classtodisplaythegroupbar(theareaatthetopofthesheetintowhichtheusercandragcolumnheaders.RemembertosettheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)propertyoftheSpreadtoTruetoallowtheusertoclickanddragcolumnheaders.Unlessyouareusingthedefaultvalue,settheColumnHeaderVisible('ColumnHeaderVisibleProperty'intheon-linedocumentation)propertyofthesheettoTruetoensurethatthecolumnheadersaredisplayed.

Youcanturnonorofftherowheaders;thesehavenoeffectonthedisplayofgrouping.

TheAllowDragDrop('AllowDragDropProperty'intheon-linedocumentation)propertyisnotsupportedwithgrouping.

Youcansetthemaximumnumberoflevelsofgroupingthattheendusercanset.Thislimitsthenumberofcolumnheadersthatcanbedraggedconsecutivelytothegroupbar.

Tounderstandhowgroupingworksfortheenduser,refertoUsingGrouping.

UsingCode

1. SettheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)propertytoTrue.

2. SettheVisible('VisibleProperty'intheon-linedocumentation)propertytoTrue.3. SettheAllowGroup('AllowGroupProperty'intheon-linedocumentation)propertytoTruetoallow

theusertogroupthedata.

Example

Thisexampleallowsgrouping.

C#FpSpread1.AllowColumnMove = true;FpSpread1.ActiveSheet.GroupBarInfo.Visible = true;FpSpread1.ActiveSheet.AllowGroup = true;

VBFpSpread1.AllowColumnMove = TrueFpSpread1.ActiveSheet.GroupBarInfo.Visible = TrueFpSpread1.ActiveSheet.AllowGroup = True

Using Grouping

YoucansetupthedisplaytoallowOutlook-stylegroupingofrows.Forlargeamountsofdata,thisishelpfultodisplaythedataintheordertheuserneeds.Theuserselectscolumnsbywhichtosortandthecomponentthenorganizesanddisplaysthedatainahierarchywithrowsorganizedaccordingly.Toselectacolumnbywhichtogroupanddisplaythatdata,eitherdouble-clickontheheaderofthatcolumnorclickanddragthatcolumnintothegroupingbaratthetopofthepage.Seethefigurebelowforanexampleofthetermsusedwithgrouping.

Spread Windows Forms Developer’s Guide 292

Copyright © GrapeCity, inc. All rights reserved.

Page 294: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanexpandorcollapsegroupsbyclickingtheexpand(+)orcollapse(-)indicators.

Youcanprovidegroupingtoallowuserstosortthedatawithmultiplelevelsofgroupsbydraggingadditionalcolumnheadersintothegroupingarea.Anexampleoftheprocessofsettinguptwolevelsofgroupingisshowninthefollowingfigure.

Beforesecondarygrouping:draggingthecolumnheaderintothegroupingbar. Aftersecondarygrouping:nowasecondlevelofhierarchyisshown.

Whenmorethanonelevelischosen,thehigherleveliscalledtheparentgroupandthelowerleveliscalledthechildgroup.Intheproceedingfigurewithsecondarygrouping,theEmployeeIDistheparentgroupandtheFirstNameisthechildgroup.

Setting the Appearance of Grouped Rows

Youcancustomizetheappearanceofthegroupheadersandthegroupedrows.Foranintroductiontotheuserinterfaceforgrouping,refertoUsingGrouping.

Youcansetupthedisplaysothattheitemsareshowninitiallyallexpandedorallcollapsedwhengroupingisperformed.TheGroupingPolicy('GroupingPolicyProperty'intheon-linedocumentation)propertyonlyappliestonewgroups.

Youcansetthecolorsandotherformattingofboththehierarchynamesandthedataintherowswhengroupingisperformed.

Youcanhideordisplaythegroupingbaratthetopofthesheet.

Thefollowingtabledescribesthemembersusedforcustomizingtheappearanceofgroupedrows:

GroupingAPIMember Description

Spread Windows Forms Developer’s Guide 293

Copyright © GrapeCity, inc. All rights reserved.

Page 295: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

IGroupSupport('IGroupSupportInterface'intheon-linedocumentation)interface

Interfacethatsupportsgrouping

GroupDataModel('GroupDataModelClass'intheon-linedocumentation)class

Classofgroupingdataintheunderlyingmodels

Group('GroupClass'intheon-linedocumentation)class Classintheunderlyingmodelsthatsupportsgrouping

Grouped('GroupedEvent'intheon-linedocumentation)andGrouping('GroupingEvent'intheon-linedocumentation)events

EventsinFpSpreadclass

GroupInfo('GroupInfoClass'intheon-linedocumentation) Classthatrepresentsgroupinginformation

GroupInfoCollection('GroupInfoCollectionClass'intheon-linedocumentation)

Collectionofgroupinginformation

Formoreinformationonotherhierarchicaldisplaysofdata,refertoWorkingwithHierarchicalDataDisplay.

YoucanalsodefineasetofpropertiesinanarraylistcalledGroupInfo.Settheappearanceofgroupedrowsbyaddingstylestothearraylistofappearancepropertiesforgrouping.AcollectionofGroupInfoobjectsisintheGroupInfoCollection.TosettheappearancesettingsinaGroupInfotoaparticularsheet,settheGroupInfospropertyonthatsheet.Appearancesettingsforgroupinginclude:

BackgroundcolorBorderFontForeground(text)colorHorizontalalignmentIndentIndentcolorVerticalalignment

Onlycolumnandsheetappearancesettingsremainwhengroupingisturnedon.Sincerowsandcellsaremovedwhenthegroupingfeatureisturnedon,anystyleorspansettingsareignored.

Formoreinformationaboutthegroupdatamodelandtheeffectonthesheetdatamodel,refertoCreatingaCustomGroup.YoucanusetheIsGroup('IsGroupMethod'intheon-linedocumentation)method,whichdetermineswhetherarequestedrowisadataroworagroupheaderrow.

Formoreinformationaboutgroupfooters,refertoDisplayingaFooterforColumnsorGroups.

Customizing the Group Bar

Youcancustomizetheappearanceofthegroupbaratthetopofthegroupingdisplay.

Youcanhideordisplaythegroupingbaratthetopofthesheet.Thepropertiesonthesheet(GroupBarInfo('GroupBarInfoProperty'intheon-linedocumentation)object)include:

GroupBarInfoProperty DescriptionBackColor('BackColorProperty'intheon-linedocumentation)

Setthebackgroundcolorofthegroupingbar

Height('HeightProperty'intheon-linedocumentation)

Settheheightofthegroupingbar

Visible('VisibleProperty'intheon-linedocumentation)

Setwhethertodisplaythegroupingbar

Spread Windows Forms Developer’s Guide 294

Copyright © GrapeCity, inc. All rights reserved.

Page 296: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

GroupVerticalIndent('GroupVerticalIndentProperty'intheon-linedocumentation)

Settheverticaldistancebetweengroupnames(whenmorethanonegroupnameisused)inthegroupingbar

YoucansetthemaximumlevelsofgroupingallowedonthesheetbysettingtheSheetViewobject'sGroupMaximumLevel('GroupMaximumLevelProperty'intheon-linedocumentation)property.

Creating a Custom Group

Whengroupingisturnedonforasheet,aseparatetargetgroupdatamodelisavailabletothesheet(orspreadsheetcomponent)andthisgroupdatamodelisflat,completelywithoutahierarchy.Thiscontainsthegroupheadersandothergrouping-specificdisplaydata.Underneaththatmodelisatargetdatamodelwheretherowdataresides.

Youcancustomizegroupingbyspecifyingyourowncomparer.Forexample,youcancreateacustomgroupthatisbydecadeifthecolumnhasyearinformation.AstheGrouping('GroupingEvent'intheon-linedocumentation)eventisraised,youcanpassinyourownIComparer(callitMyComparer,forexample).YoucandeterminewhatisdisplayedinthegroupheaderbysettingtheTextpropertyforthatgroup.

Interoperability of Grouping with Other Features

ThegroupingfeatureaffectsthedisplayandisnotintendedtoworkwithsomeotherfeaturesofSpreadthatalsoworkwiththedisplayofthespreadsheet.Whengroupinghappens,thedatamodelischangedandanewmodel(theGroupDataModel('GroupDataModelClass'intheon-linedocumentation))isused.Manyfeaturesarenotaffectedbygroupingatall,butsomefeatures,listedbelow,arenotintendedtooperatewithgrouping.Ingeneral,ifthefeatureinvolvestheappearanceorinteractivityofthesheetorcolumn,checkthelisttoseeifitisaffectedbygrouping.

Someformattingfeaturescanworkwithgrouping,butneedtobeappliedaftergroupingoccurs.Ifyouneedtoformatcells(colors,locked,andsoon),youmustapplytheformattingaftergrouping.

Aftergroupingrows,youshouldnotchangethecolumncountandrowcount.TheGroupDataModeldoesnotsupportchangingthecolumnorrowcount.Toaddorremovecolumnsorrows,youneedtocalltheoriginaldatamodelmethods.YoucanaccesstheoriginaldatamodelusingtheTargetModel('TargetModelProperty'intheon-linedocumentation)propertyoftheGroupDataModel('GroupDataModelClass'intheon-linedocumentation)class.

Thefollowingfeaturescanworkwithgroupingorarenotaffectedbygrouping:

Groupingandhiddencolumnsworktogether.Thegroupingfeatureaffectsonlythevisualdisplay.Suchthingsasexportandprintingarenotaffected.Groupingandinputmapsoractionmapsworktogether.

FeaturesThatDoNotInteroperatewithGrouping

ThesefeaturesdonotinteroperatewithgroupinginSpread.

Feature DescriptionAlternatingRows

Groupingandalternatingrowsdonotworktogether.Groupingchangestheorderoftherows,sohavingadisplayofalternatingrowswouldnotmakesense.Thus,thesefeaturesdonotworktogether.

ClipboardPaste

Pastingdoesnotworkwithgrouping.

ConditionalFormatting

Groupingandconditionalformattingdonotworktogether.Conditionalformattingrequiresthedefaultdatamodel.Thus,thesefeaturesdonotworktogether.

Filtering Groupingandfilteringdonotworktogether.Ifyouwanttousegrouping,youshouldnotusefilteringandyoushouldclearthefilterundertheGrouping('GroupingEvent'intheon-linedocumentation)event.

Spread Windows Forms Developer’s Guide 295

Copyright © GrapeCity, inc. All rights reserved.

Page 297: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formulas Groupingandformulasdonotworktogether.Formulasrequiresthedefaultdatamodel.Thus,thesefeaturesdonotworkwithgrouping.

Outlines Grouping(Outlookstyle)andoutlines(rangegroups)arenotintendedtoworktogether.

Sorting Groupingandsortingdonotworktogether.Groupingisatypeofsorting.Whengroupingison,clickingoncolumnheaderswillcausegroupingnotsorting.Thus,thesefeaturesdonotworktogether.

Managing Outlines (Range Groups) of Rows and Columns

Youcansetthedisplayofthespreadsheetcomponenttoallowrowsorcolumnstobegroupedasanoutlineaccordingtotheheaders.Thisdisplaysaseparateareabeyondtheheadersthatcontainsoutlinestoallowexpandingorcollapsinglevelsofrowsorcolumns.Thefigurebelowshowsthreelevelsofoutlineforrowsandtwolevelsofoutlineforcolumns.

Collapsedrowsthatarevisiblearestillvisiblewhenexpandingtheoutlineagain.Thisbehavioroftheoutlineissimilartootherspreadsheetprogramswithsomesubtledifferences.Thisfeatureisalsocalled"rangegrouping"sinceitoperatesonarangeofrowsorcolumns.

Thefollowingoptionsareavailabletogrouprowsandcolumnsintooutlines.

UsinganOutline(RangeGroup)ofRowsorColumnsCustomizingtheAppearanceofanOutline(RangeGroup)

Sinceoutlinesaffecttheperformanceofotherfeatures,besuretoreadInteroperabilityofOutlineswithOtherFeatures.

Using an Outline (Range Group) of Rows or Columns

Youcanformoutlinesofoneormorerowsorcolumns.Thereareseveralmethodsthatcreateanoutline(rangegroup)suchastheAddRangeGroup('AddRangeGroupMethod'intheon-linedocumentation)methodfortheSheetView('SheetViewClass'intheon-linedocumentation)class.

Theoutlineappearsattheleft(forrows)andtop(forcolumns)ofthespreadsheetbeyondtheheaders.Outlinescanbenested,creatinglevelsofoutlines.Thenumberedboxesthatappearintheoutlineareaallowyoutoexpandorcollapsealltheoutlinesofthatlevel.Youcanexpandandcollapserowsandcolumnsbyclickingontheexpandandcollapseiconsoronthenumberedoutlineheaders.

Spread Windows Forms Developer’s Guide 296

Copyright © GrapeCity, inc. All rights reserved.

Page 298: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefigurebelowshowsthreelevelsofoutlineforrowsandcolumns,andshowstheterminologyofthepartsoftheoutlinearea.

UsingCode

1. SettheInterfaceRenderer('InterfaceRendererProperty'intheon-linedocumentation)propertytochangethedefaultstyle.

2. SettheRangeGroupBackgroundColor('RangeGroupBackgroundColorProperty'intheon-linedocumentation)propertytospecifytheoutlinebackground.

3. SettheRangeGroupButtonStyle('RangeGroupButtonStyleProperty'intheon-linedocumentation)propertytospecifythebuttonstyle.

4. UseAddRangeGroup('AddRangeGroupMethod'intheon-linedocumentation)toaddoutlines.

Example

Thisexamplecreatestwocolumnoutlinegroups.

C#fpSpread1.ActiveSheet.Rows.Count = 11;fpSpread1.ActiveSheet.Columns.Count = 6;fpSpread1.InterfaceRenderer = null;fpSpread1.ActiveSheet.RangeGroupBackgroundColor = Color.LightGreen;fpSpread1.ActiveSheet.RangeGroupButtonStyle = FarPoint.Win.Spread.RangeGroupButtonStyle.Enhanced;fpSpread1.ActiveSheet.AddRangeGroup(0, 8, true);fpSpread1.ActiveSheet.AddRangeGroup(0, 5, true);fpSpread1.ActiveSheet.AddRangeGroup(1, 3, false);fpSpread1.ActiveSheet.AddRangeGroup(1, 2, false);

VB

Spread Windows Forms Developer’s Guide 297

Copyright © GrapeCity, inc. All rights reserved.

Page 299: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.Rows.Count = 11FpSpread1.ActiveSheet.Columns.Count = 6FpSpread1.InterfaceRenderer = NothingFpSpread1.ActiveSheet.RangeGroupBackgroundColor = Color.LightGreenFpSpread1.ActiveSheet.RangeGroupButtonStyle = FarPoint.Win.Spread.RangeGroupButtonStyle.EnhancedFpSpread1.ActiveSheet.AddRangeGroup(0, 8, True)FpSpread1.ActiveSheet.AddRangeGroup(0, 5, True)FpSpread1.ActiveSheet.AddRangeGroup(1, 3, False)FpSpread1.ActiveSheet.AddRangeGroup(1, 2, False)

Customizing the Appearance of an Outline (Range Group)

Youcancustomizetheappearanceoftheoutline(rangegroup)usingpropertiesontheSheetView('SheetViewClass'intheon-linedocumentation)classorinaninterfacerenderer.

ThetwopropertiesintheSheetViewclassthatcanbeusedtocustomizetheappearanceare:

RangeGroupBackgroundColor('RangeGroupBackgroundColorProperty'intheon-linedocumentation)RangeGroupButtonStyle('RangeGroupButtonStyleProperty'intheon-linedocumentation)

YoucanalsouseanEnhancedInterfaceRenderertocustomizetheappearance.Thepropertiesinclude:

RangeGroupBackgroundColor('RangeGroupBackgroundColorProperty'intheon-linedocumentation)RangeGroupButtonBorderColor('RangeGroupButtonBorderColorProperty'intheon-linedocumentation)RangeGroupLineColor('RangeGroupLineColorProperty'intheon-linedocumentation)

Thelinecoloralsosetsthecolorofthepointsintheoutline.Thefollowingfigureshowstheresultsoftheexamplecodebelowwhereseveralofthesepropertiesareset.

Noticethattheoutlinebackgroundisdifferentfromthegrayareaofthespreadsheet.

Spread Windows Forms Developer’s Guide 298

Copyright © GrapeCity, inc. All rights reserved.

Page 300: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Createanewinterfacerenderertoprovideacustomlooktooutlines.2. SettheRangeGroupBackgroundColor('RangeGroupBackgroundColorProperty'intheon-linedocumentation)tospecifythecolor.

3. SettheRangeGroupButtonBorderColor('RangeGroupButtonBorderColorProperty'intheon-linedocumentation)tospecifythecolorforthebuttonborder.

4. SettheRangeGroupLineColor('RangeGroupLineColorProperty'intheon-linedocumentation)tospecifythegrouplinecolor.

5. AddtherangegroupswiththeAddRangeGroup('AddRangeGroupMethod'intheon-linedocumentation)method.

Example

Thisexamplecreatesanoutlineintherowsandinthecolumnsandchangesvariouscolors.Theresultisshownintheprecedingfigure.

C#fpSpread1.ActiveSheet.Rows.Count = 11;fpSpread1.ActiveSheet.Columns.Count = 6;FarPoint.Win.Spread.EnhancedInterfaceRenderer outlinelook = new FarPoint.Win.Spread.EnhancedInterfaceRenderer();outlinelook.RangeGroupBackgroundColor = Color.LightGreen;outlinelook.RangeGroupButtonBorderColor = Color.Red;outlinelook.RangeGroupLineColor = Color.Blue;fpSpread1.InterfaceRenderer = outlinelook;fpSpread1.ActiveSheet.AddRangeGroup(0, 8, true);fpSpread1.ActiveSheet.AddRangeGroup(0, 5, true);fpSpread1.ActiveSheet.AddRangeGroup(1, 3, false);fpSpread1.ActiveSheet.AddRangeGroup(1, 2, false);

VBFpSpread1.ActiveSheet.Rows.Count = 11FpSpread1.ActiveSheet.Columns.Count = 6Dim outlinelook As New FarPoint.Win.Spread.EnhancedInterfaceRendereroutlinelook.RangeGroupBackgroundColor = Color.LightGreenoutlinelook.RangeGroupButtonBorderColor = Color.Redoutlinelook.RangeGroupLineColor = Color.BluefpSpread1.InterfaceRenderer = outlinelookFpSpread1.ActiveSheet.AddRangeGroup(0, 8, True)FpSpread1.ActiveSheet.AddRangeGroup(0, 5, True)FpSpread1.ActiveSheet.AddRangeGroup(1, 3, False)FpSpread1.ActiveSheet.AddRangeGroup(1, 2, False)

Interoperability of Outlines with Other Features

Theoutline(rangegroup)featureaffectsthedisplayandisnotintendedtoworkwithsomeotherfeaturesofSpreadthatalsoworkwiththedisplayofthespreadsheet.Manyfeaturesarenotaffectedbyoutlinesatall,butsomefeatures,listedbelow,arenotintendedtooperatewiththisfeature.Ingeneral,ifthefeatureinvolvestheappearanceorinteractivityofthesheetorcolumn,checkthelisttoseeifitisaffectedbyoutlines.

Becarefulwhenaddingrowsorcolumnstoadisplaythathasanoutline.

Spread Windows Forms Developer’s Guide 299

Copyright © GrapeCity, inc. All rights reserved.

Page 301: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingfeaturescanworkwithgroupingorarenotaffectedbygrouping:

Outlinesandhiddencolumnsworktogether.Theoutlinefeatureaffectsonlythevisualdisplay.Suchthingsasexportandprintingarenotaffected.Outlinesandinputmapsoractionmapsworktogether.

FeaturesThatDoNotInteroperatewithOutlines

ThesefeaturesdonotinteroperatewithoutlinesinSpread.

Feature DescriptionAlternatingRows

Outlinesandalternatingrowsmaynotworktogether.Outlineschangestheorderoftherows,sohavingadisplayofalternatingrowswouldnotmakesense.Thus,thesefeaturesdonotworktogether.

HierarchicalDisplay

Outlinesandhierarchiesaretwodifferentanddissimilarwaysofgroupinganddisplayingdata.Thesefeaturesarenotintendedtoworktogether.

Outlook-styleGrouping

OutlinesandOutlook-stylegroupingaretwodifferentanddissimilarwaysofgroupinganddisplayingdata.Thesefeaturesarenotintendedtoworktogether.

Sorting Outlinesandsortingmightnotworktogether.

Managing Sorting of Rows of User Data

Youcansortthedatadisplayedinthesheeteitherbycolumnorbyrow.Typically,alltherowsofasheetaresortedbythevaluesinaparticularcolumn.ButSpreadallowsmanywaysofperformingasortwithvariouspropertiesandmethodsforeachtypeofsorting.Ingeneral,sortingdatacanbeperformedandcustomizedbyanyofthefollowingways:

AllowingtheUsertoAutomaticallySortRowsUsingAutomaticSortingSortingRows,Columns,orRangesSettingtheAppearanceofSortIndicators

Therearevariouspropertiesofsorting.Theorderofthesortcanbeinascendingorder(AtoZ,zeroto9)ordescendingorder(ZtoA,9tozero).Themethodofcomparisoncanbecustomized.Youcanselectwhichvaluestouseasakeywhencomparinginordertosortthevalues.Thesortindicator,anarrowtypically,canbedisplayedintheheaderforthecolumnbeingusedasasortkey.Formoreinformationoncustomizingthesorting,refertotheSortInfo('SortInfoClass'intheon-linedocumentation)object.Withthisobject,youcansettheparametersforsortingandthenspecifythisobjectintheparticularsortmethodyouchoose.

Thecelltypedoesnotmatterforsorting.Thesortingisdonedependingonthedatatypeofthevaluesinthecells.IfyousortcellswithdataoftheDateTimetype,thenitsortsthosecellsbydate,andifyousortcellswithdataofthestringtype,itsortsthosecellsalphabetically.

Beawareofhowsortingworkswiththedatainthemodels.IfyouusetheautomaticsortingbyclickingthecolumnheaderoryoucalltheSortRows('SortRowsMethod'intheon-linedocumentation)methodofthesheet,thenthedatamodelisnotsorted,justthedatathatisdisplayedtotheuser.Inthiscase,anydatathatishiddenbeforethesortishiddenafterthesort,sinceSpreadmovesanyhiddenrowsautomatically.IfyouusetheSortRange('SortRangeMethod'intheon-linedocumentation)method,thedataissortedinthedatamodelanddatathatishiddenmaybecomevisibleandviceversausingthismethod.Whenyousortdata,onlythedatamodelisgettingsorted.Theselectionmodeldoesnotgetsorted.Ifyouwanttheselectedrowtomove,youwouldneedtowritecodeintheAutoSortedColumn('AutoSortedColumnEvent'intheon-linedocumentation)andAutoSortingColumn('AutoSortingColumnEvent'intheon-linedocumentation)eventstomovetheselection.Formoreinformationonthemodels,refertoUnderstandingtheUnderlyingModels.

Sortingperformedbyclickingcolumnheaderssortsonlythedisplayeddataanddoesnotaffecttheorderofactualdata

Spread Windows Forms Developer’s Guide 300

Copyright © GrapeCity, inc. All rights reserved.

Page 302: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

inthedatamodel;therefore,youcanresetthesorteddatabeingdisplayedtotheorderofactualdatabycallingeithertheResetViewRowIndexes('ResetViewRowIndexesMethod'intheon-linedocumentation)methodortheResetViewColumnIndexes('ResetViewColumnIndexesMethod'intheon-linedocumentation)methodintheSheetView.DocumentModelsclass.YoucannotresettheresultwhentheactualdatainthedatamodelaresortedwiththeSortRange('SortRangeMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)class.

SortingisnotintendedtobeusedwhenOutlook-stylegroupingisturnedon.Formoreinformationaboutgrouping(whichisatypeofsorting),refertoManagingGroupingofRowsofUserData.

ForinformationonsortingwithintheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Note:CellspansbecomeinvisiblewhensortingasheetwithanymethodexceptSortRange.

Allowing the User to Automatically Sort Rows

Youcansetthespreadsheettoallowtheusertoautomaticallysortthedatawhenacolumnheaderisclicked.Thefirsttimethecolumnheaderisclicked(selected)theunsortediconisdisplayed.Thesecondclickdisplaysthesorticonandsortsthecolumn.Iftheuserclickssuccessivelyonthesamecolumn,thenthedirectionofthesortisreversed.Thisdoesnotaffectthedatamodel,onlyhowthedataisdisplayed.Thisfigureshowstheunsortedicon:

UsetheColumn('ColumnClass'intheon-linedocumentation)objectAllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)propertyortheSheetView('SheetViewClass'intheon-linedocumentation)SetColumnAllowAutoSort('SetColumnAllowAutoSortMethod'intheon-linedocumentation)methodtoallowtheusertoperformautomaticsortingwhentheheadercellofacolumnisclicked.SettheSortIndicator('SortIndicatorProperty'intheon-linedocumentation)propertyofthecolumnyouwanttoshowtheindicator.

TheSetColumShowSortIndicator('SetColumnShowSortIndicatorMethod'intheon-linedocumentation)methodorShowSortIndicator('ShowSortIndicatorProperty'intheon-linedocumentation)propertycanbesettodisplayorhidethesortindicator.Thesortindicatorappearsintheheadercolumnasshowninthefollowingfigure,illustratingtheascendinganddescendingsortindicators.

AscendingSortIndicator DescendingSortIndicator

Whenausersortsdata,theAutoSortingColumn('AutoSortingColumnEvent'intheon-linedocumentation)eventoccursbeforethesortandthentheAutoSortedColumn('AutoSortedColumnEvent'intheon-linedocumentation)eventoccursafterthesort.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosetupsorting.5. Inthepropertieslist,selecttheColumnspropertyandclickthebuttontoopentheCell,Column,andRow

Spread Windows Forms Developer’s Guide 301

Copyright © GrapeCity, inc. All rights reserved.

Page 303: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Editor.6. Selectthecolumnsforwhichyouwanttoallowautomaticsorting.7. Inthepropertieslist,selecttheAllowAutoSortpropertyandsetthevaluetoTrue.8. ClickOKtocloseeachoftheeditors.

UsingaShortcut

UseeithertheAllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)propertyofthecolumnsortheSetColumnAllowAutoSort('SetColumnAllowAutoSortMethod'intheon-linedocumentation)methodoftheSheetsobjecttoallowautomaticsortingofthespecifiedcolumns.

Example

Thisexampleallowsautomaticsortingforthefirst30columnsinthesheet.

C#fpSpread1.Sheets[0].Columns[0,29].AllowAutoSort = true;//or//fpSpread1.Sheets[0].SetColumnAllowAutoSort(0,30,true);

VBFpSpread1.Sheets(0).Columns(0,29).AllowAutoSort = True'or'FpSpread1.Sheets(0).SetColumnAllowAutoSort(0,30,True)

UsingCode

UsetheAllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)propertytoallowautomaticsortingofthespecifiedcolumns.

Example

Thisexampleallowsautomaticsortingforthefirst30columnsinthesheet.

C#FarPoint.Win.Spread.Column mycols;mycols = fpSpread1.ActiveSheet.Columns[0,29];mycols.AllowAutoSort = true;

VBDim mycols As FarPoint.Win.Spread.Columnmycols = FpSpread1.ActiveSheet.Columns(0,29)mycols.AllowAutoSort = True

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttoallowautomaticsorting.2. Fromthepropertylistforthesheet,selectColumns.ClickonthebuttontoopentheCell,Column,andRow

editor.3. Selectthecolumnsforwhichyouwanttoallowautomaticsorting.4. Inthepropertieslist,selecttheAllowAutoSortpropertyandsetthevaluetoTrue.

Spread Windows Forms Developer’s Guide 302

Copyright © GrapeCity, inc. All rights reserved.

Page 304: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Using Automatic Sorting

Youcansortentirerowsorcolumnsautomaticallyinasheet.Thecomponentautomaticallysortstherowsinasheetaccordingtothespecifiedcolumninascendingorderunlessthesheetwaspreviouslyautomaticallysortedascending.Theautomaticsortingdisplaysthesortindicatorunlessthesortindicatorforthecolumnhasbeendisabled.Thisdoesnotaffectthedatamodel,onlyhowthedataisdisplayed.Differentoverloadsprovidedifferentwaystoperformthesorting.

UsetheAutoSortColumn('AutoSortColumnMethod'intheon-linedocumentation)methodtosortthedisplayinasheetautomaticallyaccordingtothespecifiedkeyandusetheSetColumShowSortIndicator('SetColumnShowSortIndicatorMethod'intheon-linedocumentation)tosetwhethertodisplaythesortindicator.TheAutoSortColumn('AutoSortColumnMethod'intheon-linedocumentation)methodperformsthesameactionasclickinginthecolumnheaderofthespecifiedcolumnthathasitsAllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)propertysettoTrue.TheAllowAutoSort('AllowAutoSortProperty'intheon-linedocumentation)propertydoesnotneedtobesettoTruetousethismethod.Ifthismethodiscalledsuccessivelywiththesamecolumnindex,thenthedirectionofthesortisreversed.Ifthemethodiscalledwithadifferentcolumnindex,thenthepreviouslysortedcolumn'ssortindicatorischangedbacktoSortIndicator.None(ifthereisone)andthespecifiedcolumnisusedasthekeycolumninacalltoSortRows('SortRowsMethod'intheon-linedocumentation)tosortalltherowsinthesheetbythatcolumn.Thisaffectsonlythearrangementofrowsorcolumnsonasheetanddoesnotchangethearrangementofthedata;thatis,thisdoesnotaffectthedatamodel,onlyhowthedataisdisplayed.

Note:TheSetColumShowSortIndicator('SetColumnShowSortIndicatorMethod'intheon-linedocumentation)methodmustbecalledbeforetheAutoSortColumn('AutoSortColumnMethod'intheon-linedocumentation)method;otherwise,thesortindicatorisshownandremainsdisplayed.

UsingCode

1. AllowtheautomaticsortingofacolumnorcolumnsbyusingtheSetColumnAllowAutoSort('SetColumnAllowAutoSortMethod'intheon-linedocumentation)method.

2. Ifyouwanttodisplayasortindicator,setthecolumntoshowthesortindicatorwiththeSetColumnShowSortIndicator('SetColumnShowSortIndicatorMethod'intheon-linedocumentation)method.

3. PerformtheautomaticsortbysettingtheAutoSortColumn('AutoSortColumnMethod'intheon-linedocumentation)method.

Example

Thisexampleautomaticallysortsthefirstcolumn.

C#fpSpread1.ActiveSheet.SetColumnAllowAutoSort(0, true);fpSpread1.ActiveSheet.SetColumnShowSortIndicator(0, false);fpSpread1.ActiveSheet.AutoSortColumn(0);

VBfpSpread1.ActiveSheet.SetColumnAllowAutoSort(0, True)fpSpread1.ActiveSheet.SetColumnShowSortIndicator(0, False)fpSpread1.ActiveSheet.AutoSortColumn(0)

Spread Windows Forms Developer’s Guide 303

Copyright © GrapeCity, inc. All rights reserved.

Page 305: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Sorting Rows, Columns, or Ranges

YoucansortentirerowsorcolumnsinasheetusingcodeortheSpreadDesigner.Tosortalltherowsofanentiresheetbasedonthevaluesofagivencolumnisthemostcommoncase,butSpreadallowsyoutosorteitherrowsorcolumnsandtospecifywhichcolumnorrowtouseasakeyforsorting.Thissortappliestotheentiresheet.

UsetheSortColumns('SortColumnsMethod'intheon-linedocumentation)(orSortRows('SortRowsMethod'intheon-linedocumentation))methodtosortthearrangementofcolumns(orrows)inasheetusingoneormorerows(orcolumns)asthekey.Thisdoesnotaffectthedatamodel,onlyhowthedataisdisplayed.Severaloverloadsprovidedifferentwaystosortthecolumns(orrows).Tofurthercustomizethewaysortingisperformed,usetheSortInfo('SortInfoClass'intheon-linedocumentation)objectinconjunctionwiththesemethods.

Youcansortdatainarangeofcellswithoutre-arrangingtheentireroworcolumninasheet.Thismaybeusefulwhen,forexample,youwishtoarrangemanyrowsinorderofquantitybutnotincludeinthesortthefinalrowthatcontainsthetotalsofthosequantities.Inthiscase,youwouldsortthedatainarangeofcellsbutleavethefinalrow,thebottomline,unsorted.

Therearetwowaystosortdatainarange.Forbounddata,usetheSortRows('SortRowsMethod'intheon-linedocumentation)andSortColumns('SortColumnsMethod'intheon-linedocumentation)methodsusingthespecifiedparametersintheoverloadstospecifywhichrangeofrowsorcolumnstosort.Forunbounddata,usetheSortRange('SortRangeMethod'intheon-linedocumentation)method.FormoreinformationonsortingusingtheSpreadDesigneratdesigntime,refertotheUsingtheSpreadDesignerprocedurebelow.

TheSortRange('SortRangeMethod'intheon-linedocumentation)methodisforunbounddataonly.Thismethodsortsthedatainarangeofcellsbymovingthedataaroundinthedatamodelandmovingthecell-levelstylesalongwithit.Thismethodisnotintendedforbounddata,asitmovesdata(notnecessarilybyentireroworcolumn)andhastheeffectofmovingthedataaroundinthedatasource.

WiththesortInfoarrayoftheSortRange('SortRangeMethod'intheon-linedocumentation)method,youcanspecifymultiplecriteriaforsortingthedata.Thismethodgivesyoutheabilitytosort(orarrange)datainasmallersubsetthanentirerowsorcolumnsinasheet.Formoreinformation,refertotheSortInfo('SortInfoClass'intheon-linedocumentation)object.

UsingCode

Tosortrows,usetheSortRows('SortRowsMethod'intheon-linedocumentation)method;tosortcolumns,usetheSortColumns('SortColumnsMethod'intheon-linedocumentation)method.

Example

Thisexamplesortsalltherowsinthesheetaccordingtothevaluesinthesecondcolumn.Sincecolumnindexiszero-based,thesecondcolumnis1.Thesortindicatoristurnedon.

C#fpspread1.ActiveSheet.SortRows(1,true,true);

VBFpSpread1.ActiveSheet.SortRows(1,True,True)

Example

Thisexamplesortsrows12to230usingapredefinedarrayofsortinformation.

C#FarPoint.Win.Spread.SortInfo[] sorter = new FarPoint.Win.Spread.SortInfo[1];

Spread Windows Forms Developer’s Guide 304

Copyright © GrapeCity, inc. All rights reserved.

Page 306: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

sorter[0] = new FarPoint.Win.Spread.SortInfo(0, false, System.Collections.Comparer.Default);fpSpread1.ActiveSheet.SortColumns(12,230,sorter);

VBDim sorter(1) As FarPoint.Win.Spread.SortInfosorter(0) = New FarPoint.Win.Spread.SortInfo(0, False, System.Collections.Comparer.Default)FpSpread1.ActiveSheet.SortColumns(12,230,sorter)

UsingtheSpreadDesigner

1. AtdesigntimeyoucansortdatausingtheSpreadDesignerinaveryflexibleway.Selectthecellsyouwanttosort,eitherbydraggingoverthecellsorselectingtheroworcolumnheaders.

2. FromtheDatamenu,selectSort.TheSortdialogisdisplayed.3. IntheSortdialog,selecttheoptionsyouwouldlikeandclickOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting the Appearance of Sort Indicators

Youcancustomizethedisplayofsortingindicatorsintheseways:

UsingCustomSortIndicatorImagesShowingandHidingSortIndicatorsDeterminingWhichHeaderRowDisplaystheSortIndicators

UsingCustomSortIndicatorImages

Youcancustomizethesortingindicatorimagethatappearsinthecolumnheaderofcolumnsthatallowsorting.Oneofthedefaultsortindicatorsisshownintheheaderofthefirst(A)columninthefollowingfigure.

OnewayistooverridethePaintSortIndicator('PaintSortIndicatorMethod'intheon-linedocumentation)methodintheCellTypeColumnHeaderRenderer('ColumnHeaderRendererClass'intheon-linedocumentation)classanduseyourowncustomindicator.

AnotherwayistousetheGetImage('GetImageMethod'intheon-linedocumentation)andSetImage('SetImageMethod'intheon-linedocumentation)methodsintheSpreadView('SpreadViewClass'intheon-linedocumentation)class,whichisdescribedinCustomizingtheUserInterfaceImages.

ShowingandHidingSortIndicators

Youcandisplayfortheuserorhidefromtheuserthesortindicatorsthatmayappearinthecolumnheaders.TheColumn.ShowSortIndicator('ShowSortIndicatorProperty'intheon-linedocumentation)propertyandtheSheetView.SetColumnShowSortIndicator('SetColumnSortIndicatorMethod'intheon-linedocumentation)methodsetwhetherthecolumnshowsthesortindicatorthenexttimethattheSheetView.AutoSortColumn('AutoSortColumnMethod'intheon-linedocumentation)methodiscalledforthatcolumn.IthasnoeffectuntilAutoSortColumniscalledforthatcolumnindex.

Spread Windows Forms Developer’s Guide 305

Copyright © GrapeCity, inc. All rights reserved.

Page 307: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DeterminingWhichHeaderRowDisplaystheSortIndicators

YoucanspecifyinwhichrowtodisplaythesortindicatorsthatmayappearinthecolumnheadersbysettingtheColumnHeaderAutoSortIndex('ColumnHeaderAutoSortIndexProperty'intheon-linedocumentation)property.Bydefaulttheyappearinthebottomofthecolumnheaderrows,butifyouhavemorethanoneheaderrow,youcanspecifywhichrow.YoucanspecifywhichrowdisplaystheautomatictextbysettingtheColumnHeaderAutoTextIndex('ColumnHeaderAutoTextIndexProperty'intheon-linedocumentation)property(ortheColumnHeader.AutoTextIndex('AutoTextIndexProperty'intheon-linedocumentation)property);however,changingtherowthatdisplaystheautomatictextdoesnotchangetherowthatdisplaysthesortindicator.

UsingCode

Tocreateacustomsortindicator:

Createanewcolumnheaderrendererclass.Customizethesortindicatorthatappearsinthecolumnheader.

Example

Thefollowingexamplecreatesacustomsortindicator.

C#// In the form load section, allow sorting (and filtering).private void Form1_Load(object sender, System.EventArgs e){ fpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = new myColumnHeaderRenderer(); fpSpread1.Sheets[0].Columns[0].AllowAutoSort =true; fpSpread1.Sheets[0].Columns[0].AllowAutoFilter =true;}// Define a new column header renderer.public class myColumnHeaderRenderer : FarPoint.Win.Spread.CellType.ColumnHeaderRenderer{ // Override the sorting indicator paint method. override public void PaintSortIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor) { g.FillRectangle(new SolidBrush(Color.Red), r); } // Override the filtering indicator paint method. override public void PaintFilterIndicator(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, float zoomFactor) { g.FillRectangle(new SolidBrush(Color.Blue), r); }} //End Form1_Load

VB' Define a new column header renderer.Public Class myColumnHeaderRendererInherits FarPoint.Win.Spread.CellType.ColumnHeaderRenderer ' Override the sorting indicator paint method. Public Overrides Sub PaintSortIndicator(ByVal g As Graphics, ByVal r As Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal zoomFactor As Single)

Spread Windows Forms Developer’s Guide 306

Copyright © GrapeCity, inc. All rights reserved.

Page 308: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

g.FillRectangle(New SolidBrush(Color.Red), r) End Sub 'PaintSortIndicator ' Override the filtering indicator paint method. Public Overrides Sub PaintFilterIndicator(ByVal g As Graphics, ByVal r As Rectangle, ByVal appearance As FarPoint.Win.Spread.Appearance, ByVal zoomFactor As Single) g.FillRectangle(New SolidBrush(Color.Blue), r) End Sub 'PaintFilterIndicatorEnd Class 'myColumnHeaderRenderer' In the form load section, allow sorting (and filtering).Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.ActiveSheet.ColumnHeader.DefaultStyle.Renderer = New myColumnHeaderRenderer FpSpread1.Sheets(0).Columns(0).AllowAutoSort = True FpSpread1.Sheets(0).Columns(0).AllowAutoFilter = TrueEnd Sub 'Form1_Load

Spread Windows Forms Developer’s Guide 307

Copyright © GrapeCity, inc. All rights reserved.

Page 309: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Interaction with Cell Types

Celltypesdefinethetypeofinformationthatappearsinacell,howthatinformationisdisplayed,andhowtheusercaninteractwithit.Therearetwodifferentgroupsofcelltypesthatcanbesetforcellsinasheet:onesthataresimplyrelatedtoformattingoftextinacellandonesthatdisplayacontrolorgraphic.Spreadincludesbuilt-incelltypesandallowsyoudefinecustomcelltypes.Celltypescanbeassignedtoindividualcellsorentirerowsorcolumns.

Thesetasksofworkingwithcelltypesareorganizedintothesebroadcategories:

UnderstandingHowCellTypesWorkWorkingwithEditableCellTypesWorkingwithGraphicalCellTypesUnderstandingAdditionalFeaturesofCellTypes

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Fordetailedinformationonclassesbehindthevariousbuilt-incelltypes,refertotheFarPoint.Win.Spread.CellType('FarPoint.Win.Spread.CellTypeNamespace'intheon-linedocumentation)namespace.

ForinformationonsettingcelltypesusingtheSpreadDesigner,refertotheSpreadDesignerGuide(on-linedocumentation).

Understanding How Cell Types Work

Thesetopicsdescribehowcelltypeswork:

UnderstandingCellTypeBasicsDeterminingtheCellTypeoftheActiveCellUnderstandingHowCellTypesDisplayandFormatDataUnderstandingHowCellTypeAffectsModelData

Understanding Cell Type Basics

Youcanspecifythewayauserinteractswithacell,includinghowdataisentered,displayed,andvalidated,byspecifyingthecelltype.Thecelltypedefinesaneditorcontrolforthecellthathandlesdataentry,aformattercontroltohandlehowthedataisinterpreted,andarenderercontrolthathandleshowthedataisdisplayedinthecell.Examplesofcelltypesarecheckboxcell,date-timecell,orasimpletextcell.

Celltypescanbesetforindividualcells,columns,rows,arangeofcells,oranentiresheet.Foranycelltypetherearepropertiesofacellthatcanbeset.Ingeneral,workingwithcelltypesincludesdefiningthecelltype,settingtheproperties,andapplyingthatcelltypetocells.

Payattentiontodatatypeswhenworkingwithcelltypes.Forseveralcelltypes,includingComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation),DateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation),andMultipleOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation),thereisanEditorValueproperty.MakesuretheValuepropertyyouaresettinginthecellmatchesthetypespecifiedbytheEditorValueproperty.

Editor,Formatter,andRenderer

Acelltypeconsistsofaneditor,arenderer,andaformatter.Theeditorisacontrolinstancethatiscreatedandplacedinthelocationofthecellwhenthecellgoesintoeditmode.Theeditorisresponsibleforcreatingandmanagingthecell's

Spread Windows Forms Developer’s Guide 308

Copyright © GrapeCity, inc. All rights reserved.

Page 310: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

editcontrolwhenineditmode.Theformatterisresponsibleforconvertingthecell'svaluetoandfromtext(forexamplewhengettingorsettingacell'sText('TextProperty'intheon-linedocumentation)property).Therendererpaintsthecontrolinsidethecellrectanglewhentheeditorisnotthereorwhenthecellisnotineditmode.

Inmostcases,youwantthecelltolookthesamewhetheryouareineditmodeornotineditmode.Inthesecases,youwouldcreateasinglecelltypeandassignittothecell'sCellType('CellTypeProperty'intheon-linedocumentation)property.Thissinglecelltypeisusedasthecell'seditor,renderer,andformatter.Ifyouwantthecelltoappeardifferentlydependingonwhetheryouareineditmodeornotineditmode,thenyoucancreatetwodifferentcelltypesandassignonecelltypeasthecell'seditorandtheothercelltypeasthecell'srenderer.Inthiscase,youprobablyalsowanttoassignoneofthecelltypesasthecell'sformatter.Formoreinformation,refertotheICellType('ICellTypeInterface'intheon-linedocumentation)interface.

EditBaseCellType

Thedesignofcelleditingrequiresthatthecelltypereturnaneditorcontrolthatisthenplacedoverthecell.Theeditorcontrolcanbetextbased(forexample,textbox)orgraphicsbased(forexample,checkbox).Theeditorcontrolcandropdownlists(forexample,combobox)orpopupdialogs(forexample,datepicker).TheEditBaseCellType('EditBaseCellTypeClass'intheon-linedocumentation)classisaclassfromwhichthebuilt-intextbasedcelltypes(forexample,general,text,number,data-time,andsoon)arederived.Theclasscanalsobeusedtoderivecustomcelltypesthataretextbased.TheISubEditor('ISubEditorInterface'intheon-linedocumentation)interfaceisusedtocombineatext-basededitorwithadrop-downlist(forexample,combobox)orpop-updialog(forexampledatepicker).Thedatamodelcanholdanyvalue,includingcolors.Thecelltypeisalwayspassedtherawvaluefromthedatamodel.

HeaderCells

Whileyoucanassignacelltypetothecellsintherowheaderorcolumnheader,thecelltypeisonlyusedforpaintingpurposes;thecomponentrendersheadercellsbutdoesnotallowediting.In‑celleditingislimitedtocellsinthedataarea.Ifyouwanttohavesomethingeditablethatactslikeaheader,youcanhide(turnoff)thecolumnheader,freezethefirstrowofthespreadsheet,thenusethefrozenrowtoappearasheadercells.

Determining the Cell Type of the Active Cell

Youcandeterminethecelltypeoftheactivecell.YoucanusetheGetCellType('GetCellTypeMethod'intheon-linedocumentation)methodoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

Understanding How Cell Types Display and Format Data

ThevalueoftheTextpropertycontainstheformatteddataasdisplayedinthecell;thevalueoftheValuepropertycontainstheunformatteddataassavedinthemodel.YoucanusetheSheetView('SheetViewClass'intheon-linedocumentation)GetText('GetTextMethod'intheon-linedocumentation)andGetValue('GetValueMethod'intheon-linedocumentation)methodstoobtainthecontentsofthecell,regardlessofcelltype.

Thefollowingtableliststheeditablecelltypes,andhoweachcelltypeworkswiththedata,whetherformatted(Text)orunformatted(Value).

EditableCellType SampleInput

FormattedData

UnformattedData

CurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)

"$10,000.00" "$10,000.00" 10000.00

DateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)

"10/29/2002" "10/29/2002" DateTimeobjectofTuesday,October29,200212:00:00AM

GcCharMaskCellType "123-45- "123-45-6789" "123456789"

Spread Windows Forms Developer’s Guide 309

Copyright © GrapeCity, inc. All rights reserved.

Page 311: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('GcCharMaskCellTypeClass'intheon-linedocumentation)

6789"

GcDateTimeCellType('GcDateTimeCellTypeClass'intheon-linedocumentation)

"10/29/2002" "10/29/2002" DateTimeobjectofTuesday,October29,200212:00:00AM

GcMaskCellType('GcMaskCellTypeClass'intheon-linedocumentation)

"123-45-6789"

"123-45-6789" "123456789"

GcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)

"10000.00" "10000.00" 10000.00

GcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)

Anytext Stringofthattext

Stringofthattext

GcTimeSpanCellType('GcTimeSpanCellTypeClass'intheon-linedocumentation)

"1.22:50:40" "1.22:50:40" TimeSpanobject{1.22:50:40}

GeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)

Anydata Stringofthatdata

DependsonwhetherDateTime,Boolean,orTextreturnstheDateTimeobject,theBooleanvalue,ortheTextvalue

MaskCellType('MaskCellTypeClass'intheon-linedocumentation)

"123-45-6789"

"123-45-6789" "123456789"

NumberCellType('NumberCellTypeClass'intheon-linedocumentation)

"10000.00" "10000.00" 10000.00

PercentCellType('PercentCellTypeClass'intheon-linedocumentation)

"15%" "15%" 0.15

RegularExpressionCellType('RegularExpressionCellTypeClass'intheon-linedocumentation)

"99-999-9999"

"99-999-9999" "99-999-9999"

TextCellType('TextCellTypeClass'intheon-linedocumentation)

Anytext Stringofthattext

Stringofthattext

Thefollowingtableliststhegraphicalcelltypes,andhoweachcelltypeworkswiththeTextandValueproperties.

GraphicalCellType SampleInput

TextData ValueData

BarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)

Pictureasdata

N/A N/A

ButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)two-state

True "1" True

False "0" False

Notsetlooksfalse

Emptystring False

CheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)two-state

True(checked)

"True" 1

False(unchecked)

"False" 0

Spread Windows Forms Developer’s Guide 310

Copyright © GrapeCity, inc. All rights reserved.

Page 312: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Notsetlooksfalse

Emptystring False

CheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)three-state

True(checked)

"1" 1

False(unchecked)

"0" 0

Indeterminate(gray)

"2" 2

Notsetlooksfalse

Emptystring 0

ColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)

Selectedcolor Colorname Colorname

ComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)andMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)

Anyitem Textofselecteditem

Textofselecteditemorindexofselecteditem(seetheEditorValue('EditorValueProperty'intheon-linedocumentation)property)

Nothingselected

Emptystring Null

GcComboBoxCellType('GcComboBoxCellTypeClass'intheon-linedocumentation)

Anyitem Textofselecteditem

Textofselecteditemorindexofselecteditem(seetheEditorValue('EditorValueProperty'intheon-linedocumentation)property)

Nothingselected

Emptystring Null

HyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)

anytext ArrayofBooleanvalues:"True"(forvisitedlink)or"False"(fornotvisited)

ArrayofBooleanvalues:"True"(forvisitedlink)or"False"(fornotvisited)

ImageCellType('ImageCellTypeClass'intheon-linedocumentation)

Pictureasdata

N/A N/A

ListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)

Array Array Array

MultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)

Anyitemselected

Textofselecteditem

Indexofselecteditem(numeric)

Nothingselected

Emptystring Null

ProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)

15,between10and20

"50%"(stringrepresentationofnumericvalue)

15(actualvalue)

Spread Windows Forms Developer’s Guide 311

Copyright © GrapeCity, inc. All rights reserved.

Page 313: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

RichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)

Stringinrichtextformat

Stringinrichtextformat

Stringinrichtextformat

SliderCellType('SliderCellTypeClass'intheon-linedocumentation)

4,between0and10

"4"(stringrepresentationofnumericvalue)

4

Forinformationonotheraspectsofcelldisplay,refertoResizingaCelltoFittheData.

Understanding How Cell Type Affects Model Data

Thecelltypeaffectshowthevaluesarestoredinthemodel.

Thefollowingtableliststheeditablecelltypesandthedatatypeofthevalueinthecellthatiswrittentothedatamodel.

EditableCellType DataTypeWrittentoModel

CurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)

Decimal

DateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)

Date-TimeObject

GcCharMaskCellType('GcCharMaskCellTypeClass'intheon-linedocumentation)

String

GcDateTimeCellType('GcDateTimeCellTypeClass'intheon-linedocumentation)

Date-TimeObject

GcMaskCellType('GcMaskCellTypeClass'intheon-linedocumentation)

String

GcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)

Double

GcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)

String

GcTimeSpanCellType('GcTimeSpanCellTypeClass'intheon-linedocumentation)

TimeSpanObject

GeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)

DependswhetherDate-Time,Boolean,orString

MaskCellType('MaskCellTypeClass'intheon-linedocumentation) String

NumberCellType('NumberCellTypeClass'intheon-linedocumentation)

Double

PercentCellType('PercentCellTypeClass'intheon-linedocumentation)

Double

RegularExpressionCellType('RegularExpressionCellTypeClass'intheon-linedocumentation)

String

TextCellType('TextCellTypeClass'intheon-linedocumentation) String

Thefollowingtableliststhegraphicalcelltypesandthedatatypeofthevalueinthecellthatiswrittentothedatamodel.

GraphicalCellType DataTypeWrittentoModel

Spread Windows Forms Developer’s Guide 312

Copyright © GrapeCity, inc. All rights reserved.

Page 314: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

BarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)

Valueofbarcode

ButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)two-state

Integer

ButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)one-state

Null

CheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)three-state

Integer(0=false,1=true,2=indeterminate)

CheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)two-state

Boolean

ColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)

Null

ComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)andMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)

DependsonvalueofEditorValueproperty.String,ifEditorValue=Stringoritemdata.Integer,ifEditorValue=index

GcComboBoxCellType('GcComboBoxCellTypeClass'intheon-linedocumentation)

DependsonvalueofEditorValueproperty.String,ifEditorValue=Stringoritemdata.Integer,ifEditorValue=index

HyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)

ArrayofBooleanvalues(whethereachlinkisclickedorunclicked)

ImageCellType('ImageCellTypeClass'intheon-linedocumentation)

System.Drawing.ColororNull

ListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)

Array

MultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)

DependsonvalueofEditorValueproperty.String,ifEditorValue=Stringoritemdata,Integer,ifEditorValue=index

ProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)

Double

RichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)

String

SliderCellType('SliderCellTypeClass'intheon-linedocumentation)

Integer

Working with Editable Cell Types

Youcanworkwiththeeditablecelltypesasdescribedinthefollowingtopics:

SettingaCurrencyCellSettingaDate-TimeCellSettingaGcCharMaskCell(on-linedocumentation)SettingaGcDateTimeCellSettingaGcMaskCell(on-linedocumentation)SettingaGcNumberCell

Spread Windows Forms Developer’s Guide 313

Copyright © GrapeCity, inc. All rights reserved.

Page 315: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettingaGcTextBoxCellSettingaGcTimeSpanCell(on-linedocumentation)SettingaGeneralCellSettingaMaskCellSettingaNumberCellSettingaPercentCellSettingaRegularExpressionCellSettingaTextCell

Forothercelltypes,refertoWorkingwithGraphicalCellTypes.

Setting a Currency Cell

Youcansetacelltodisplaycurrencyvaluesusingthecurrencycell.Acurrencycelldisplaysthenumericcurrencyvalueswithformattingthatyoucancustomizeincludingacurrencysymbol,aseparatorcharacter,andotherformatting.

YouusetheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)classtosetthecurrencycellanditsproperties.

Bydefault,SpreadusestheregionalWindowssettings(oroptions)ofthemachineonwhichitrunsfortheformattingofcurrency.Youcancustomizeanyofthesecurrencyformattingproperties:

currencysymbol(andwhethertodisplayit)separatorcharacter(andwhethertodisplayit)decimalsymbolwhethertodisplayaleadingzeropositivevalueindicator(andwhethertodisplayit)negativevalueindicator(andwhethertodisplayit)

Bydefault,inacurrencycell,ifyoudouble-clickonthecellineditmodeatrun-time,apop-upcalculatorappears.Youcandeterminewhethertoallowthis,andyoucanspecifythetextthatdisplaysontheOKandCancelbuttons.Formoreinformation,refertoCustomizingthePop-UpCalculatorControl.

Youcanalsosettheminimumandmaximumvaluesthatcanbeenteredtoprovidevalidationoftheuserentry.Todefinethelimitsforvalues,refertoLimitingValuesforaNumericCell.

UsingSpinButtons

Bydefault,nospinbuttonsareshown,butyoucandisplayspinbuttonsonthesideofthecellwhenthecellisineditmode.YoucansetvariousspinfunctionsusingthepropertiesoftheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)thatbeginwiththewordSpin.Formoreinformation,refertoDisplayingSpinButtons.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.

Spread Windows Forms Developer’s Guide 314

Copyright © GrapeCity, inc. All rights reserved.

Page 316: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheCurrencycelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefineacurrencycellbycreatinganinstanceoftheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)class.

2. SpecifytheformattingofacurrencycellbysettingtheCurrencySymbol('CurrencySymbolProperty'intheon-linedocumentation)andotherpropertiesfortheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)object.

3. AssignthecurrencycelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyletotheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesacurrencycell.

C#FarPoint.Win.Spread.CellType.CurrencyCellType currcell = new FarPoint.Win.Spread.CellType.CurrencyCellType();currcell.CurrencySymbol = "US$";currcell.DecimalSeparator = ":";currcell.DecimalPlaces = 8;fpSpread1.ActiveSheet.Cells[1,1].CellType = currcell;

VBDim currcell As New FarPoint.Win.Spread.CellType.CurrencyCellType()currcell.CurrencySymbol = "US$"currcell.DecimalSeparator = ":"currcell.DecimalPlaces = 8FpSpread1.ActiveSheet.Cells(1,1).CellType = currcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheCurrencycell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectCurrency.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Date-Time Cell

Spread Windows Forms Developer’s Guide 315

Copyright © GrapeCity, inc. All rights reserved.

Page 317: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcansetacelltodisplaydateandtimeandonlyallowuserinputsofdateandtimeusingthedate-timecell.Youdeterminetheformatofthedateandtimetodisplay.

YouusetheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)classtosetthedate-timecellanditsproperties.

ThedefaultvaluesusetheRegionalSettingsorRegionalOptionsintheWindowsenvironment.Youcanspecifytheformatusingseveralproperties.Foracompletelistofdateandtimeformats,refertotheDateTimeFormat('DateTimeFormatEnumeration'intheon-linedocumentation)enumerationandtheDateTimeFormat('DateTimeFormatProperty'intheon-linedocumentation)property.Ifadatetimecelldisplaysdatesandtimesinlongdateandtimeformat,andthecurrentdateandtimeis"10/29/200211:10:01",theTextpropertyreturns"Tuesday,October29,200211:10:01AM"astheformatteddataofthecell.TheValuepropertyreturnsthedate-timeobjectofthatdateandtime.

Thedate-timecellalsohasanEditorValue('EditorValueProperty'intheon-linedocumentation)propertythatallowsyoutodeterminewhatiswrittentothedatamodel.

Bydefault,inadate-timecell,ifyoudouble-clickonthecellineditmodeatrun-time,apop-upcalendar(orclock)appears.Youcandeterminewhethertoallowthis,andyoucanspecifythetextthatdisplaysontheOKandCancelbuttons.Formoreinformation,refertoCustomizingthePop-UpDate-TimeControl.

SpreadusestheTimeDefault('TimeDefaultProperty'intheon-linedocumentation)propertytofillinthetimeportionthatisnotsetintothecell.Whenyouusethepopupcalendartosetthedateforthecell,thetimeissettomidnight.Ifyouwantadifferenttime,youwouldneedtousetheSubEditorClosedeventandchangethevalueinthecell.(Youcanalsocreateyourownsub-editortocreateaclockandcalendarformtopopupforthecell.)YoucanlookinISubEditorinterfaceformoreinformationonhowtoimplementthis.Asforthevalue,theValue('ValueProperty'intheon-linedocumentation)propertyreturnsisaDateTimeobjectthatencapsulatesboththedateandtime.QuerytheTimeOfDaypropertyfromthereturnedDateTimeobjecttogetthetimeofday.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheDateTimecelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. Definethedate-timecellbycreatinganinstanceoftheDateTimeCellType('DateTimeCellTypeClass'in

Spread Windows Forms Developer’s Guide 316

Copyright © GrapeCity, inc. All rights reserved.

Page 318: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theon-linedocumentation)class.2. Specifythemessagetodisplayifinvalid.3. Specifytheformatofthedatetodisplay.4. Assignthedate-timecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,

orstyletotheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)object.

Example

DisplaythedateasTuesday,March04(dayofweek,monthandnumberofday)inthesecondrow,secondcolumncell.

C#FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType();datecell.DateSeparator = " | ";datecell.TimeSeparator = ".";datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateWithTime;datecell.MaximumDate = new System.DateTime(2100, 1, 1);datecell.MinimumDate = new System.DateTime(1990, 12, 31);datecell.MaximumTime = new System.TimeSpan(15, 59, 59);datecell.MinimumTime = new System.TimeSpan(11, 0, 0);fpSpread1.ActiveSheet.Columns[1].Width = 175;fpSpread1.ActiveSheet.Cells[1, 1].CellType = datecell;fpSpread1.ActiveSheet.Cells[1, 1].Value = System.DateTime.Now;

VBDim datecell As New FarPoint.Win.Spread.CellType.DateTimeCellType()datecell.DateSeparator = " | "datecell.TimeSeparator = "."datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateWithTimedatecell.MaximumDate = new System.DateTime(2100, 1, 1)datecell.MinimumDate = new System.DateTime(1990, 12, 31)datecell.MaximumTime = new System.TimeSpan(15, 59, 59)datecell.MinimumTime = new System.TimeSpan(11, 0, 0)fpSpread1.ActiveSheet.Columns(1).Width = 175FpSpread1.ActiveSheet.Cells(1, 1).CellType = datecellFpSpread1.ActiveSheet.Cells(1, 1).Value = System.DateTime.Now

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheDateTimecell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectDateTime.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a GcDateTime Cell

YoucanusetheGcDateTimecelltodisplaydateandtimevalues.TheGcDateTimecellallowstheusertopickadatefromacalendardrop-downortypeinthecell.ThiscellispartoftheGrapeCity.Win.PluginInputManassembly.

Spread Windows Forms Developer’s Guide 317

Copyright © GrapeCity, inc. All rights reserved.

Page 319: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheGcDateTimecellsupportsdifferentcalendarstylesfromtheDateTimecell.YoucanspecifywhichfieldstodisplaywiththeDisplayFields('DisplayFieldsProperty'intheon-linedocumentation)property.

YoucanspecifythefocuspositionwhenthecellgetsfocuswiththeFocusPosition('FocusPositionProperty'intheon-linedocumentation)propertyandyoucanspecifywhetherfocusleavesthecellaftertypingthelastcharacterinthedatevaluewiththeExitOnLastChar('ExitOnLastCharProperty'intheon-linedocumentation)property.

YoucanusetheShortcutKeys('ShortcutKeysProperty'intheon-linedocumentation)propertytomapkeystoactionsfortheGcDateTimeandGcTextBoxcells.Ineditmode,theseshortcutkeyshaveprecedenceovertheSpreadinputmaps.ThecellusestheSpreadinputmapswhennotineditmode.

Youcanspecifythetypeofdrop-downtodisplaywiththeDropDownType('DropDownTypeProperty'intheon-linedocumentation)property.Thedrop-downpickertypeiseasiertouseinatouchenvironment.

Foracompletelistofproperties,seetheGcDateTimeCellType('GcDateTimeCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheGcDateTimecelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethetextcellbycreatinganinstanceoftheGcDateTimeCellType('GcDateTimeCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyleto

theGcDateTimeCellTypeobject.

Spread Windows Forms Developer’s Guide 318

Copyright © GrapeCity, inc. All rights reserved.

Page 320: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

ThisexamplecreatesaGcDateTimecell.

C#GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType inputcell = newGrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType();inputcell.EditMode = GrapeCity.Win.Spread.InputMan.CellType.EditMode.Overwrite;fpSpread1.Sheets[0].Cells[0, 0].CellType = inputcell;

VBDim inputcell As New GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellTypeinputcell.EditMode = GrapeCity.Win.Spread.InputMan.CellType.EditMode.OverwriteFpSpread1.Sheets(0).Cells(0, 0).CellType = inputcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheTextcelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectGcDateTime.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a GcNumber Cell

Youcancreateanumbercellthatdisplaysasidebuttonandcalculator.TheGcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)cellispartoftheGrapeCity.Win.PluginInputManassembly.

Selectthesidebuttontodisplaythedrop-downcalculatorasshowninthefollowingimage.SelectOKtoclosethecalculator.

Youcanspecifywhethertodisplay0ifthecellvalueisnullwiththeAllowDeleteToNull('AllowDeleteToNullProperty'intheon-linedocumentation)property.

Youcandisplaythepop-upcalculatorusingtheCtrlkeyandtheadd,subtract,multiply,ordividekeyonthenumber

Spread Windows Forms Developer’s Guide 319

Copyright © GrapeCity, inc. All rights reserved.

Page 321: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

padwhilethecellisineditmode.PressEntertofinishthecalculationandacceptthevalue.Thefollowingimagedisplaysthepop-upcalculator.

Foracompletelistofproperties,seetheGcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheGcNumbercelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethecellbycreatinganinstanceoftheGcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyleto

theGcNumberCellTypeobject.

Example

ThisexamplecreatesaGcNumbercell.

C#GrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType ncell = newGrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType();fpSpread1.Sheets[0].Cells[0, 0].CellType = ncell;

VBDim ncell As New GrapeCity.Win.Spread.InputMan.CellType.GcNumberCellType()FpSpread1.Sheets(0).Cells(0, 0).CellType = ncell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheGcNumbercell

Spread Windows Forms Developer’s Guide 320

Copyright © GrapeCity, inc. All rights reserved.

Page 322: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectGcNumber.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a GcTextBox Cell

Youcancreateatextcellthatdisplaystextandallowsyoutospecifypatternsofallowedcharacters.TheGcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)cellispartoftheGrapeCity.Win.PluginInputManassembly.

YoucanspecifyanautomaticcompletemodeandacustomsourcewiththeAutoCompleteMode('AutoCompleteModeProperty'intheon-linedocumentation)andAutoCompleteCustomSource('AutoCompleteCustomSourceProperty'intheon-linedocumentation)properties.YoucanalsospecifymaximumlimitsforthecellwiththeMaxLength('MaxLengthProperty'intheon-linedocumentation)property.

YoucanusetheShortcutKeys('ShortcutKeysProperty'intheon-linedocumentation)propertytomapkeystoactionsfortheGcDateTimeandGcTextBoxcells.Ineditmode,theseshortcutkeyshaveprecedenceovertheSpreadinputmaps.ThecellusestheSpreadinputmapswhennotineditmode.

TheFormatString('FormatStringProperty'intheon-linedocumentation)propertyallowsyoutospecifyspecificcharactersthatareallowedinthecell.ThefollowingSpreadDesignertabledisplaystheavailablecharacters.

Spread Windows Forms Developer’s Guide 321

Copyright © GrapeCity, inc. All rights reserved.

Page 323: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Foracompletelistofproperties,seetheGcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheGcTextBoxcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

Spread Windows Forms Developer’s Guide 322

Copyright © GrapeCity, inc. All rights reserved.

Page 324: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. DefinethetextcellbycreatinganinstanceoftheGcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyleto

theGcTextBoxCellTypeobject.

Example

ThisexamplecreatesaGcTextBoxcellandcutsCrLfcharactersincopied,cut,orpastedstrings.

C#GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType inputcell1 = newGrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();inputcell1.Multiline = true;inputcell1.AcceptsCrLf = GrapeCity.Win.Spread.InputMan.CellType.CrLfMode.Cut;fpSpread1.Sheets[0].Cells[1, 1].CellType = inputcell1;

VBDim inputcell1 As New GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellTypeinputcell1.Multiline = Trueinputcell1.AcceptsCrLf = GrapeCity.Win.Spread.InputMan.CellType.CrLfMode.CutFpSpread1.Sheets(0).Cells(1, 1).CellType = inputcell1

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheTextcelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectGcTextBox.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a General Cell

Thegeneralcellisthedefaultcelltypeforthecellsinthesheets.Unlessyouspecifyanothercelltype,thecomponentassignsthegeneralcelltypetothecells.Thegeneralcellcanbeusedasisforenteringtextornumberswhereformattingisnotcriticalorthetypeofdataisnottiedtoaspecificdatatype.Forspecificcelltypeswhereformattingisimportant,seetheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation),DateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation),NumberCellType('NumberCellTypeClass'intheon-linedocumentation),andPercentCellType('PercentCellTypeClass'intheon-linedocumentation)cells.

YouusetheGeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)classtosetthegeneralcellanditsproperties.

Withthegeneralcellyoucanformatthedisplayedvaluesregardlessoftheuserinput.Thegeneralcelltypeincludesaformatterthattakesthedataenteredbytheuserandassignsitoneoftheknownformatsanddatatypes.Therefore,youneednotworryaboutsettingcelltypesbecausethegeneralcelltypehandlesinputsofmanykinds.

Theopennessofthegeneralcellcanberestrictedifyouwanttoallowtheusertoenterdatainanyacceptableformat,butwantittobeformattedanddisplayedinaspecificway.Toallowtheusertoenterdatainanyacceptableformatandformatanddisplaythedatainaspecificway,adjusttheformatterforthegeneralcelltype.Todothis,specifyaformat

Spread Windows Forms Developer’s Guide 323

Copyright © GrapeCity, inc. All rights reserved.

Page 325: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

stringforthegeneralcellandthegeneralformatterparsestheuser-entereddata,butwhenthedataisdisplayed,yourcustomformatisusedratherthantheformatusedbytheenduser.YoucanusetheFormatStringproperty.Hereisanexample:

VisualBasicDim gnrlcell As New FarPoint.Win.Spread.GeneralCellTypegnrlcell.FormatString = "#,###.00"FpSpread1.Sheets(0).Cells(1, 1).CellType = gnrlcell

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheGeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheGeneralcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethegeneralcellbycreatinganinstanceoftheGeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthegeneralcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheGeneralCellType('GeneralCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplesetsacelltobeageneralcell.

C#FarPoint.Win.Spread.CellType.GeneralCellType gnrlcell = new FarPoint.Win.Spread.CellType.GeneralCellType();fpSpread1.ActiveSheet.Cells[1, 1].CellType = gnrlcell;

VBDim gnrlcell As New FarPoint.Win.Spread.CellType.GeneralCellType()FpSpread1.ActiveSheet.Cells(1, 1).CellType = gnrlcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.

Spread Windows Forms Developer’s Guide 324

Copyright © GrapeCity, inc. All rights reserved.

Page 326: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheGeneralcelltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectGeneral.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Mask Cell

Youcanuseamaskcellformaskingcharacterstolimituserentry.Youspecifywhichsubsetsofcharactersareallowedforeachiteminthemask.Youcandefinehowthemaskappears,withliteralsdisplayedexactlyastypedandplaceholdersshowingtheplacesforuserentry.Tocreateamask,settheMask('MaskProperty'intheon-linedocumentation)propertytoastringofmaskcharacters.Eachmaskcharacterrepresentsapositioninwhichtheusercantypeacharacter.

YouusetheMaskCellType('MaskCellTypeClass'intheon-linedocumentation)classtosetthemaskcellanditsproperties.

Foradetailedlistofthemaskcharacters,refertotheMask('MaskProperty'intheon-linedocumentation)propertyintheMaskCellType('MaskCellTypeClass'intheon-linedocumentation)class.Foradescriptionofhowtosettheplaceholdercharacter,refertotheMaskChar('MaskCharProperty'intheon-linedocumentation)property.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheMaskcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethemaskcellbycreatinganinstanceoftheMaskCellType('MaskCellTypeClass'intheon-linedocumentation)class.

2. Definethemask,includingliteralsandplaceholdersbysettingtheMask('MaskProperty'intheon-linedocumentation)property.

3. AssignthemaskcelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyletotheMaskCellType('MaskCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplesetsacelltobeamaskcellandrestrictstheusertoenteringtwoalphabeticnamesandpromptsthemwith

Spread Windows Forms Developer’s Guide 325

Copyright © GrapeCity, inc. All rights reserved.

Page 327: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

X’s.Thedisplaylookslikethis:

->XXXXXXXX:XXXXXXXX<-

C#FarPoint.Win.Spread.CellType.MaskCellType maskcell = new FarPoint.Win.Spread.CellType.MaskCellType();maskcell.Mask = "-> ULLLLLLL : ULLLLLLL <-";maskcell.MaskChar = Convert.ToChar("X");fpSpread1.ActiveSheet.Cells[1, 1].CellType = maskcell;

VBDim maskcell As New FarPoint.Win.Spread.CellType.MaskCellType()maskcell.Mask = "-> ULLLLLLL : ULLLLLLL <-"maskcell.MaskChar = "X"FpSpread1.ActiveSheet.Cells(1, 1).CellType = maskcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheMaskcelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectMask.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Number Cell

Youcanuseanumbercellforenteringdouble-precisionfloatingpointnumbersaswellasfractions.Youcandisplaydecimalnumbers,integers,orfractions.Thetopicsbelowdiscussthevariousaspectsofnumbercellformattingandcalculation.

YouusetheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)classtosetthenumbercellanditsproperties.UsetheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)classtosetthecurrencycellanditsproperties.

SettingPrecision

NumbersaretypicallycalculatedandstoredusingtheDoubledatatypewhichprovidesanaccuracyofabout15digits.Thecellcanbeformattedtodisplayasmanyorasfewdigitsasyouwant.Forexample,thefollowingcodewouldsumthevaluesinthecellrangeA1:A5andplacetheresultincellA6.ThevaluestoredincellA6wouldhavefullaccuracy(uptothelimitsoftheDoubledatatype),butthetextdisplayedincellA6wouldshowthevalueroundedtothenearesttenthsplace(onedecimalplace).

C#NumberCellType ct = new NumberCellType();ct.DecimalPlaces = 1;spread.Sheets[0].Cells[5,0].CellType = ct;spread.Sheets[0].Cells[5,0].Formula = "SUM(A1:A5)";

Numbercellssupports15significantdigitsofprecision.Thisisatotalofalldigits,integralandfractional.Forexample,whenyouhave10fractionaldigits,youlimitthenumberofintegerdigitstotheleftofthedecimalto5digits.Also,there

Spread Windows Forms Developer’s Guide 326

Copyright © GrapeCity, inc. All rights reserved.

Page 328: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

isthepossibilityoffloatingpointerrorswiththeDoubledatatype.Formoreaccurateprecisionoflargenumbersornumberswithlargefractionalportions,considerusingacurrencycellwhichusestheDecimaldatatypeandisnotpronetofloatingpointerrors.

FormattingNumbers

Youcancustomizethenumbercelltodisplaythenumberasanintegerordecimalwithseveralformattingfeaturesassummarizedinthistableofproperties.Anexampleoftheuseofthesepropertiesisprovidedafterthetable.

Property DescriptionDecimalPlaces('DecimalPlacesProperty'intheon-linedocumentation)

Setsthenumberofdecimalplacesinthedisplayofthenumber,foradecimalnumber.

DecimalSeparator('DecimalSeparatorProperty'intheon-linedocumentation)

Setsthedecimalcharacterforthedisplayofadecimalnumber.

FixedPoint('FixedPointProperty'intheon-linedocumentation)

Setswhethertodisplayzerosasplaceholdersinthedecimalportionofthenumberforafixed-pointnumericdisplay.

LeadingZero('LeadingZeroProperty'intheon-linedocumentation)

Setswhetherleadingzerosaredisplayed.

MaximumValue('MaximumValueProperty'intheon-linedocumentation)

Setsthemaximumvalueallowedforuserinput.

MinimumValue('MinimumValueProperty'intheon-linedocumentation)

Setstheminimumvalueallowedforuserinput.

NegativeFormat('NegativeFormatProperty'intheon-linedocumentation)

Setshowthevalueisformattedfornegativevalues.

NegativeRed('NegativeRedProperty'intheon-linedocumentation)

Setswhethernegativenumericvaluesaredisplayedinred.

OverflowCharacter('OverflowCharacterProperty'intheon-linedocumentation)

Setsthecharactertousetoreplacethevalueifitdoesnotfitthewidthofthedisplay.

Separator('SeparatorProperty'intheon-linedocumentation)

Setsthestringusedtoseparatethousandsinanumericvalue.

ShowSeparator('ShowSeparatorProperty'intheon-linedocumentation)

Setswhethertodisplaythethousandsseparatorstring.

AcompletelistofformattingpropertiescanbefoundintheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)class.Youcanusecode,thePropertiesWindow,ortheSpreadDesignertosettheseproperties.

DisplayingFractions

Thenumbercellcandisplayvaluesinafractionformat,so0.01canbedisplayedas1/100.SettheFractionMode('FractionModeProperty'intheon-linedocumentation)propertyofthenumbercelltodisplayvaluesinthefractionformat.Youcantypevaluesinthecellas0.01oryoucantype1/100inthecell;bothdisplayas1/100.TheprecisionofthefractioncanbesetusingtheFractionDenominatorPrecision('FractionDenominatorPrecisionEnumeration'intheon-linedocumentation)enumeration(suchastodisplayfractionsasquarters,1/4,etc.)ortheFractionDenominatorDigits('FractionDenominatorDigitsProperty'intheon-linedocumentation)tosetthenumberofdigitsinthedenominator,for10s,100sor1000sormore.Thistableliststhefraction-relatedpropertiesofthenumbercell.

Property DescriptionFractionMode('FractionModeProperty'intheon-line

Setswhethervaluesarerepresentedasfractions.

Spread Windows Forms Developer’s Guide 327

Copyright © GrapeCity, inc. All rights reserved.

Page 329: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

FractionConvertWholeNumbers('FractionConvertWholeNumbersProperty'intheon-linedocumentation)

Setswhethertoconvertwholenumberstofractionswhenvaluesaredisplayedasfractions.

FractionCustomFormat('FractionCustomFormatProperty'intheon-linedocumentation)

Setshowvaluesaredisplayedasfractionswithcustomformatting.Tousethecustomformat,settheFractionDenominatorPrecision('FractionDenominatorPrecisionProperty'intheon-linedocumentation)propertytoCustom.

FractionDenominatorDigits('FractionDenominatorDigitsProperty'intheon-linedocumentation)

Setsthenumberofdigitswhenvaluesaredisplayedasfractions.

FractionDenominatorPrecision('FractionDenominatorPrecisionProperty'intheon-linedocumentation)

Setstheprecisionwhenvaluesaredisplayedasfractions.

FractionRenderOnly('FractionRenderOnlyProperty'intheon-linedocumentation)

Setswhethertoallowfractionsineditmodewhenvaluesaredisplayedasfractions.

Anotherwaytosetthefractiondisplayistosetavalueforthefractioncustomformat(usingtheFractionCustomFormat('FractionCustomFormatProperty'intheon-linedocumentation)property).Thedefaultvalueis"#???/???"whichformatsthenumberasaninteger(#)followedbyathree-digitfraction(???/???).Thequestionmarksaftertheslashdeterminethenumberofdigitsofdenominatorprecisionofwhichtherecanbefromonetofifteen(because15-digitprecisionisthemaximum).Withthecustomformat,youcanalsospecifythedenominator,suchas"#???/100"or"#??/64".IfFractionConvertWholeNumbers('FractionConvertWholeNumbersProperty'intheon-linedocumentation)issettotrue,thenthereisnointegertodisplayandtheentirenumberisdisplayedasafraction.

Thealignmentofthedisplayisdeterminedbythealignmentpropertiesthataresetforthecell.Thenumberisnotalignedbasedonthefractiondisplay.(Intheexamplebelow,thenumbersarerightalignedregardlessofwhetherthereisafractionalpartornot.)

AcompletelistoffractionpropertiescanbefoundintheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)class.Youcanusecode,thePropertiesWindow,ortheSpreadDesignertosettheseproperties.

UsingSpinButtons

Bydefault,nospinbuttonsareshown,butyoucandisplayspinbuttonsonthesideofthecellwhenthecellisineditmode.YoucansetvariousspinfunctionsusingthepropertiesoftheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)classthatbeginwiththewordSpin.RefertoDisplayingSpinButtons.

UsingthePop-UpCalculator

Bydefault,inanumbercell,ifyoudouble-clickonthecellineditmodeatrun-time,apop-upcalculatorappears.YoucanspecifythetextthatdisplaysintheOKandCancelbuttons.Formoreinformation,refertoCustomizingthePop-UpCalculatorControl.Toprohibitthepoppingupofthecalculator,canceltheFpSpreadSubEditorOpening('SubEditorOpeningEvent'intheon-linedocumentation)event.HandlethiseventandsettheCancelargumentoftheSubEditorOpeningEventArgs('SubEditorOpeningEventArgsClass'intheon-linedocumentation)toTrue.

Formoreinformationonthepropertiesandmethodsofthenumbercelltype,refertotheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)class.

Formoreinformationonthecurrencycelltype,refertotheSettingaCurrencyCell.

Spread Windows Forms Developer’s Guide 328

Copyright © GrapeCity, inc. All rights reserved.

Page 330: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheNumbercelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCodeforFormattingNumbers

1. DefinethenumbercellbycreatinganinstanceoftheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthenumbercelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,or

styletotheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)object.

Example

ThisexamplesetsacelltobeanumericcellwithcertainformattingbyassigningtheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)objectwithdefinedformattingproperties.

C#FarPoint.Win.Spread.CellType.NumberCellType nmbrcell = new FarPoint.Win.Spread.CellType.NumberCellType();nmbrcell.DecimalSeparator = ",";nmbrcell.DecimalPlaces = 5;nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;nmbrcell.MaximumValue = 500.000;nmbrcell.MinimumValue = -10.000;fpSpread1.ActiveSheet.Cells[1, 1].CellType = nmbrcell;

VBDim nmbrcell As New FarPoint.Win.Spread.CellType.NumberCellType()nmbrcell.DecimalSeparator = ","nmbrcell.DecimalPlaces = 5nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegionalnmbrcell.MaximumValue = 500.000nmbrcell.MinimumValue = -10.000FpSpread1.ActiveSheet.Cells(1, 1).CellType = nmbrcell

UsingCodeforFormattingFractions

1. DefinethenumbercellbycreatinganinstanceoftheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)class.

2. SettheFractionModepropertytotrueandotherfractionpropertiesasneeded.

Spread Windows Forms Developer’s Guide 329

Copyright © GrapeCity, inc. All rights reserved.

Page 331: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

3. AssignthenumbercelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyletotheNumberCellType('NumberCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplesetsacelltodisplaynumbersasfractions.

C#fpSpread1.ActiveSheet.Columns[0, 9].Width = 120;FarPoint.Win.Spread.CellType.NumberCellType frac = new FarPoint.Win.Spread.CellType.NumberCellType();frac.FractionMode = true;frac.FractionConvertWholeNumbers = false;frac.FractionDenominatorPrecision = FarPoint.Win.Spread.CellType.FractionDenominatorPrecision.Custom;frac.FractionCustomFormat = "## ???/???";frac.FractionDenominatorDigits = 3;fpSpread1.ActiveSheet.Columns[0].CellType = frac;fpSpread1.ActiveSheet.Columns[1].CellType = frac;fpSpread1.ActiveSheet.Cells[0, 0].Value = 5.00;fpSpread1.ActiveSheet.Cells[1, 0].Value = 5.01;fpSpread1.ActiveSheet.Cells[2, 0].Value = 5.02;fpSpread1.ActiveSheet.Cells[3, 0].Value = 5.03;fpSpread1.ActiveSheet.Cells[4, 0].Value = 5.04;fpSpread1.ActiveSheet.Cells[5, 0].Value = 5.05;fpSpread1.ActiveSheet.Cells[6, 0].Value = 5.06;fpSpread1.ActiveSheet.Cells[7, 0].Value = 5.07;fpSpread1.ActiveSheet.Cells[8, 0].Value = 5.08;fpSpread1.ActiveSheet.Cells[9, 0].Value = 5.09;fpSpread1.ActiveSheet.Cells[0, 1].Value = 25.000;fpSpread1.ActiveSheet.Cells[1, 1].Value = 25.011;fpSpread1.ActiveSheet.Cells[2, 1].Value = 25.021;fpSpread1.ActiveSheet.Cells[3, 1].Value = 25.031;fpSpread1.ActiveSheet.Cells[4, 1].Value = 25.041;fpSpread1.ActiveSheet.Cells[5, 1].Value = 25.051;fpSpread1.ActiveSheet.Cells[6, 1].Value = 25.061;fpSpread1.ActiveSheet.Cells[7, 1].Value = 25.071;fpSpread1.ActiveSheet.Cells[8, 1].Value = 25.081;fpSpread1.ActiveSheet.Cells[9, 1].Value = 25.091;

VBFpSpread1.ActiveSheet.Columns(0, 9).Width = 120Dim frac As New FarPoint.Win.Spread.CellType.NumberCellTypefrac.FractionMode = Truefrac.FractionConvertWholeNumbers = Falsefrac.FractionDenominatorPrecision = FarPoint.Win.Spread.CellType.FractionDenominatorPrecision.Customfrac.FractionCustomFormat = "# ???/???"frac.FractionDenominatorDigits = 3FpSpread1.ActiveSheet.Columns(0).CellType = fracFpSpread1.ActiveSheet.Columns(1).CellType = fracFpSpread1.ActiveSheet.Cells(0, 0).CellType = fracFpSpread1.ActiveSheet.Cells(0, 0).Value = 5.00FpSpread1.ActiveSheet.Cells(1, 0).Value = 5.01FpSpread1.ActiveSheet.Cells(2, 0).Value = 5.02

Spread Windows Forms Developer’s Guide 330

Copyright © GrapeCity, inc. All rights reserved.

Page 332: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.Cells(3, 0).Value = 5.03FpSpread1.ActiveSheet.Cells(4, 0).Value = 5.04FpSpread1.ActiveSheet.Cells(5, 0).Value = 5.05FpSpread1.ActiveSheet.Cells(6, 0).Value = 5.06FpSpread1.ActiveSheet.Cells(7, 0).Value = 5.07FpSpread1.ActiveSheet.Cells(8, 0).Value = 5.08FpSpread1.ActiveSheet.Cells(9, 0).Value = 5.09FpSpread1.ActiveSheet.Cells(0, 1).Value = 25.000FpSpread1.ActiveSheet.Cells(1, 1).Value = 25.011FpSpread1.ActiveSheet.Cells(2, 1).Value = 25.021FpSpread1.ActiveSheet.Cells(3, 1).Value = 25.031FpSpread1.ActiveSheet.Cells(4, 1).Value = 25.041FpSpread1.ActiveSheet.Cells(5, 1).Value = 25.051FpSpread1.ActiveSheet.Cells(6, 1).Value = 25.061FpSpread1.ActiveSheet.Cells(7, 1).Value = 25.071FpSpread1.ActiveSheet.Cells(8, 1).Value = 25.081FpSpread1.ActiveSheet.Cells(9, 1).Value = 25.091

ThisiswhattheresultlookslikeinSpread.

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheNumbercell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Thefractionpropertiesareunderthefractiontab.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectNumber.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Percent Cell

Youcanuseapercentcellfordisplayingvaluesaspercentagesandrestrictinginputstopercentagenumericvalues.

YouusethePercentCellType('PercentCellTypeClass'intheon-linedocumentation)classtosetthepercentcellanditsproperties.

Spread Windows Forms Developer’s Guide 331

Copyright © GrapeCity, inc. All rights reserved.

Page 333: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingSpinButtons

Bydefault,nospinbuttonsareshown,butyoucandisplayspinbuttonsonthesideofthecellwhenthecellisineditmode.YoucansetvariousspinfunctionsusingthepropertiesofthePercentCellType('PercentCellTypeClass'intheon-linedocumentation)classthatbeginwiththewordSpin.RefertoDisplayingSpinButtons.

UsingtheCalculator

Bydefault,inapercentcell,ifyoudouble-clickonthecellineditmodeatrun-time,apop-upcalculatorappears.Youcandeterminewhethertoallowthis,andyoucanspecifythetextthatdisplaysintheOKandCancelbuttons.Formoreinformation,refertoCustomizingthePop-UpCalculatorControl.Toprohibitthepoppingupofthecalculator,canceltheFpSpreadSubEditorOpening('SubEditorOpeningEvent'intheon-linedocumentation)event.HandlethiseventandsettheCancelargumentoftheSubEditorOpeningEventArgs('SubEditorOpeningEventArgsClass'intheon-linedocumentation)toTrue.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertothePercentCellType('PercentCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosethePercentcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethepercentcellbycreatinganinstanceofthePercentCellType('PercentCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthepercentcelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,or

styletothePercentCellType('PercentCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplesetsacelltobeapercentcellanddisplaysanabbreviation(PRCNT)insteadofthepercentsign(%).

C#FarPoint.Win.Spread.CellType.PercentCellType prctcell = new FarPoint.Win.Spread.CellType.PercentCellType();prctcell.PercentSign = "PRCNT";prctcell.PositiveFormat = FarPoint.Win.Spread.CellType.PercentPositiveFormat.PercentBefore;fpSpread1.ActiveSheet.Cells[1, 1].CellType = prctcell;

VB

Spread Windows Forms Developer’s Guide 332

Copyright © GrapeCity, inc. All rights reserved.

Page 334: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim prctcell As New FarPoint.Win.Spread.CellType.PercentCellType()prctcell.PercentSign = "PRCNT"prctcell.PositiveFormat = FarPoint.Win.Spread.CellType.PercentPositiveFormat.PercentBeforeFpSpread1.ActiveSheet.Cells(1, 1).CellType = prctcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosethePercentcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectPercent.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Regular Expression Cell

Youcancreatearegularexpressioncellthatrestrictsthedataenteredinthecelltovalidentriesdefinedinaregularexpression.Thedataisevaluatedwhenexitingthecell.InvaliddataisremovedandtheEditError('EditErrorEvent'intheon-linedocumentation)eventisraised.

YouusetheRegularExpressionCellType('RegularExpressionCellTypeClass'intheon-linedocumentation)classtosettheregularexpressioncellanditsproperties.

Forasummaryofregularexpressionsyntax,refertotheRegularExpressionSyntaxtopicintheMicrosoftNETFrameworkReference.Foranintroductiontoregularexpressions,refertotheIntroductiontoRegularExpressionstopicintheMicrosoft.NETFrameworkReference.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheRegularExpressioncelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinetheregularexpressioncellbycreatinganinstanceoftheRegularExpressionCellType('RegularExpressionCellTypeClass'intheon-linedocumentation)class.

2. Createaregularexpression.3. Createamessagetodisplaytotheuserwhentheexpressionisnotvalid.4. AssigntheregularexpressioncelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,

column,row,orstyletotheRegularExpressionCellType('RegularExpressionCellTypeClass'intheon-linedocumentation)object.

Spread Windows Forms Developer’s Guide 333

Copyright © GrapeCity, inc. All rights reserved.

Page 335: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecreatesaregularexpressioncell.

C#FarPoint.Win.Spread.CellType.RegularExpressionCellType regexcell = new FarPoint.Win.Spread.CellType.RegularExpressionCellType()regexcell.RegularExpression = "[0-9]{3}-[0-9]{2}-[0-9]{4}";fpSpread1.ActiveSheet.Cells[0, 0].CellType = regexcell;

VBDim regexcell As New FarPoint.Win.Spread.CellType.RegularExpressionCellType()regexcell.RegularExpression = "[0-9]{3}-[0-9]{2}-[0-9]{4}"FpSpread1.ActiveSheet.Cells(0, 0).CellType = regexcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheRegularExpressioncelltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectRegularExpression.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Text Cell

Youcancreateatextcellthatallowsonlytexttobedisplayedortreatsthecontentsofacellasonlytext.

Youcanalsospecifyifthetextshowsupasalllowercase,uppercase,ornormalwiththeCharacterCasing('CharacterCasingProperty'intheon-linedocumentation)property.TheCharacterSet('CharacterSetProperty'intheon-linedocumentation)propertyallowsyoutospecifynumbersonly,lettersonly,numbersandletters,oranyASCIIcharacters.

YouusetheTextCellType('TextCellTypeClass'intheon-linedocumentation)classtosetthetextcellanditsproperties.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheTextcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 334

Copyright © GrapeCity, inc. All rights reserved.

Page 336: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. DefinethetextcellbycreatinganinstanceoftheTextCellType('TextCellTypeClass'intheon-linedocumentation)class.

2. Setpropertiesfortheclass.3. AssignthetextcelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyle

totheTextCellType('TextCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesatextcellwithamaximumlength.

C#FarPoint.Win.Spread.CellType.TextCellType tcell = new FarPoint.Win.Spread.CellType.TextCellType();tcell.CharacterCasing = CharacterCasing.Upper;tcell.CharacterSet = FarPoint.Win.Spread.CellType.CharacterSet.Ascii;tcell.MaxLength = 30;tcell.Multiline = true;fpSpread1.ActiveSheet.Cells[0, 0].Text = "This is a text cell.";fpSpread1.ActiveSheet.Cells[0, 0].CellType = tcell;

VBDim tcell As New FarPoint.Win.Spread.CellType.TextCellType()tcell.CharacterCasing = CharacterCasing.Uppertcell.CharacterSet = FarPoint.Win.Spread.CellType.CharacterSet.Asciitcell.MaxLength = 40tcell.Multiline = TrueFpSpread1.ActiveSheet.Cells(0, 0).Text = "This is a text cell."FpSpread1.ActiveSheet.Cells(0, 0).CellType = tcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheTextcelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectText.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Working with Graphical Cell Types

Youcanworkwiththegraphicalcelltypesasdescribedinthefollowingtopics:

SettingaBarcodeCellSettingaButtonCellSettingaCheckBoxCellSettingaColorPickerCellSettingaComboBoxCellSettingaGcComboBoxCell(on-linedocumentation)

Spread Windows Forms Developer’s Guide 335

Copyright © GrapeCity, inc. All rights reserved.

Page 337: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettingaHyperlinkCellSettinganImageCellSettingaListBoxCellSettingaMultiple-ColumnComboBoxCellSettingaMultipleOptionCellSettingaProgressIndicatorCellSettingaRichTextCellSettingaSliderCell

Thegraphicalcelltypesuseagraphicoracontrolorform.TheyarebasedontheBaseCellType('BaseCellTypeClass'intheon-linedocumentation)classandyoucandefineasubeditorforthem.

Forothercelltypes,refertoWorkingwithEditableCellTypes.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStylespropertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Setting a Barcode Cell

Youcandisplayabarcodegraphicinabarcodecell.Variousbarcodetypesareavailablesuchasbarcodesthatareusedinretail,forshipping,andsoon.Youcansetheightandwidthpropertiesforthebarcodedisplay.

YouusetheBarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)classtosetthebarcodecellanditsproperties.

CustomizingtheAppearance

Youcancustomizethebarcodecellbyusingtheseproperties:

Property DescriptionAcceptsCheckDigit('AcceptsCheckDigitProperty'intheon-linedocumentation)

Setswhethertoacceptthecheckdigitintheinput.

AdjustSize('AdjustSizeProperty'intheon-linedocumentation)

Setswhetherthebarcodeadjustsitssizebasedonthebarcodesize.

AutoStretch('AutoStretchProperty'intheon-linedocumentation)

Setswhetherthesizeisbasedonthecellsize.

BarAdjust('BarAdjustProperty'intheon-linedocumentation)

Setswhethertofinetunethewidthofthebarcode.

BarCodePadding('BarCodePaddingProperty'intheon-linedocumentation)

Setstheleftsideandrightsidepaddingofthebarcode.

BarSize('BarSizeProperty'intheon-line Setstheheightandwidthofthebarcode.

Spread Windows Forms Developer’s Guide 336

Copyright © GrapeCity, inc. All rights reserved.

Page 338: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

DisplayCheckDigit('DisplayCheckDigitProperty'intheon-linedocumentation)

Setswhetherthecheckdigitisavailableforthebarcode.

DisplayMode('DisplayModeProperty'intheon-linedocumentation)

Setswhetherthebarcodedrawsabarcodeimage.

FixedLength('FixedLengthProperty'intheon-linedocumentation)

Setsthenumberofthefixeddigitsofthevalueofthebarcode.

IsFormulaValue('IsFormulaValueProperty'intheon-linedocumentation)

Determineswhethertheeditorcontainsaformula.

Message('MessageProperty'intheon-linedocumentation)

Setswhethertodisplaythecustommessagestringbelowthebarcodeimage(ifthebarcodetypeallowsit).

MessagePosition('MessagePositionProperty'intheon-linedocumentation)

Setsthealignmentofthecustommessagebelowthebarcodeimage.

MessageValue('MessageValueProperty'intheon-linedocumentation)

Setsacustommessagetodisplaybelowthebarcodeimage.

MinimumHeight('MinimumHeightProperty'intheon-linedocumentation)

Setstheminimumheightofentirebarcode.

ModuleSize('ModuleSizeProperty'intheon-linedocumentation)

Setsthesizeofthebarcodemodule.

Resolution('ResolutionProperty'intheon-linedocumentation)

Setstheresolutionofthebarcode.

Rotation('RotationProperty'intheon-linedocumentation)

Setstherotationangleofthebarcode.

Type('TypeProperty'intheon-linedocumentation)

Setsthebartypeofthebarcode.

Unit('UnitProperty'intheon-linedocumentation)

Setstheunitofmeasureofthebarcode.

TheFixedLength('FixedLengthProperty'intheon-linedocumentation)propertyonlyworkswithPostNet,ITF,orCode39barcodetypes.ThePostNetbarcodeoptionallowsonelessdigitforthevaluethanthesettingfortheFixedLengthproperty.

Onlythebarcodetypesthathavealineatthebottomtodisplaythevaluecandisplayamessage(assetbytheMessage('MessageProperty'intheon-linedocumentation),MessagePosition('MessagePositionProperty'intheon-linedocumentation),andMessageValue('MessageValueProperty'intheon-linedocumentation)properties).

BarcodeTypes

HereisasampleimageofeachofthesupportedbarcodetypesthatcanbesetwiththeType('TypeProperty'intheon-linedocumentation)property.TheJan8typeissimilartotheEAN8type.Formoreinformationaboutbarcodetypes,refertothisarticle:http://www.gs1.org/barcodes.

BarcodeType SampleBarcodeImageCode128

Spread Windows Forms Developer’s Guide 337

Copyright © GrapeCity, inc. All rights reserved.

Page 339: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Code39

Code49

Code93

EAN128

ITF

Jan13

Jan8

JapanesePostal

Spread Windows Forms Developer’s Guide 338

Copyright © GrapeCity, inc. All rights reserved.

Page 340: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

NW7

PDF417

PostNet

QRCode

UPC

CustomizingtheMessage

Youcandisplayacustomizabletextmessageatthebottomofthebarcodecellforseveralbarcodetypes.Thisissupportedforthosebarcodetypesthatdisplaythenumbervaluebelowthebarcodeimage.(Forexample,PostNet,PDF417,JapanesePostal,andQRCodedonotdisplayamessage.)Intheexamplehere,thevaluehasbeenreplacedwithatextmessage.Thecodethatgeneratedthisbarcodeimageisshownbelow.Themessageissetusingtheseproperties:Message('MessageProperty'intheon-linedocumentation),MessagePosition('MessagePositionProperty'intheon-linedocumentation),andMessageValue('MessageValueProperty'intheon-linedocumentation).

C#FarPoint.Win.Spread.CellType.BarCodeCellType barc = new

Spread Windows Forms Developer’s Guide 339

Copyright © GrapeCity, inc. All rights reserved.

Page 341: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.CellType.BarCodeCellType();barc.DisplayMode = FarPoint.Win.Spread.CellType.BarCodeDisplayMode.Image;barc.Message = true;barc.MessagePosition = FarPoint.Win.Spread.CellType.BarCode.MessagePosition.Left;barc.MessageValue = "Display This Instead of Value";barc.Type = new FarPoint.Win.Spread.CellType.BarCode.UPC();fpSpread1.ActiveSheet.Columns[0].Width = 220;fpSpread1.ActiveSheet.Rows[0].Height = 100;fpSpread1.ActiveSheet.Cells[0, 0].CellType = barc;fpSpread1.ActiveSheet.Cells[0, 0].Value = 36000280753;

VBDim barc As New FarPoint.Win.Spread.CellType.BarCodeCellTypebarc.DisplayMode = FarPoint.Win.Spread.CellType.BarCodeDisplayMode.Imagebarc.Message = Truebarc.MessagePosition = FarPoint.Win.Spread.CellType.BarCode.MessagePosition.Leftbarc.MessageValue = "Display This Instead of Value"barc.Type = New FarPoint.Win.Spread.CellType.BarCode.UPCFpSpread1.ActiveSheet.Columns(0).Width = 220FpSpread1.ActiveSheet.Rows(0).Height = 100FpSpread1.ActiveSheet.Cells(0, 0).CellType = barcFpSpread1.ActiveSheet.Cells(0, 0).Value = 36000280753

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStylespropertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheBarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheBarCodecelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethebarcodecellbycreatinganinstanceoftheBarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)class.

2. Specifythepropertiesofthebarcodecell.3. AssignthebarcodecelltoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyle

totheBarCodeCellType('BarCodeCellTypeClass'intheon-linedocumentation)object.

Example

Spread Windows Forms Developer’s Guide 340

Copyright © GrapeCity, inc. All rights reserved.

Page 342: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexamplecreatesabarcodecell.

C#FarPoint.Win.Spread.CellType.BarCodeCellType brcdcell = new FarPoint.Win.Spread.CellType.BarCodeCellType();FpSpread1.Sheets[0].Cells[0, 0].CellType = brcdcell;FpSpread1.Sheets[0].Cells[0, 0].Value = "12345";

VBDim brcdcell As New FarPoint.Win.Spread.CellType.BarCodeCellTypeFpSpread1.Sheets(0).Cells(0, 0).CellType = brcdcellFpSpread1.Sheets(0).Cells(0, 0).Value = "12345"

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheBarCodecell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectBarcode.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Button Cell

Youcandisplayabuttoninacellusingthebuttoncell.Abuttoncell,bydefaultdisplaysarectangularbuttonwithadefaultcolor;youcancustomizethetext,color,andanimageforthatbuttonaswellasspecifycertainaspectsofitsbehaviorwhenclicked.

Tocreateacellthatactslikeabutton,usetheButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)classandthesettingsthataresummarizedhere.YoucancreateabuttoncellusingtheexamplesshowninthistopicorinthetopicsfortheindividualmembersoftheButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)class.

CustomizingtheButtonAppearance

Buttoncellscandisplaytext,pictures,orboth.Iftheydisplaypictures,youcanchoosethatadifferentpictureisdisplayedwhenthebuttonispressed.Youcancustomizethecolorsinbuttoncells,includingthecoloroftheborder,text,andbackground.Inaddition,buttoncellscandisplayathree-dimensionalappearance,andyoucancustomizethecolorsofthehighlightandshadowintheappearance.Thefollowingpropertiesrelatetotheoverallappearanceofthebuttoncell.

Property DescriptionBackgroundStyle('BackgroundStyleProperty'intheon-linedocumentation)

Setshowthebackgroundisrendered.

ButtonColor('ButtonColor Setsthecolorofthebutton.

Spread Windows Forms Developer’s Guide 341

Copyright © GrapeCity, inc. All rights reserved.

Page 343: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Property'intheon-linedocumentation)

ButtonColor2('ButtonColor2Property'intheon-linedocumentation)

Setsthesecondarycolorusedwhendrawingagradientbutton.

DarkColor('DarkColorProperty'intheon-linedocumentation)

Setsthecoloratthebottomandrightedgesofthebutton(thatgiveitthethree-dimensionalappearancealongwiththelightcolor).

GradientMode('GradientModeProperty'intheon-linedocumentation)

Setsthedrawingstyleofagradientbutton.

LightColor('LightColorProperty'intheon-linedocumentation)

Setsthecoloratthetopandleftedgesofthebutton(thatgiveitthethree-dimensionalappearancealongwiththedarkcolor).

Picture('PictureProperty'intheon-linedocumentation)

Setsanimagethatfillsthesurfaceofthebutton.AnyGDI+bitmapcanbeused,suchasaBMP,GIF,orJPGfile.Ifyouareusingatwo-statebutton,thisservesastheunpressedstate.

PictureDown('PictureDownProperty'intheon-linedocumentation)

Setsanimageforthepressedstateofthebutton.

ShadowSize('ShadowSizeProperty'intheon-linedocumentation)

Setsthethicknessoftheshadow,andthedarkandlightcolors(thatgiveitthethree-dimensionalappearance).

TwoState('TwoStateProperty'intheon-linedocumentation)

Setswhetherthebuttonfunctionsasatoggleswitchwithtwostates.Eachtimeyouclickthebutton,thebuttonchangesstate.

Bydefault,thebuttonhasasinglestate,andchangesitsappearanceonlyaslongasyouhavethepointeroveritwiththemousebuttonpressed.Forthissetting,buttoncellsbehavelikepushbuttons,whichyoucanpressbypressingyourleftmousebutton,andwhichdonotstaypressedwhenyoureleaseyourmousebutton.Alternatively,youcansetthebuttontobeatwo-statebuttonandthenthebuttontogglesbetweenthosetwostateswhenclicked.Thebuttonisclickedwhentheuserclicksanywhereinthatcell.Thebuttonstayspressedwhenyouclickitusingyourleftmousebutton.ButtonsareFalsewhentheyarenotpressed,andTruewhentheyarepressed.

CustomizingtheTextAppearance

Youcanspecifythetextthatisdisplayedinthebuttoncellandyoucanspecifytheappearanceofthattext.Youcan

Spread Windows Forms Developer’s Guide 342

Copyright © GrapeCity, inc. All rights reserved.

Page 344: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

specifythealignmentoftextalongsidepicturesinbuttoncellsaswellaswhethertowraptexttomultiplelines.

Thefollowingpropertiesrelatetothetextthatisdisplayedinthebuttoncell.

Property DescriptionHotkeyPrefix('HotkeyPrefixProperty'intheon-linedocumentation)

Setswhethertodisplaytheunderlinethatindicatestheaccesskey(keyboardshortcutorhotkey).

Text('TextProperty'intheon-linedocumentation)

Setsthetextthatappearsinthebutton.

TextAlign('TextAlignProperty'intheon-linedocumentation)

Setsthealignmentofthetextwithrespecttoapicture

TextColor('TextColorProperty'intheon-linedocumentation)

Setsthecolorofthetextinthebutton.

TextDown('TextDownProperty'intheon-linedocumentation)

Setsthetextofthebuttonwhenitispressed,ifitisatwo-statebutton.

TextOrientation('TextOrientationProperty'intheon-linedocumentation)

Setstheorientationofthetextinthebutton.Seethefollowingtablethatshowsexamplesofthevariousorientations.

WordWrap('WordWrapProperty'intheon-linedocumentation)

Setswhethertowrapthetexttomultiplelines.

HerearetheresultsofdifferentsettingsoftheTextOrientation('TextOrientationProperty'intheon-linedocumentation)property.

TextOrientation ExampleButton TextOrientation ExampleButtonTextHorizontal TextHorizontalFlipped

TextVertical TextVerticalFlipped

Spread Windows Forms Developer’s Guide 343

Copyright © GrapeCity, inc. All rights reserved.

Page 345: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TextTopDown TextTopDownRTL

TextRotateCustom

Beyondthepropertiesofthebuttoncellitself,youcanalsosetapropertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)classthataffectshowbuttonsbehave.TheFpSpread('FpSpreadClass'intheon-linedocumentation)classhasaButtonDrawMode('ButtonDrawModeProperty'intheon-linedocumentation)propertyforbuttoncellsandcomboboxcells.Thispropertyallowsyoutoalwaysshowabutton,orshowbuttonsinthecurrentcolumn,row,orcell.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)class.

Formoreinformationonthecorrespondingeventwhenauserclicksonthebutton,refertotheFpSpread.ButtonClicked('ButtonClickedEvent'intheon-linedocumentation)event.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheButtoncelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethebuttoncellbycreatinganinstanceoftheButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)class.

2. Specifythepropertiesofthebuttonbysettingthepropertiesofthatinstance,suchasText,TwoState,and

Spread Windows Forms Developer’s Guide 344

Copyright © GrapeCity, inc. All rights reserved.

Page 346: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ButtonColor.3. AssignthebuttoncelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,or

styletotheButtonCellType('ButtonCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesabuttonwithtextinabluecoloredbutton.Itdefinesthetexttobedifferentwhenthemousepointerishelddown.Thisexamplecreatesthebuttonshowninthefirstpartofthistopic.

C#FarPoint.Win.Spread.CellType.ButtonCellType bttncell = new FarPoint.Win.Spread.CellType.ButtonCellType();bttncell.ButtonColor = Color.Cyan;bttncell.DarkColor = Color.DarkCyan;bttncell.LightColor = Color.AliceBlue;bttncell.TwoState = false;bttncell.Text = "Click and Hold";bttncell.TextDown = "...now let go.";bttncell.ShadowSize = 3;fpSpread1.Sheets[0].Cells[0,2].CellType = bttncell;fpSpread1.Sheets[0].SetColumnWidth(2,90);

VBDim bttncell As New FarPoint.Win.Spread.CellType.ButtonCellType()bttncell.ButtonColor = Color.Cyanbttncell.DarkColor = Color.DarkCyanbttncell.LightColor = Color.AliceBluebttncell.TwoState = Falsebttncell.Text = "Click and Hold"bttncell.TextDown = "...now let go."bttncell.ShadowSize = 3FpSpread1.Sheets(0).Cells(0,2).CellType = bttncellFpSpread1.Sheets(0).SetColumnWidth(2,90)

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheButtoncelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectButton.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Check Box Cell

Youcandisplayacheckboxinacellusingthecheckboxcell.Acheckboxcellcandisplayasmallcheckboxthatcanhaveoneofthreestates(checked,unchecked,orgrayed)ortwostates(checkedorunchecked).Youcancustomizethecheckboxbysettingthetext,determiningtheoperationofthecheckbox,andsettingpicturesinplaceofthestandardcheckboxpictures.

Tocreateacellthatactslikeacheckbox,usetheCheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)class.Createacheckboxcellusingtheprocedureandexampleshownbelow.

Spread Windows Forms Developer’s Guide 345

Copyright © GrapeCity, inc. All rights reserved.

Page 347: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingText

Youcancustomizethecheckboxbyspecifyingtheimageforeachofthestates.Bydefault,thecheckboxhasonlytwostates,checkedorunchecked,sotouseallthreeyoumustsettheThreeState('ThreeStateProperty'intheon-linedocumentation)property.Inthefollowingtable,defaultappearancesareshownwithtextdefinedusingtheTextTrue('TextTrueProperty'intheon-linedocumentation),TextFalse('TextFalseProperty'intheon-linedocumentation),andTextIndeterminate('TextIndeterminateProperty'intheon-linedocumentation)properties.Clickinganywhereinthecellchangesthecheckboxstate.

StateAppearance DescriptionTrue(checked)

Indeterminate(grayed)

False(unchecked)

Youcancustomizethecheckboxcellwiththeseproperties:

Property DescriptionCaption('CaptionProperty'intheon-linedocumentation)

Setsthetextinthecheckboxregardlessofthestate,overridingTextTrue('TextTrueProperty'intheon-linedocumentation),TextFalse('TextFalseProperty'intheon-linedocumentation),andTextIndeterminate('TextIndeterminateProperty'intheon-linedocumentation)textsettings.

HotkeyPrefix('HotkeyPrefixProperty'intheon-linedocumentation)

Setswhethertheampersandcharacterunderlinestextandcreatesanaccesskey.

TextAlign('TextAlignProperty'intheon-linedocumentation)

Setshowthetextisalignedinthecellwithrespecttothecheckboxgraphic.

TextFalse('TextFalseProperty'intheon-linedocumentation)

Setsthetextforthefalsestateofthecheckbox.

TextIndeterminate('TextIndeterminateProperty'intheon-linedocumentation)

Setsthetextfortheindeterminatestateofthecheckbox.

TextTrue('TextTrueProperty'intheon-linedocumentation)

Setsthetextforthetruestateofthecheckbox.

CustomizingPictures

Foreachstate,youcanalsosetcustompicturesforeachstateofthecheckboxcell(makingitappearmorelikeabutton).Youcandeterminetheappearanceofthecheckboxaccordingtowhetherthecellhasfocus(normal),doesnothavefocus(disabled),orisbeingclicked(pressed).

Property DescriptionBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundimageforthecell.

Spread Windows Forms Developer’s Guide 346

Copyright © GrapeCity, inc. All rights reserved.

Page 348: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Picture('PictureProperty'intheon-linedocumentation) Setstheimagestouseforthestatesofthecheckbox.

ThreeState('ThreeStateProperty'intheon-linedocumentation)

Setswhetherthecheckboxhasthreestates

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheCheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)class.

Formoreinformationonthecorrespondingeventwhenauserclicksonthecheckbox,refertotheFpSpread.ButtonClicked('ButtonClickedEvent'intheon-linedocumentation)event.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheCheckBoxcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethecheckboxcellbycreatinganinstanceoftheCheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)class.

2. Specifythepropertiesofthecheckboxcell,suchassettingthecheckboxtoshowthreestatesusingtheThreeState('ThreeStateProperty'intheon-linedocumentation)propertyforthatCheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)object.

3. Enterthetextthatgoesalongwitheachcheckbox,usingtheTextTrue('TextTrueProperty'intheon-linedocumentation),TextFalse('TextFalseProperty'intheon-linedocumentation),andTextIndeterminate('TextIndeterminateProperty'intheon-linedocumentation)properties.

4. Specifythelocationoftheimagesforthecheckedanduncheckedboxesifyoudonotwanttousethedefaults,usingthePicture('PictureProperty'intheon-linedocumentation)property.(Thisisnotdoneinthefollowingexample.)

5. AssignthecheckboxcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheCheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesacheckboxcell.

C#FarPoint.Win.Spread.CellType.CheckBoxCellType ckbxcell = new

Spread Windows Forms Developer’s Guide 347

Copyright © GrapeCity, inc. All rights reserved.

Page 349: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.CellType.CheckBoxCellType();ckbxcell.ThreeState = true;ckbxcell.TextTrue ="Checked";ckbxcell.TextFalse ="Unchecked";ckbxcell.TextIndeterminate ="Not Sure";fpSpread1.ActiveSheet.Cells[0, 0].CellType = ckbxcell;

VBDim ckbxcell As New FarPoint.Win.Spread.CellType.CheckBoxCellType()ckbxcell.ThreeState = trueckbxcell.TextTrue ="Checked"ckbxcell.TextFalse ="Unchecked"ckbxcell.TextIndeterminate ="Not Sure"FpSpread1.ActiveSheet.Cells(0, 0).CellType = ckbxcell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheCheckBoxcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectCheckBox.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Color Picker Cell

Youcanallowyourendusertoselectacolorfromacolorpickerusingthecolorpickercell.Acolorpickercelldisplaysadialogforselectingacolor.Thereareseveraloptionsforthecolordialog.

Whenacolorpickercellisselecteditdisplaysasinglecolor,whichcanappeareitherinabox,asshowninthefollowingimage,orfillingtheentireareaofthecell.Optionallytextcanbedisplayed.

Whenthecellisdouble-clicked,eitherthedrop-downcolorpickerisdisplayedorthepop-upcolordialogisdisplayed.Thereareseveraloptionsforthedisplayofthecolordialog.Thefollowingfigureshowsthepop-upcolordialog:

Spread Windows Forms Developer’s Guide 348

Copyright © GrapeCity, inc. All rights reserved.

Page 350: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingfigureshowsthedrop-downcolorpicker:

Tocreateacolorpickercell,usetheColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)class.Createacolorpickercellusingtheprocedureandexampleshownbelow.

CustomizingtheColorCell

TheoptionsforthecolorpickercellareintheColorPickerStyle('ColorPickerStyleEnumeration'intheon-linedocumentation)enumeration.

Spread Windows Forms Developer’s Guide 349

Copyright © GrapeCity, inc. All rights reserved.

Page 351: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingtheColorDialog

Thecolorpickercellallowsthesecustomizationsofthecolordialog.

Property DescriptionAllowFullOpen('AllowFullOpenProperty'intheon-linedocumentation)

Setswhethertoallowthecolordialogtoopenfullytoshowthecustomcolorselector.

AnyColor('AnyColorProperty'intheon-linedocumentation)

Setswhetherthecolordialogdisplaysallavailablecolorsinthesetofbasiccolors.

Caption('CaptionProperty'intheon-linedocumentation)

Setsthetextthatappearsinthecell(ifany).

CustomColors('CustomColorsProperty'intheon-linedocumentation)

Setsthecustomcolorsshowninthecolordialog.

DialogShowing('DialogShowingProperty'intheon-linedocumentation)

Setswhethertodisplaythecolordialogautomatically.

DropDown('DropDownProperty'intheon-linedocumentation)

Setswhethertousethedrop-downcolorpicker(notthepop-upcolordialog).

FullOpen('FullOpenProperty'intheon-linedocumentation)

Setswhetherthecolordialogopensfullytoshowcontrolsusedtocreatecustomcolors.

SolidColorOnly('SolidColorOnlyProperty'intheon-linedocumentation)

Setswhetherthecolordialogrestrictsuserstoselectingsolidcolorsonly.

Style('StyleProperty'intheon-linedocumentation)

Setsthestyleofthecolordialog.

UnknownText('UnknownTextProperty'intheon-linedocumentation)

Setsthetextforanunknowncolor.

UnknownTextStyle('UnknownTextStyleProperty'intheon-linedocumentation)

Setsthestyleofthetextforanunknowncolor.

Thefollowingfigureillustratesthecolordialogwhenitissettofullyopen.

Spread Windows Forms Developer’s Guide 350

Copyright © GrapeCity, inc. All rights reserved.

Page 352: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheColorPickercelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethecolorpickercellbycreatinganinstanceoftheColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 351

Copyright © GrapeCity, inc. All rights reserved.

Page 353: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Specifythepropertiesofthecolorpickercell.3. AssignthecolorpickercelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheColorPickerCellType('BarCodeCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesacolorpickercell.

C#FarPoint.Win.Spread.CellType.ColorPickerCellType cp = new FarPoint.Win.Spread.CellType.ColorPickerCellType();cp.AllowFullOpen = true;cp.AnyColor = false;cp.CustomColors = new int[] {255, 190, 50};cp.FullOpen = true;cp.Style = FarPoint.Win.Spread.CellType.ColorPickerStyle.BoxedWithText;FarPoint.Win.Spread.CellType.ColorPickerCellType c = new FarPoint.Win.Spread.CellType.ColorPickerCellType(cp);FpSpread1.ActiveSheet.Cells[0, 0].CellType = c;

VBDim cp As New FarPoint.Win.Spread.CellType.ColorPickerCellTypecp.AllowFullOpen = Truecp.AnyColor = Falsecp.CustomColors = New Integer() {255, 190, 50}cp.FullOpen = Truecp.Style = FarPoint.Win.Spread.CellType.ColorPickerStyle.BoxedWithTextDim c As New FarPoint.Win.Spread.CellType.ColorPickerCellType(cp)FpSpread1.ActiveSheet.Cells(0, 0).CellType = c

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheColorPicker

celltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectColorPicker.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Combo Box Cell

Youcanuseacomboboxcelltodisplayaneditabledrop-downlist,allowingtheusertotypeinvaluesaswellaschoosingfromadisplayedlist.Youcanspecifythelistofitems,whethertoincludeiconstoappearalongwithtext,thenumberofitemsthataredisplayedatanytime,andwhetherthecelliseditablebytheuser.

Textonly Textandicon

Spread Windows Forms Developer’s Guide 352

Copyright © GrapeCity, inc. All rights reserved.

Page 354: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tocreateacellthatactslikeacombobox,usetheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)class.Createacomboboxcellusingthefollowingprocedure.

CustomizingtheListAppearance

Usethefollowingappearancepropertiestocustomizethecombobox.

Property DescriptionBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsanimagetopaintinthebackgroundoftheeditportionofthecombobox.

ButtonAlign('ButtonAlignProperty'intheon-linedocumentation)

Setswherebuttonsaredisplayed.

ImageList('ImageListProperty'intheon-linedocumentation)

Setsanimagelistfordisplayingiconsalongwithtextinthedrop-downlistinthecombobox.

ItemData('ItemDataProperty'intheon-linedocumentation)

Setsitemdata,whichisdifferentfromtheitemsthataredisplayed,forthedrop-downlistinthecombobox.

Items('ItemsProperty'intheon-linedocumentation)

Setsitemsforthedrop-downlistinthecombobox.

ListAlignment('ListAlignmentProperty'intheon-linedocumentation)

Setsthesideofthecellonwhichthelistaligns.

ListOffset('ListOffsetProperty'intheon-linedocumentation)

Setshowmanypixelstooffsetthelistfromthealignededgeofthecell.

ListWidth('ListWidthProperty'intheon-linedocumentation)

Setsthewidth(inpixels)ofthedrop-downlist.

MaxDrop('MaxDropProperty'intheon-linedocumentation)

Setsthenumberofitemstodisplayatonetimeinthelistportion.Iftherearemoreitemsthanaredisplayed,averticalscrollbarisdisplayed.

MaxLength('MaxLengthProperty'intheon-linedocumentation)

Setsthemaximumnumberofcharactersallowedinthecomboboxcell.

CustomizingtheListOperation

Usethefollowingoperationpropertiestocustomizethecombobox.

Property DescriptionAcceptsArrowKeys('AcceptsArrowKeysProperty'intheon-linedocumentation)

Setshowarrowkeysareprocessedbythecomboboxcontrol.

AutoSearch('AutoSearchProperty'intheon-linedocumentation)

Setshowalistofitemsinacomboboxissearchedbasedoninputofacharacterkey.

CharacterCasing('CharacterCasingProperty'in Setsthecaseofcharactersinthetextcell.

Spread Windows Forms Developer’s Guide 353

Copyright © GrapeCity, inc. All rights reserved.

Page 355: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theon-linedocumentation)

CharacterSet('CharacterSetProperty'intheon-linedocumentation)

Setswhatcharacterstoallowforthetextcell.

Editable('EditableProperty'intheon-linedocumentation)

Setswhetheryoucantypeintotheeditportionofthecombobox.

EditorValue('EditorValueProperty'intheon-linedocumentation)

Setswhatvalueiswrittentotheunderlyingdatamodel.

ListControl('ListControlProperty'intheon-linedocumentation)

Setsthecontroltouseforthelistportionifyoudonotwanttousethebuilt-inlistcontrolinSpread.

TheSpreadcontrolhasaButtonDrawMode('ButtonDrawModeProperty'intheon-linedocumentation)propertyforbuttoncellsandcomboboxcells.Thispropertyallowsyoutoalwaysshowabutton,orshowbuttonsinthecurrentcolumn,row,orcell.

CustomizingAutomaticCompletion

Usethefollowingpropertiestocustomizetheautomaticcompletionfeatureincomboboxcellswhenusingthe2005buildofthecomponent.

Property DescriptionAutoCompleteCustomSource('AutoCompleteCustomSourceProperty'intheon-linedocumentation)

Setthecustomsource(strings)forautomaticcompletionofentriesinthecombobox.

AutoCompleteMode('AutoCompleteModeProperty'intheon-linedocumentation)

Setthemodeforautomaticcompletionofentriesinthecombobox.

AutoCompleteSource('AutoCompleteSourceProperty'intheon-linedocumentation)

Setthesourceforautomaticcompletionofentriesinthecombobox.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Todisplayatexttipoveracomboboxcell,seethenoteinDisplayingTextTipsinaCell.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)class.Forinformationonthemultiple-columncombobox,refertoSettingaMultiple-ColumnComboBoxCell.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheComboBoxcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 354

Copyright © GrapeCity, inc. All rights reserved.

Page 356: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. DefineacomboboxcellbycreatinganinstanceoftheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)class.

2. Specifytheitemsinthelistthatappearaspartofthecombobox.YoucaneitherusetheItemspropertyoftheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)classordefineastringandpassthatinwhencreatingtheinstanceoftheclass.

3. Specifyhowthelistofitemsappears.Forexample,settheMaxDrop('MaxDropProperty'intheon-linedocumentation)propertytosetthemaximumnumberofitemstodisplayatatime.Iftherearemoreitems,ascrollbarappears.Youcanalsosetthehorizontalalignmentofthecheckboxwithrespecttothecell.

4. AssignthecomboboxcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesacombocell.

C#FarPoint.Win.Spread.CellType.ComboBoxCellType cmbocell = new FarPoint.Win.Spread.CellType.ComboBoxCellType();cmbocell.Items = (new String[] {"January", "February", "March", "April", "May", "June"});cmbocell.AutoSearch = FarPoint.Win.AutoSearch.SingleCharacter;cmbocell.Editable = true;cmbocell.MaxDrop = 4;fpSpread1.ActiveSheet.Cells[0, 0].CellType = cmbocell;

VBDim cbstr As string( )cbstr = new String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}Dim cmbocell As New FarPoint.Win.Spread.CellType.ComboBoxCellType()cmbocell.Items = cbstrcmbocell.AutoSearch = FarPoint.Win.AutoSearch.SingleCharactercmbocell.Editable = Truecmbocell.MaxDrop = 4FpSpread1.ActiveSheet.Cells(0, 0).CellType = cmbocell

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheComboBoxcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectComboBox.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Hyperlink Cell

Youcanuseahyperlinkcelltocontaintextthatfunctionsasasinglehyperlinkormultiplehyperlinks.Thedestinationof

Spread Windows Forms Developer’s Guide 355

Copyright © GrapeCity, inc. All rights reserved.

Page 357: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thehyperlinkcanbeanyuniversalresourcelocator(URL).Forexample:

http://www.componentone.comwww.clubFarPoint.commailto:[email protected]?Subject=SpreadCellTest

CustomizingLinks

Youcanspecifyhowmuchofthetextfunctionsasahyperlinkandtherestdisplaysasordinarytext.Youcanspecifytheappearanceofthehyperlinkedtextandcustomizethecolorofthelinkthathasbeenfollowed(visitedorclicked).

Property CustomizationBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundgraphicimage.

Link('LinkProperty'intheon-linedocumentation) SetsthedestinationURL.

LinkArea('LinkAreaProperty'intheon-linedocumentation)

Setstheareaofthetextthatisthehyperlink.

LinkAreas('LinkAreasProperty'intheon-linedocumentation)

Setstheareaofthetextthatisthehyperlink.

LinkColor('LinkColorProperty'intheon-linedocumentation)

Setsthecoloroflinks(beforetheyarefollowed).

Links('LinksProperty'intheon-linedocumentation) Setsthehyperlinks.

Text('TextProperty'intheon-linedocumentation) Setsthelabelofthehyperlink,thatis,whatappearsinthecell.

VisitedLinkColor('VisitedLinkColorProperty'intheon-linedocumentation)

Setsthecoloroffollowedlinks.

MakingLinksinText

Tocreateacellthatactslikeahyperlink,usetheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)class.Createahyperlinkcellusingthefollowingprocedure.Theresultsoftheprocedure,bothnormalandfollowedlinks,areshowninthefollowingfigure.

HyperlinkTextBeforeClickingLink HyperlinkTextAfterFollowingLink

Thefollowingfiguredisplaysahyperlinkcellwithmultiplelinks.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)class.

Formoreinformationonthecorrespondingeventwhenauserclicksonahyperlink,refertotheFpSpread.ButtonClicked('ButtonClickedEvent'intheon-linedocumentation)event.

Spread Windows Forms Developer’s Guide 356

Copyright © GrapeCity, inc. All rights reserved.

Page 358: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheHyperLinkcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethehyperlinkcellbycreatinganinstanceoftheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)class.

2. Besuretosetthesizeofthecellsothatallthetextincludingthehyperlinkarevisibleanddisplayproperly.3. SpecifythetextthatappearsinthecellbyspecifyingtheText('TextProperty'intheon-linedocumentation)propertyfortheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)object.SpecifyhowmuchofthetextishyperlinkusingtheLinkArea('LinkAreaProperty'intheon-linedocumentation)propertyforthatobject.

4. Specifytheappearanceofthehyperlinkbysettingproperties,suchasLinkColor('LinkColorProperty'intheon-linedocumentation).

5. AssignthehyperlinkcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplesetsthesizeofthecell(bycolumnandrow),createsahyperlinkbutton,andspecifiesthedestinationURL.

C#fpSpread1.ActiveSheet.Columns[1].Width = 145;fpSpread1.ActiveSheet.Rows[1].Height = 45;FarPoint.Win.Spread.CellType.HyperLinkCellType hlnkcell = new FarPoint.Win.Spread.CellType.HyperLinkCellType();hlnkcell.Text = "Click to See Our Web Site";hlnkcell.Link ="http://www.componentone.com";hlnkcell.LinkArea = new LinkArea(9,16);hlnkcell.LinkColor = Color.DarkGreen;hlnkcell.VisitedLinkColor = Color.Chartreuse;fpSpread1.ActiveSheet.Cells[1, 1].CellType = hlnkcell;

VBFpSpread1.ActiveSheet.Columns(1).Width = 145FpSpread1.ActiveSheet.Rows(1).Height = 45Dim hlnkcell As New FarPoint.Win.Spread.CellType.HyperLinkCellType()hlnkcell.Text = "Click to See Our Web Site"hlnkcell.Link ="http://www.componentone.com"hlnkcell.LinkArea = new LinkArea(9,16)

Spread Windows Forms Developer’s Guide 357

Copyright © GrapeCity, inc. All rights reserved.

Page 359: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

hlnkcell.LinkColor = Color.DarkGreenhlnkcell.VisitedLinkColor = Color.ChartreuseFpSpread1.ActiveSheet.Cells(1, 1).CellType = hlnkcell

UsingCode

1. DefinethehyperlinkcellbycreatinganinstanceoftheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)class.

2. Besuretosetthesizeofthecellsothatallthetextincludingthehyperlinkarevisibleanddisplayproperly.3. SpecifythetextthatappearsinthecellbyspecifyingtheText('TextProperty'intheon-linedocumentation)propertyfortheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)object.SpecifyhowmuchofthetextishyperlinkusingtheLinkAreas('LinkAreasProperty'intheon-linedocumentation)propertyforthatobject.

4. Specifytheappearanceofthehyperlinkbysettingproperties,suchasLinkColor('LinkColorProperty'intheon-linedocumentation).

5. AssignthehyperlinkcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheHyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesahyperlinkcellwithmultiplelinks.

C#fpSpread1.ActiveSheet.Columns[0].Width = 145;fpSpread1.ActiveSheet.Rows[0].Height = 45;FarPoint.Win.Spread.CellType.HyperLinkCellType mhp = new FarPoint.Win.Spread.CellType.HyperLinkCellType();mhp.Text = "FarPoint and Microsoft";string[] s = new string[]{"www.fpoint.com", "www.microsoft.com"};mhp.Links = s;mhp.VisitedLinkColor = Color.Maroon;LinkArea[] la = new LinkArea[]{new LinkArea(0, 8), new LinkArea(13, 9)};mhp.LinkAreas = la;fpSpread1.ActiveSheet.Cells[0, 0].CellType = mhp;

VBFpSpread1.ActiveSheet.Columns(0).Width = 145FpSpread1.ActiveSheet.Rows(0).Height = 45Dim mhp As New FarPoint.Win.Spread.CellType.HyperLinkCellTypemhp.Text = "FarPoint and Microsoft"Dim s() As String = New String() {"www.fpoint.com", "www.microsoft.com"}mhp.Links = smhp.VisitedLinkColor = Color.MaroonDim la() As LinkArea = New LinkArea() {New LinkArea(0, 8), New LinkArea(13, 9)}mhp.LinkAreas = laFpSpread1.ActiveSheet.Cells(0, 0).CellType = mhp

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheHyperLinkcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.

Spread Windows Forms Developer’s Guide 358

Copyright © GrapeCity, inc. All rights reserved.

Page 360: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectHyperLink.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.Ifyoucreatemultiplehyperlinksthenmakesurethetextissetaswell.Notethatifyouweretocreatethepreviouscodesampleinthedesignerthenthetextwouldneedtocontain23characterssincethesecondlinkstartsat13andcontinuesfor9characters.Thetextiszerobased.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting an Image Cell

Youcandisplayagraphicimageinacellusingtheimagecelltype.Animagecellshowsanimageasdata.Ifthedatatypeforaboundcolumnisabitarraythenthedefaultcelltypeforthatboundcolumnwouldbeanimagecelltype.

AnimageobjectcanbeassignedtotheValue('ValueProperty'intheon-linedocumentation)propertyofacell.Theimageorserializedimageobjectmustbeinthedatamodel.

Tocreateacellthatcontainsanimage,usetheImageCellType('ImageCellTypeClass'intheon-linedocumentation)class.Createanimagecellusingthefollowingprocedure.Theresultisshowninthisfigure.

Noticethatbothcellshaveamagentabackground,buttheonewiththeimageonlyshowsthemagentathroughthetransparentareasspecifiedbythetransparencycolorpropertyandthetransparencytoleranceproperty.Theimageismostlywhitesoblocksoutmostofthemagenta.Theletteringthatismoreblueisbeyondthetoleranceandsoisnottransparent.Whenyousetatransparencycolor,thebackgroundbehindthepictureshowsthroughintheareathatoriginallyhadthecoloryouspecify.Settingthetransparencytoleranceto255willcauseeverythingtobetransparentsoyoumaywishtouseavaluelessthan255.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheImageCellType('ImageCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheImagecelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinetheimagecellbycreatinganinstanceoftheImageCellType('ImageCellTypeClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 359

Copyright © GrapeCity, inc. All rights reserved.

Page 361: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Createtheimage.3. SpecifywhatappearsinthecellbysettingtheValue('ValueProperty'intheon-linedocumentation)

propertyfortheImageCellType('ImageCellTypeClass'intheon-linedocumentation)object.4. SpecifytheappearanceoftheimagebysettingpropertiessuchasStyle.5. AssigntheimagecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyletotheImageCellType('ImageCellTypeClass'intheon-linedocumentation)object.

Example

ThisexamplesetsthepropertiesofanimagecelltypethenloadsalogoimageintoacellusingtheValue('ValueProperty'intheon-linedocumentation)property.Withbackgroundcolorset,theuseoftransparencycanbeseen.

C#FarPoint.Win.Spread.CellType.ImageCellType imgct = new FarPoint.Win.Spread.CellType.ImageCellType();System.Drawing.Image image = System.Drawing.Image.FromFile("D:\\Logos\\logo.jpg");imgct.Style = FarPoint.Win.RenderStyle.Stretch;imgct.TransparencyColor = Color.Black;imgct.TransparencyTolerance = 20;

fpSpread1.Sheets[0].Cells[1,1,1,2].BackColor = Color.Magenta;fpSpread1.Sheets[0].Columns[1,2].Width = 100;fpSpread1.Sheets[0].Rows[1,1].Height = 50;fpSpread1.Sheets[0].Cells[1,1,2,2].CellType = imgct;fpSpread1.Sheets[0].Cells[1,1].Value = image;

VBDim imgct As New FarPoint.Win.Spread.CellType.ImageCellType()Dim image As System.Drawing.Image = System.Drawing.Image.FromFile("D:\Logos\logo.jpg")imgct.Style = FarPoint.Win.RenderStyle.Stretchimgct.TransparencyColor = Color.Blackimgct.TransparencyTolerance = 20

FpSpread1.Sheets(0).Cells(1,1,1,2).BackColor = Color.MagentaFpSpread1.Sheets(0).Columns(1,2).Width =100FpSpread1.Sheets(0).Rows(1,1).Height = 50FpSpread1.Sheets(0).Cells(1,1,2,2).CellType = imgctFpSpread1.Sheets(0).Cells(1, 1).Value = image

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheImagecelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectImage.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a List Box Cell

Youcanusealistboxcelltodisplayalist,whichallowstheusertoselectfromthedisplayedlist.Youcanspecifythelist

Spread Windows Forms Developer’s Guide 360

Copyright © GrapeCity, inc. All rights reserved.

Page 362: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ofitems,whethertoincludeiconstoappearalongwithtext,thenumberofitemsthataredisplayedatanytime,andotheraspectsofthedisplay.

Textonly Textandicon

Tocreateacellthatactslikealistbox,usetheListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)class.Createalistboxcellusingthefollowingprocedure.

CustomizingtheListAppearance

Hereisasummaryoftheappearancepropertiesthatyoucanusetocustomizethelistbox.

Property DescriptionEditorValue('EditorValueProperty'intheon-linedocumentation)

Setswhatvalueiswrittentotheunderlyingdatamodel.

ImageList('ImageListProperty'intheon-linedocumentation)

Setsanimagelistfordisplayingiconsalongwithtextinthelist.

ItemHeight('ItemHeightProperty'intheon-linedocumentation)

Setstheheightforeachiteminthelist.

ItemData('ItemDataProperty'intheon-linedocumentation)

Setsitemdata,whichisdifferentfromtheitemsthataredisplayed,touseforthelist.

Items('ItemsProperty'intheon-linedocumentation)

Setsitemstouseforthelist.

Foracompletelistofthepropertiesandmethodsofthiscelltype,refertotheListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)class.Forinformationonthecombobox(whichincludesbothalistboxandaneditablearea),refertoSettingaComboBoxCell.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheListBoxcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.

Spread Windows Forms Developer’s Guide 361

Copyright © GrapeCity, inc. All rights reserved.

Page 363: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinealistboxcellbycreatinganinstanceoftheListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)class.

2. Specifytheitemsinthelistthatappearaspartofthelistbox.YoucaneitherusetheItems('ItemsProperty'intheon-linedocumentation)propertyoftheListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)classordefineastringandpassthatinwhencreatingtheinstanceoftheclass.

3. AssignthelistboxcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheListBoxCellType('ListBoxCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesalistboxcellandusesimagesfromanimagelistcontrol.

C#FarPoint.Win.Spread.CellType.ListBoxCellType listcell = new FarPoint.Win.Spread.CellType.ListBoxCellType();listcell.ImageList = ImageList1;listcell.ItemData = new string[] { "One", "Two", "Three"};listcell.Items = new string[] {"One","Two","Three"};listcell.ItemHeight = 40;fpSpread1.ActiveSheet.Cells[0, 0].CellType = listcell;fpSpread1.ActiveSheet.Rows[0].Height = 120;

VBDim listcell As New FarPoint.Win.Spread.CellType.ListBoxCellType()listcell.ImageList = ImageList1listcell.ItemData = New String() {"One", "Two", "Three"}listcell.Items = New String() {"One", "Two", "Three"}listcell.ItemHeight = 40FpSpread1.ActiveSheet.Cells(0, 0).CellType = listcellFpSpread1.ActiveSheet.Rows(0).Height = 120

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheListBoxcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectListBox.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Multiple-Column Combo Box Cell

Youcancreateacomboboxcellwithmultiplecolumnsinthedrop-downlist.Youcanprovideadrop-downlistaswellasaneditableareaallowingtheusertotypeinvaluesaswellaschoosingfromadisplayedlist.Youspecifythelistofitems,thenumberthatisdisplayedatanytime,andwhetherthecelliseditablebytheuser.

Spread Windows Forms Developer’s Guide 362

Copyright © GrapeCity, inc. All rights reserved.

Page 364: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheSpreadcontrolhasaButtonDrawMode('ButtonDrawModeProperty'intheon-linedocumentation)propertyforbuttoncellsandcomboboxcells.Thispropertyallowsyoutoalwaysshowabutton,orshowbuttonsinthecurrentcolumn,row,orcell.

Tocreateacellthatactslikeamultiple-columncombobox,usetheMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)class.Createsuchacomboboxcellusingthefollowingprocedure.

CustomizingtheDisplay

Youcancustomizethedisplayofthemultiple-columncomboboxcellbysettingthefollowingproperties.

Property DescriptionBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundimageinthecell.

ButtonAlign('ButtonAlignProperty'intheon-linedocumentation)

Setswherethebuttonsaredisplayed.

ColumnEdit('ColumnEditProperty'intheon-linedocumentation)

Setsthecolumnofthelisttousefortheeditportion.

DataColumn('DataColumnProperty'intheon-linedocumentation)

Setswhichlistcolumntouseasthedatacolumn.

DataSourceList('DataSourceListProperty'intheon-linedocumentation)

Setsthedatasourceforthelistportionofthecell.

ListAlignment('ListAlignmentProperty'intheon-linedocumentation)

Setswhichsideoftheeditorthelistalignsto.

ListOffset('ListOffsetProperty'intheon-linedocumentation)

Setshowmuchthelistoffsetsfromtheeditor.

ListWidth('ListWidthProperty'intheon-linedocumentation)

Setsthewidthofthelist.

MaxDrop('MaxDropProperty'intheon-linedocumentation)

Setsthemaximumnumberofitemstodisplayinthelistatonetime.

StringTrim('StringTrimProperty'intheon-linedocumentation)

Setshowtotrimcharactersthatdonotfitinthecell.

SubEditor('SubEditorProperty'intheon-linedocumentation)

Setsthesubeditor.

CustomizingtheOperation

Spread Windows Forms Developer’s Guide 363

Copyright © GrapeCity, inc. All rights reserved.

Page 365: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcancustomizetheoperationofthemultiple-columncomboboxcellbysettingthefollowingproperties.

Property DescriptionAcceptsArrowKeys('AcceptsArrowKeysProperty'intheon-linedocumentation)

Setshowarrowkeysareprocessedbythecell.

AutoSearch('AutoSearchProperty'intheon-linedocumentation)

Setshowalistofitemsinacomboboxcellissearchedbasedoninputofacharacterkey.

DataColumn('DataColumnProperty'intheon-linedocumentation)

Setswhichlistcolumntouseasthedatacolumn.

DataSourceList('DataSourceListProperty'intheon-linedocumentation)

Setsthedatasourceforthelistportionofthecell.

Editable('EditableProperty'intheon-linedocumentation)

Allowstheusertotypeintheeditportionofthecell.

SubEditor('SubEditorProperty'intheon-linedocumentation)

Setsthesubeditor.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStylespropertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)class.Formoreinformationonastandardcombobox(singlecolumn),refertoSettingaComboBoxCell.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheMultiColumnComboBoxcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefineacomboboxcellbycreatinganinstanceoftheMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)class.

2. Specifytheitemsinthelistthatappearaspartofthecombobox.YoucaneitherusetheItemspropertyoftheMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)classordefineastringandpassthatinwhencreatingtheinstanceoftheclass.

3. Specifyhowthelistofitemsappears.Forexample,settheMaxDroppropertytosetthemaximumnumberofitemstodisplayatatime.Iftherearemoreitems,ascrollbarappears.Youcanalsosetthehorizontalalignmentofthecheckboxwithrespecttothecell.

4. AssignthecomboboxcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheMultiColumnComboBoxCellType('MultiColumnComboBoxCellTypeClass'intheon-linedocumentation)object.

Spread Windows Forms Developer’s Guide 364

Copyright © GrapeCity, inc. All rights reserved.

Page 366: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecreatesamultiple-columncomboboxcellandaddsdatafromadatasource.

C#string conStr = "Provider=Microsoft.JET.OLEDB.4.0;data source=C:\\SpreadStudio\\Common\\Patients2000.mdb";string sqlStr = "SELECT * FROM Patients";System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(conStr);DataSet ds = new DataSet();System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(sqlStr, conn);da.Fill(ds);FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType mcb = new FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType();mcb.DataSourceList = ds;mcb.DataColumn = 2;mcb.ColumnEdit = 2;mcb.ButtonAlign = FarPoint.Win.ButtonAlign.Left;mcb.ListAlignment = FarPoint.Win.ListAlignment.Right;mcb.ListWidth = 500;mcb.ListOffset = 5;mcb.MaxDrop = 5;fpSpread1.ActiveSheet.Cells[0, 0].CellType = mcb;

VBDim conStr As String = "Provider=Microsoft.JET.OLEDB.4.0;data source=C:\SpreadStudio\Common\Patients2000.mdb"Dim sqlStr As String = "SELECT * FROM Patients"Dim conn As New System.Data.OleDb.OleDbConnection(conStr)Dim ds As DataSet = New DataSet()Dim da As New System.Data.OleDb.OleDbDataAdapter(sqlStr, conn)da.Fill(ds)Dim mcb As New FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType()mcb.DataSourceList = dsmcb.DataColumn = 1mcb.ButtonAlign = FarPoint.Win.ButtonAlign.Leftmcb.ListWidth = 500mcb.ListOffset = 5mcb.MaxDrop = 5FpSpread1.ActiveSheet.Cells(0, 0).CellType = mcb

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheComboBoxcell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectComboBox.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Spread Windows Forms Developer’s Guide 365

Copyright © GrapeCity, inc. All rights reserved.

Page 367: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Setting a Multiple Option Cell

Youcandefinemultipleoptionbuttonsinamultipleoptioncell.Thiscelltypeoffersseveraloptionbuttons,eitherhorizontallyorvertically,fortheusertoselect.Onlyonebuttoncanbeselectedatatime.Thedefaultisfornoneofthebuttonstobeselected.

Tocreateacellthatactslikealistofmultipleoptionbuttons,usetheMultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)class.Createamultipleoptioncellusingthefollowingprocedure.

CustomizingDisplayandOperation

Youcancustomizethedisplayandoperationofthemultipleoptionsinthecellbysettingthefollowingproperties.

Property DescriptionBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundimageforthecell.

EditorValue('EditorValueProperty'intheon-linedocumentation)

Setswhichvalueiswrittentotheunderlyingdatamodel.

ItemData('ItemDataProperty'intheon-linedocumentation)

SetstheItemDatatouseforthelist.

Items('ItemsProperty'intheon-linedocumentation) Createsthelisttousefortheoptionbuttons.

Orientation('OrientationProperty'intheon-linedocumentation)

Setstheorientationoftheoptionbuttons.

Picture('PictureProperty'intheon-linedocumentation)

Customizestheoptionbuttonimages.

TextAlign('TextAlignProperty'intheon-linedocumentation)

Setshowtextalignsinthecell.

UseMnemonic('UseMnemonicProperty'intheon-linedocumentation)

Setswhetheraccesskeys(hotkeysorkeyboardshortcuts)areusedinthecell.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheMultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)class.

Formoreinformationonthecorrespondingeventwhenauserclicksonanoption,refertotheFpSpread.ButtonClicked('ButtonClickedEvent'intheon-linedocumentation)event.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.

Spread Windows Forms Developer’s Guide 366

Copyright © GrapeCity, inc. All rights reserved.

Page 368: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheMultiOptioncelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinethemultipleoptionlistcellbycreatinganinstanceoftheMultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)class.

2. Specifytheitemsinthelistofoptions.3. AssignthemultipleoptioncelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheMultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation)object.

Example

Thefollowingexampledisplaysasetofoptionsfortheusertochoosefrom.

C#FarPoint.Win.Spread.CellType.MultiOptionCellType multcell = new FarPoint.Win.Spread.CellType.MultiOptionCellType();multcell.Items = new String[] {"Carbon", "Oxygen", "Hydrogen"};multcell.Orientation = FarPoint.Win.RadioOrientation.Horizontal;fpSpread1.ActiveSheet.Cells[0, 0].CellType = multcell;fpSpread1.ActiveSheet.Columns[0].Width = 220;

VBDim multcell As New FarPoint.Win.Spread.CellType.MultiOptionCellType()multcell.Items = new String() {"Carbon", "Oxygen", "Hydrogen"}multcell.Orientation = FarPoint.Win.RadioOrientation.HorizontalFpSpread1.ActiveSheet.Cells(0, 0).CellType = multcellFpSpread1.ActiveSheet.Columns(0).Width = 220

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheMultiOption

celltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectMultiOption.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Progress Indicator Cell

Aprogressindicatorcelldisplaysaprogressindicatorcontrolacrosstheentirecell.Youcanspecifythecolorofthefill,thetexttodisplay,thecolorofthetextandotherproperties.

Spread Windows Forms Developer’s Guide 367

Copyright © GrapeCity, inc. All rights reserved.

Page 369: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tocreateacellthatactslikeaprogressindicator,usetheProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)class.Createaprogressindicatorcellusingtheproceduredescribedhere.

CustomizetheIndicator

Youcanfillintheindicatorwithasolidcolor,bydefault,orwithindividualbars,asshowninthisfigure.

Youcancustomizethedisplayandoperationoftheprogressindicatorinthecellbysettingthefollowingproperties.

Property DescriptionBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundimageforthecell.

FillColor('FillColorProperty'intheon-linedocumentation)

Setsthecolortouseforthefilledpartoftheprogressindicator.

FillColor2('FillColor2Property'intheon-linedocumentation)

Setsthesecondfillcolortouseforthegradientpartoftheprogressindicator.

FillTextColor('FillTextColorProperty'intheon-linedocumentation)

Setsthecolortouseforthetextinthefilledpartoftheindicator.

GradientMode('GradientModeProperty'intheon-linedocumentation)

Setsthegradientmodeforagradientstyleprogressindicator.

Maximum('MaximumProperty'intheon-linedocumentation)

Setsthemaximumvalueforuserentry.

Minimum('MinimumProperty'intheon-linedocumentation)

Setstheminimumvalueforuserentry.

Orientation('OrientationProperty'intheon-linedocumentation)

Setstheorientationoftheprogressbar.

Picture('PictureProperty'intheon-linedocumentation)

SetstheimagetousefortheprogressbarwhenthestyleissettoPicture.

ShowText('ShowTextProperty'intheon-linedocumentation)

Setswhetherthepercentfilledstringisdisplayed.

Style('StyleProperty'intheon-linedocumentation) Setsthestyleoftheprogressbar(s).

Text('TextProperty'intheon-linedocumentation) SetsthestringtousewhenTextStyleissettoCustom.

TextStyle('TextStyleProperty'intheon-linedocumentation)

Setshowthetextportionoftheprogressbarisdisplayed.

Withtheseproperties,youcansetthevariousaspectsofthetext,youcansetapicturetodisplay,andyoucandefinethecolors,evenspecifyingtwocolorsforagradientfromonecolortoanother.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheProgressCellType

Spread Windows Forms Developer’s Guide 368

Copyright © GrapeCity, inc. All rights reserved.

Page 370: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('ProgressCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheProgresscelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinetheprogressindicatorcellbycreatinganinstanceoftheProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)class.

2. Formatandspecifytheappearanceoftheprogressindicator.3. AssigntheprogressindicatorcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesaprogresscell.

C#FarPoint.Win.Spread.CellType.ProgressCellType progcell = new FarPoint.Win.Spread.CellType.ProgressCellType();progcell.FillColor = Color.Red;fpSpread1.ActiveSheet.Cells[0, 0].CellType = progcell;fpSpread1.ActiveSheet.Cells[0, 0].VisualStyles = FarPoint.Win.VisualStyles.Off;fpSpread1.ActiveSheet.Cells[0, 0].Value = 50;

VBDim progcell As New FarPoint.Win.Spread.CellType.ProgressCellType()progcell.FillColor = Color.RedFpSpread1.ActiveSheet.Cells(0, 0).CellType = progcellFpSpread1.ActiveSheet.Cells(0, 0).VisualStyles = FarPoint.Win.VisualStyles.OffFpSpread1.ActiveSheet.Cells(0, 0).Value = 50

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheProgresscell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectProgress.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

Spread Windows Forms Developer’s Guide 369

Copyright © GrapeCity, inc. All rights reserved.

Page 371: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Rich Text Cell

Youcancreatearichtextcellthathastextwithmultiplecolorsandfontsinthecell.

Therichtextcellhasarun-timemenuforformattingthetextinacellandforloadingarichtextformattedfile(RTF).Themenualsohasbasiceditoperationssuchascut,copy,paste,delete,andselectall.TobringupthemenuatruntimethecellmustbeinEditmode.Thenyouright-clickinthecelltobringupthemenuforhandlingthecontentsofthatcell.Highlightthetextfirstifyouwanttosetthecolor,font,orstyleofthetextinthecell.Anexampleoftheuseofthemenuisshowninthisfigure.

UnderstandingContextMenuChoices

Thechoicesinthecontextmenuaredescribedinthistable.

MenuItem

Description

CutCopyPaste

StandardClipboardoperationsthatcut,copy,andpastetoandfromtheClipboardthecontents(textandformatting)ofthecell

Delete Removestheselectedcontents(textandformatting)ofthecell

SelectAll Selectstheentirecontents(textandformatting)ofthecell

ClearAll Clearstheentirecontents(textandformatting)ofthecell

Load OpenstheFileOpendialogtoallowyoutoselectanRTFfiletoload

Spread Windows Forms Developer’s Guide 370

Copyright © GrapeCity, inc. All rights reserved.

Page 372: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Color Opensacolorpalettetoallowyoutoselectacolorthatiseitherappliedtoselectedtextorisusedasthecolorofsubsequenttext

Font Opensafontpickertoallowyoutoselectafontfaceandsizethatiseitherappliedtoselectedtextorisusedasthefontofsubsequenttext

Style Opensamenutoallowyoutoselectafontstyle(bold,italics,orunderline)thatiseitherappliedtoselectedtextorisusedasthefontofsubsequenttext

Align Opensamenutoallowyoutosetthetextalignment

UsingtheRich-TextCell

Whentherich-textcellisfirsteditedortextisloaded,theRTFstringofdataandformattinginformationissetinthecell.Subsequentchangestothecell,column,orrowappearancesettings(suchasfont,textcolor,alignment)donotaffecttheexistingtextbecausetheformattinginformationforthattextisalreadyset.Forthenewersettingstobeappliedtotheoriginalstring,youmustcompletelyclearthecellofbothdataandformatting.

YoucanusetheValue('ValueProperty'intheon-linedocumentation)propertyincodetoloadthecontentsofanRTFfileasastringofRTFcommands,oryoucansetanysetofRTFcommandsdirectly.

Settingapropertysuchasalignmentmaynotapplyafterthecellhasbeenmodifiedineditmode.Manyformattingproperties(HorizontalAlignment('HorizontalAlignmentProperty'intheon-linedocumentation),Font('FontProperty'intheon-linedocumentation),ForeColor('ForeColorProperty'intheon-linedocumentation),andsoon)canbesetinthehiddenRTFcodeassociatedwiththevalueofthecell.Forexample,settingtheHorizontalAlignmentpropertypriortoanyeditingmaycorrectlysetthealignment,butsettingthispropertyaftereditingmightnothavethedesiredeffect.RTFhashiddenformattingembeddedintheRTFstringwhichcanbeparsedorviewedthroughtheValue('ValueProperty'intheon-linedocumentation)propertyofthecell.

Thecellwidthmaybeoffseveralpixelsifyouautomaticallysizetherichtextcellandyouareusingmultiplefonts.

Deletingthetextfromarich-textcellputsanon-nullstringinthecell.ThismaycauseunexpectedresultswiththeISBLANKandCOUNTBLANKformulafunctionssincetheytreatthenon-nullstringasnon-blank.

IftheWordWrap('WordWrapProperty'intheon-linedocumentation)propertyistruewhenusingtheGetPreferredRowHeight('GetPreferredRowHeightMethod'intheon-linedocumentation)method,theheightmaybeslightlylargerifthelastcharacteronawrappedlineisontheborder.

ImportantNotes

Therich-textcellusestheMicrosoft.NETRichTextBoxclassforediting.Textusingafontwithextendedcharactersets,likeMSPMincho,cannotbesettoafontthatdoesnotsupportextendedcharactersets,likeTahoma.TheresultisthatRichTextBoxdoesnotallowyoutochangethefontofaFarEastscript-basedfonttoaWesternfont.

ThisfontissueisalimitationoftheRichTextBoxfortheMicrosoftWindows2000operatingsystem.Ifyoutrytosetafontthatdoesnotsupportextendedcharactersets,likeTahoma,ontextwithextendedcharacters,amessageboxisdisplayed.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheRichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

Spread Windows Forms Developer’s Guide 371

Copyright © GrapeCity, inc. All rights reserved.

Page 373: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheRichTextcelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinearichtextcellbycreatinganinstanceoftheRichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)class.

2. SpecifythepropertiesoftheRichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)class.

3. IfyouwanttoloadRTFdata,settheValuepropertyoftheRichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)classtoloadthedata

4. AssigntherichtextcelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheRichTextCellType('RichTextCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesarichtextcellandloadsdata.

C#FarPoint.Win.Spread.CellType.RichTextCellType rtf = new FarPoint.Win.Spread.CellType.RichTextCellType();rtf.WordWrap = true;rtf.Multiline = true;fpSpread1.ActiveSheet.Cells[0, 0].CellType = rtf;fpSpread1.ActiveSheet.Columns[0].Width = 300;fpSpread1.ActiveSheet.Rows[0].Height = 150;fpSpread1.ActiveSheet.Cells[0, 0].Value = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fscript\fprq2\fcharset0 Comic Sans MS;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fcharset0 Arial;}}{\colortbl ;\red128\green0\blue128;\red0\green255\blue255;\red255\green0\blue0;\red0\green255\blue0;\red0\green0\blue255;}\viewkind4\uc1\pard\cf1\b\f0\fs24 Testing\cf2\b0\fs28 \cf3\f1\fs40 1... \cf4\i 2... \cf5\ul\i0 3...\cf0\f2\fs20\par}";

VBDim rtf As New FarPoint.Win.Spread.CellType.RichTextCellType()rtf.WordWrap = Truertf.Multiline = TrueFpSpread1.ActiveSheet.Cells(0, 0).CellType = rtfFpSpread1.ActiveSheet.Columns(0).Width = 300FpSpread1.ActiveSheet.Rows(0).Height = 150FpSpread1.ActiveSheet.Cells(0, 0).Value = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033" + _"{\fonttbl{\f0\fscript\fprq2\fcharset0 Comic Sans MS;}" + _"{\f1\froman\fprq2\fcharset0 Times New Roman;}" + _"{\f2\fswiss\fcharset0 Arial;}}" + _"{\colortbl ;\red128\green0\blue128;\red0\green255\blue255;" + _"\red255\green0\blue0;" + _"\red0\green255\blue0;\red0\green0\blue255;}" + _

Spread Windows Forms Developer’s Guide 372

Copyright © GrapeCity, inc. All rights reserved.

Page 374: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

"\viewkind4\uc1\pard\cf1\b\f0\fs24 Testing\cf2\b0\fs28" + _" \cf3\f1\fs40 1... \cf4\i 2... \cf5\ul\i0 3...\cf0\f2\fs20\par" + _"}"

Example

Thisexampleloadsarichtextfile.

C#System.IO.TextReader f = System.IO.File.OpenText("your_file.rtf");string bits;bits = f.ReadToEnd();f.Close();fpSpread1.ActiveSheet.Cells[0, 0].CellType = new FarPoint.Win.Spread.CellType.RichTextCellType();fpSpread1.ActiveSheet.Cells[0, 0].Value = bits;

VBDim f as System.IO.TextReader = System.IO.File.OpenText("your_file.rtf")Dim bits As Stringbits = f.ReadToEnd()f.Close()FpSpread1.ActiveSheet.Cells(0, 0).CellType = New FarPoint.Win.Spread.CellType.RichTextCellType()FpSpread1.ActiveSheet.Cells(0, 0).Value = bits

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheRichTextCellTypecelltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectRichText.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting a Slider Cell

Aslidercelldisplaysaslidercontrolinthecell.

Spread Windows Forms Developer’s Guide 373

Copyright © GrapeCity, inc. All rights reserved.

Page 375: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tocreateacellthatactslikeaslider,usetheSliderCellType('SliderCellTypeClass'intheon-linedocumentation)classandfollowtheproceduredescribedinthistopic.

CustomizingtheSlider

Thepartsoftheslider(correspondingtotheirpropertynames)areshownhere.Forthisexample,theorientationishorizontalandsolidcolorsareused(asopposedtopictures).

Youcancustomizethedisplayandoperationofthesliderinthecellbysettingthefollowingproperties.

Property CustomizationBackgroundImage('BackgroundImageProperty'intheon-linedocumentation)

Setsthebackgroundimageforthecell.

ChangeOnFocus('ChangeOnFocusProperty'intheon-linedocumentation)

Setswhethertheslidermoveswiththeinitialclick.

KnobColor('KnobColorProperty'intheon-linedocumentation)

Setsthecolorofthesliderknob.

KnobPicture('KnobPictureProperty'intheon-linedocumentation)

Customizesthesliderknobimage.

KnobWidth('KnobWidthProperty'intheon-linedocumentation)

Setsthewidth(inpixels)ofthesliderknob.

Maximum('MaximumProperty'intheon-linedocumentation) Setsthemaximumvalueforuserentry.

Minimum('MinimumProperty'intheon-linedocumentation) Setstheminimumvalueforuserentry.

Orientation('OrientationProperty'intheon-line Setstheorientationoftheslider.

Spread Windows Forms Developer’s Guide 374

Copyright © GrapeCity, inc. All rights reserved.

Page 376: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

TickColor('TickColorProperty'intheon-linedocumentation) Setsthecoloroftheslidertickmark.

TickLength('TickLengthProperty'intheon-linedocumentation)

Setsthesizeoftheslidertickmark.

TickSpacing('TickSpacingProperty'intheon-linedocumentation)

Setshowfrequentlytospacethetickmarks.

TrackColor('TrackColorProperty'intheon-linedocumentation)

Setsthecoloroftheslidertrack.

TrackPicture('TrackPictureProperty'intheon-linedocumentation)

Customizestheimagefortheslidertrack.

TrackWidth('TrackWidthProperty'intheon-linedocumentation)

Setsthewidth(inpixels)oftheslidertrack.

YoucanprogrammaticallychangethelocationoftheknobintheslidercellbysettingtheValue('ValueProperty'intheon-linedocumentation)propertytoavaluethatisgreaterthanorequaltothemiminumorlessthanorequaltothemaximumsetting.

NotethatsomegraphicalelementsincertaincelltypesareaffectedbyXPthemes(visualstyles).SettingtheVisualStyles('VisualStylesProperty'intheon-linedocumentation)propertyoftheSpreadcomponentto"off"canallowvisualcustomizationsofthosegraphicalcelltypestoworkasexpected.Formoreinformation,refertoUsingXPThemeswiththeComponent.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheSliderCellType('SliderCellTypeClass'intheon-linedocumentation)class.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheSlidercelltype.8. ExpandthelistofpropertiesundertheCellTypeproperty.Selectandsetthesespecificpropertiesasneeded.9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. DefinetheslidercellbycreatinganinstanceoftheSliderCellType('SliderCellTypeClass'intheon-linedocumentation)class.

2. Formatandspecifytheappearanceoftheslider.3. AssigntheslidercelltypetoacellorrangeofcellsbysettingtheCellType('CellTypeProperty'intheon-linedocumentation)propertyforacell,column,row,orstyletotheSliderCellType('SliderCellTypeClass'intheon-linedocumentation)object.

Example

Thisexamplecreatesaslidercell.

Spread Windows Forms Developer’s Guide 375

Copyright © GrapeCity, inc. All rights reserved.

Page 377: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#fpSpread1.ActiveSheet.Columns[1].Width = 250;fpSpread1.ActiveSheet.Rows[1].Height = 150;fpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off;

FarPoint.Win.Spread.CellType.SliderCellType slider = new FarPoint.Win.Spread.CellType.SliderCellType();slider.BackgroundImage = new FarPoint.Win.Picture(Image.FromFile("C:\\images\\scene.jpg"));slider.ChangeOnFocus = true;

slider.KnobColor = Color.Red;// Or if you want to use an image instead of a solid color:// slider.KnobPicture = new FarPoint.Win.Picture(Image.FromFile("..\\images\\brush.gif"));slider.KnobWidth = 10;slider.Maximum = 200;slider.Minimum = 0;slider.Orientation = FarPoint.Win.SliderOrientation.Horizontal;slider.TickColor = Color.DarkBlue;slider.TickLength = 5;slider.TickSpacing = 20;slider.TrackColor = Color.Green;// Or if you want to use an image instead of a solid color:// slider.TrackPicture = new FarPoint.Win.Picture(Image.FromFile("..\\images\\pattern.jpg"));slider.TrackWidth = 10;

fpSpread1.ActiveSheet.Cells[1, 1].CellType = slider;

VBFpSpread1.ActiveSheet.Columns(1).Width = 250FpSpread1.ActiveSheet.Rows(1).Height = 150FpSpread1.VisualStyles = FarPoint.Win.VisualStyles.Off

Dim slider As New FarPoint.Win.Spread.CellType.SliderCellType()slider.BackgroundImage = New FarPoint.Win.Picture(Image.FromFile("C:\\images\\scene.jpg"))slider.ChangeOnFocus = Trueslider.KnobColor = Color.Red‘ Or if you want to use an image instead of a solid color:‘ slider.KnobPicture = New FarPoint.Win.Picture(Image.FromFile("..\\images\\brush.gif"))slider.KnobWidth = 10slider.Maximum = 200slider.Minimum = 0slider.Orientation = FarPoint.Win.SliderOrientation.Horizontalslider.TickColor = Color.DarkBlueslider.TickLength = 5slider.TickSpacing = 20slider.TrackColor = Color.Green‘ Or if you want to use an image instead of a solid color:‘ slider.TrackPicture = New FarPoint.Win.Picture(Image.FromFile("..\\images\\pattern.jpg"))slider.TrackWidth = 10

Spread Windows Forms Developer’s Guide 376

Copyright © GrapeCity, inc. All rights reserved.

Page 378: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.ActiveSheet.Cells(1, 1).CellType = slider

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheSlidercelltype.

NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.Selectandsetthosepropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectSlider.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Understanding Additional Features of Cell Types

Youcanspecifythecelltypeforindividualcells,columns,rows,arangeofcells,oranentiresheet.Foranycelltypetherearepropertiesofacellthatcanbeset.Ingeneral,workingwithcelltypesincludesdefiningthecelltype,settingtheproperties,andapplyingthatcelltypetocells.

Thefollowingtopicsprovideadditionalinformationaboutcustomizingcellsbasedoncelltypes:

DisplayingSpinButtonsAllowingaComboBoxCelltoHandleaDoubleClickLimitingValuesforaNumericCellCustomizingthePop-UpDate-TimeControlCustomizingthePop-UpCalculatorControlCustomizingAutomaticCompletion(TypeAhead)WorkingwithaSubEditorCreatingaCustomCellType

Displaying Spin Buttons

Insomecelltypes,youcandisplayspinbuttons,toletuserschangethevalueinacellquickly.Spinbuttonsareasetoftwoarrowbuttonsthatappeartogether,oneforincreasingthevalueandonefordecreasingthevalue.Spinbuttonsappearwhenthecellisineditmode.Thefollowingfigureillustratesspinbuttonsontheright-handsideofanumbercell.

Youspecifyhowmuchthevaluechangeswhentheuserclicksaspinbuttonandyoudeterminewhetherthevaluewrapswhentheminimumormaximumvalueisreached.

Spinbuttonscanbedisplayedin:

CurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)(seeSettingaCurrencyCell)DateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)(seeSettingaDate-TimeCell)NumberCellType('NumberCellTypeClass'intheon-linedocumentation)(seeSettingaNumberCell)PercentCellType('PercentCellTypeClass'intheon-linedocumentation)(seeSettingaPercentCell)

Forthenumericcelltypes,ifthecursorisleftofthedecimalpoint,bydefaultthespinbuttonincrementsthevalueusing

Spread Windows Forms Developer’s Guide 377

Copyright © GrapeCity, inc. All rights reserved.

Page 379: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thewholenumber.Ifthecursoristotheright,bydefaultthespinbuttonincrementsthevalueusingthefirst,ortenths,decimalplace.

Forthedate-timecelltype,theday,month,year,etc.areincrementedordecrementeddependingonwhichpartofthedateandtimethecursorisin.

Thespinbuttonsexpandverticallytofilltheentireheightofthecell,sothetallerthecell,thebiggerthespinbuttons.Thepropertiesofthecurrency,number,andpercentcelltypesthatrelatetospinbuttonsarelistedinthefollowingtable.Thedate-timecelltypeonlyprovidestheSpinButtonproperty.

Property DescriptionSpinButton Setswhetheraspinbuttonisdisplayedwhenediting.

SpinDecimalIncrement Setstheamountbywhichthevalueincrementswhenusingthespinbuttonsandthecursorisinthedecimalportion.

SpinIntegerIncrement Setstheamountbywhichthevalueincrementswhenusingthespinbuttonsandthecursorisintheintegerportion.

SpinWrap Setswhetherthevaluewrapswhentheminimumormaximumisreached.

Formoreinformationrefertothepropertyforeachcelltype:

CurrencyCellType.SpinButton('SpinButtonProperty'intheon-linedocumentation)DateTimeCellType.SpinButton('SpinButtonProperty'intheon-linedocumentation)NumberCellType.SpinButton('SpinButtonProperty'intheon-linedocumentation)PercentCellType.SpinButton('SpinButtonProperty'intheon-linedocumentation)

Forinformationontheeditablecelltypes,refertoWorkingwithEditableCellTypes.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

UsingCode

DisplaythespinbuttonsbysettingtheSpinButtonpropertytoTrue.SpecifytheamountbywhichthevalueinthecellisincrementedordecrementedwhentheuserclicksonthespinbuttonsbysettingtheSpinIncrementpropertytoanonzerovalue.SpecifywhetherthevalueinthecellwrapswhenthecellreachestheminimumormaximumvaluebysettingtheSpinWrappropertytoTrueorFalse.

Example

Thisexamplespecifiesacurrencycellandsetsspinbuttonproperties.

C#FarPoint.Win.Spread.CellType.CurrencyCellType crcycell = new FarPoint.Win.Spread.CellType.CurrencyCellType();crcycell.SpinButton = true;crcycell.SpinDecimalIncrement = 0.5F;crcycell.SpinIntegerIncrement = 5;crcycell.SpinWrap = true;crcycell.MaximumValue = 500;crcycell.MinimumValue = -100;fpSpread1.Sheets[0].Cells[6,2].CellType = crcycell;fpSpread1.Sheets[0].Cells[6,2].Value = 443.3482;

VB

Spread Windows Forms Developer’s Guide 378

Copyright © GrapeCity, inc. All rights reserved.

Page 380: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim curr As New FarPoint.Win.Spread.CellType.CurrencyCellType()curr.SpinButton = Truecurr.SpinDecimalIncrement = 0.5curr.SpinIntegerIncrement = 5curr.SpinWrap = Truecurr.MaximumValue = 500curr.MinimumValue = -100FpSpread1.ActiveSheet.Cells(0, 0).CellType = currFpSpread1.ActiveSheet.Cells(0, 0).Value = 443.3482

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosethecelltype.Now

expandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.SetSpinButtontoTruetodisplaythespinbuttons.Selectandsetotherpropertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectthecelltype.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Allowing a Combo Box Cell to Handle a Double Click

Bydefault,acomboboxcell(ComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation))cannotreceiveadouble-clickwiththeleftmousebutton.Thecellgoesintoeditmodeonthefirstclick,sothenextclickgoestotheFpCombocontrolthatisthesubeditor.Tohandledouble-clickingonacomboboxcell,usecodebasedontheexampleshownhere.

Formoreinformationonthepropertiesandmethodsofthiscelltype,refertotheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)class.

Forinformationonthegraphicalcelltypes,refertoWorkingwithGraphicalCellTypes.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

UsingCode

1. DefineacomboboxcellbycreatinganinstanceoftheComboBoxCellType('ComboBoxCellTypeClass'intheon-linedocumentation)class.

2. Definetheitemsinthecomboboxlist.3. Handlethedouble-clickevent.

Example

Thisexampleprovidesaneventwhendouble-clickingonacombocell.

C#private void Form1_Load(object sender, System.EventArgs e){ FarPoint.Win.Spread.CellType.ComboBoxCellType c = new FarPoint.Win.Spread.CellType.ComboBoxCellType(); c.Items = new String[] {"a", "b", "c"}; fpSpread1.Sheets[0].Rows[0].CellType = c;}

private void HeaderDoubleClick(object sender, System.EventArgs e)

Spread Windows Forms Developer’s Guide 379

Copyright © GrapeCity, inc. All rights reserved.

Page 381: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

{//Add event code}

private void FpSpread1_EditModeOn(object sender, System.EventArgs e){ FarPoint.Win.FpCombo c; if (fpSpread1.Sheets[0].ActiveRowIndex == 0) { c = ((FarPoint.Win.FpCombo)(fpSpread1.EditingControl)); c.Click += new System.EventHandler(HeaderDoubleClick); } }

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim c As New FarPoint.Win.Spread.CellType.ComboBoxCellType c.Items = New String() {"a", "b", "c"} FpSpread1.Sheets(0).Rows(0).CellType = cEnd Sub

Private Sub HeaderDoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)'Add event codeEnd Sub

Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn Dim c As FarPoint.Win.FpCombo If FpSpread1.Sheets(0).ActiveRowIndex = 0 Then c = CType(FpSpread1.EditingControl, FarPoint.Win.FpCombo) AddHandler c.Click, AddressOf HeaderDoubleClick End IfEnd Sub

Limiting Values for a Numeric Cell

Youcansettheminimumandmaximumvaluesthatcanbeenteredinacellandnotifytheuserwithamessageiftheentryissmallerthantheminimumorlargerthanthemaximum.

Thecelltypesthatallowyoutosetaminimumandmaximumvalueare:

CurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)NumberCellType('NumberCellTypeClass'intheon-linedocumentation)PercentCellType('PercentCellTypeClass'intheon-linedocumentation)ProgressCellType('ProgressCellTypeClass'intheon-linedocumentation)SliderCellType('SliderCellTypeClass'intheon-linedocumentation)

Formoreinformationaboutthesecelltypes,refertothefollowingtopics:

SettingaCurrencyCellSettingaNumberCellSettingaPercentCellSettingaProgressIndicatorCellSettingaSliderCell

Spread Windows Forms Developer’s Guide 380

Copyright © GrapeCity, inc. All rights reserved.

Page 382: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertylist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthecelltype.7. Inthepropertylist,selecttheCellTypepropertyandchoosetheCurrency,Number,Percent,Progress,orSlidercelltype.

8. ExpandthelistofpropertiesundertheCellTypeproperty.SelectandsettheMaximumValueandMinimumValuepropertiestothehighestandlowestallowablecurrencyvalues.

9. ClickOKtoclosetheCell,Column,andRowEditor.10. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. SettheminimumormaximumvalueorbothforacurrencycellbysettingtheMaximumValueandMinimumValuepropertiesforaCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation),NumberCellType('NumberCellTypeClass'intheon-linedocumentation),PercentCellType('PercentCellTypeClass'intheon-linedocumentation),ProgressCellType('ProgressCellTypeClass'intheon-linedocumentation),orSliderCellType('SliderCellTypeClass'intheon-linedocumentation)object.

2. AssignthecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyletotheparticularcelltypeobject.

Example

Thisexamplecreatesacurrencycellandsetstheminimumandmaximumvalues.

C#FarPoint.Win.Spread.CellType.CurrencyCellType currcell = new FarPoint.Win.Spread.CellType.CurrencyCellType();currcell.MinimumValue = 1;currcell.MaximumValue = 10;fpSpread1.ActiveSheet.Cells[1,1].CellType = currcell;fpSpread1.ActiveSheet.Cells[1,1].Note = "Pick a number between 1 and 10!";

VBDim currcell As New FarPoint.Win.Spread.CellType.CurrencyCellType()currcell.MinimumValue = 1currcell.MaximumValue = 10FpSpread1.ActiveSheet.Cells(1,1).CellType = currcellFpSpread1.ActiveSheet.Cells(1,1).Note = "Pick a number between 1 and 10!"

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType(orright-clickonthecellsandselectthecelltype).

Spread Windows Forms Developer’s Guide 381

Copyright © GrapeCity, inc. All rights reserved.

Page 383: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Fromthedrop-downlist,chooseCurrencyorothernumericcelltype.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.

3. SelectandsettheMaximumValueandMinimumValuepropertiestothehighestandlowestallowablecurrencyvalues.

4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Pop-Up Date-Time Control

IfyoupressF4ordouble-clickadate-timecellwhenitisineditmode,apop-upcalendar(orpop-upclock)appears,asshowninthefollowingfigures.Thecalendarcontrolappearsifyouhavethedate-timecellsettoanyformatbesidesTimeOnlyformat.TheclockcontrolappearsifyouhavetheformatsettoTimeOnly.Thedateyouchoosefromthecalendar(orthetimeyouchoosefromtheclock)isplacedinthedate-timecell.Ifyouwantthepresentdateandtime,inthecalendarcontrolclickToday;ifyouwantthepresenttime,intheclockcontrolclickNow.

Pop-UpCalendarControl Pop-UpClockControl

YoucanalsodisplaytheclockcontroliftheDateTimeFormat('DateTimeFormatProperty'intheon-linedocumentation)propertyissettoUserDefinedandtheUserDefinedFormat('UserDefinedFormatProperty'intheon-linedocumentation)propertyusesatimesettingsuchasHH:mm.

Youcanspecifynormalandabbreviateddaynames,normalandabbreviatedmonthnames,andthetextforthebuttonsatthebottomofthecontrol.UsetheSetCalendarText('SetCalendarTextMethod'intheon-linedocumentation)methodoftheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)classtosetthese.

Notethatthetextappearscenteredonthebutton.Ifyousetcustomtextforthebuttons,trytolimityourtexttoeightorninecharactersinlength.Thebuttonwilldisplaytencharacters,butthefirstandlastappearveryclosetotheedges.

Whenusingthecontrols,youmustclicktheOKorCancelbuttontoclosethecontrol.TheToday(orNow)buttonsimplysetsthevalueinthecelltothecurrentdate(ortime).

Formoreinformationonsettingtheformatofthedate-timecell,refertotheDateTimeFormat('DateTimeFormatEnumeration'intheon-linedocumentation)enumeration.

Forinformationontheeditablecelltypes,refertoWorkingwithEditableCellTypes.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

Spread Windows Forms Developer’s Guide 382

Copyright © GrapeCity, inc. All rights reserved.

Page 384: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Definethedate-timecellbycreatinganinstanceoftheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)class.

2. Specifythevaluesforthebuttonsorforallthedayandmonthnamesandthebuttons.3. Assignthedate-timecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,

orstyletotheDateTimeCellType('DateTimeCellTypeClass'intheon-linedocumentation)object.

Example

Thefollowingexamplesetsthetextofthebuttonsandspecifiesdayandmonthnamesinarraylists.

C#FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType();string[] daynames = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};string[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};string[] dayabbrev = {"Su","My","Ty","Wy","Th","Fy","Sy"};string[] mthabbrev = {"Jy","Fy","Mh","Al","My","Jn","Jl","At","Sr","Or","Nr","Dr"};string okbuttn = "Fine";string cancelb = "Quit";datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined;datecell.UserDefinedFormat = "dddd MMMM d, yyyy";datecell.SetCalendarText(daynames,months,dayabbrev,mthabbrev,okbuttn, cancelb);fpSpread1.ActiveSheet.Cells[1, 1].CellType = datecell;fpSpread1.ActiveSheet.Cells[1, 1].Value = System.DateTime.Now;fpSpread1.ActiveSheet.Columns[1].Width = 130;

VBDim datecell As New FarPoint.Win.Spread.CellType.DateTimeCellType()Dim daynames() As String = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }Dim months() As String = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}Dim dayabbrev() As String = {"Su","My","Ty","Wy","Th","Fy","Sy"}Dim mthabbrev() As String = {"Jy","Fy","Mh","Al","My","Jn","Jl","At","Sr","Or","Nr","Dr"}Dim okbuttn As String = "Fine"Dim cancelb As String = "Quit"datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefineddatecell.UserDefinedFormat = "dddd MMMM d, yyyy"datecell.SetCalendarText(daynames,months,dayabbrev,mthabbrev,okbuttn, cancelb)FpSpread1.ActiveSheet.Cells(1, 1).CellType = datecellFpSpread1.ActiveSheet.Cells(1, 1).Value = System.DateTime.NowFpSpread1.ActiveSheet.Columns(1).Width = 130

UsingtheSpreadDesigner

1. Selectthecellorcellsintheworkarea.2. Inthepropertylist,intheMisccategory,selectCellType.Fromthedrop-downlist,choosetheDateTimecell

type.NowexpandtheCellTypepropertyandvariouspropertiesareavailablethatarespecifictothiscelltype.SetpropertiessuchasShortDayNamesandShortMonthNamestochangethecalendartext.Setother

Spread Windows Forms Developer’s Guide 383

Copyright © GrapeCity, inc. All rights reserved.

Page 385: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

propertiesasneeded.Orright-clickonthecellorcellsandselectCellType.Fromthelist,selectthecelltype.IntheCellTypeeditor,setthepropertiesyouneed.ClickApply.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Pop-Up Calculator Control

IftheuserpressesF4ordouble-clicksanyoftheseveralnumericcelltypeswhenthecellisineditmode,apop-upcalculatorappears,asshowninthefollowingfigure.

Youcanusethecalculatortotypeanumberortoperformacalculation.Theresultfromthecalculatorisplacedinthenumericcell.Thecelltypesthatallowacalculatorpop-upare:

CurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)(seeSettingaCurrencyCell)NumberCellType('NumberCellTypeClass'intheon-linedocumentation)(seeSettingaNumberCell)PercentCellType('PercentCellTypeClass'intheon-linedocumentation)(seeSettingaPercentCell)

Whenusingthecontrols,youmustclicktheOKorCancelbuttontoclosethecontrol.YoucanchangethetextofthebuttonsatthebottomwiththeSetCalculatorTextmethodforthatcelltype.

Notethatthetextappearscenteredonthebutton.Ifyousetcustomtextforthebuttons,trytolimityourtexttoeightorninecharactersinlength.Thebuttonwilldisplaytencharacters,butthefirstandlastappearveryclosetotheedgesofthebutton.

Forinformationontheeditablecelltypes,refertoWorkingwithEditableCellTypes.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

UsingCode

Spread Windows Forms Developer’s Guide 384

Copyright © GrapeCity, inc. All rights reserved.

Page 386: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. DefinethecellbycreatinganinstanceoftheCurrencyCellType('CurrencyCellTypeClass'intheon-linedocumentation)class(orothernumerictypecell).

2. Specifythetextforthebuttons.3. AssignthecelltypetoacellorrangeofcellsbysettingtheCellTypepropertyforacell,column,row,orstyle.

Example

Thisexamplesetsthetextofthebuttons.

C#FarPoint.Win.Spread.CellType.CurrencyCellType ctest = new FarPoint.Win.Spread.CellType.CurrencyCellType();ctest.SetCalculatorText("Accept", "Cancel");fpSpread1.Sheets[0].Cells[0, 0].CellType = ctest;

VBDim ctest As New FarPoint.Win.Spread.CellType.CurrencyCellType()ctest.SetCalculatorText("Accept", "Cancel")FpSpread1.Sheets(0).Cells(0, 0).CellType = ctest

Customizing Automatic Completion (Type Ahead)

Youcanprovideautomaticcompletion(typeahead)ofuserinputtoacell.YouusetheIAutoCompleteSupport('IAutoCompleteSupportInterface'intheon-linedocumentation)interfaceanditspropertiestoprovidetheautomaticcompletionfeatureintheeditablecelltypes.

Basicallytherearetwopropertiesthatareset.Firstyousetthemodeofautomaticcompletion,asshowninthefigureabove.Theoptionsincludewhethertosuggestalistofpossiblecompletionsoradrop-downlistofpossiblecompletionsorboth(ornone).

Second,youcansetthesourceofthesuggestionsanddrop-downlist.Thesourceisthelistofitemsthatareconsideredforcompletion.Youcancreateacustomsourceanddefineyourownlistofitemsoryoucansetvarioussystemsources.Therearetwopropertiesintheinterfacethatprovidesettingsforthecustomsource.Thefirstonesetsthelistofpossiblecandidatesforacustomsource.Thesecondsetswhethertofillthelistwiththelistofvaluesfromothercellsinthe

Spread Windows Forms Developer’s Guide 385

Copyright © GrapeCity, inc. All rights reserved.

Page 387: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

column.Tousethevaluesinthecellsinthecolumn,forexample,youwouldsetthesourcetocustomandthenturnonautomaticfill.Theautomaticfillonlyaddsitemstothecustomsourceiftheyareaboveorbelowthecellwithoutablankcellinbetween.

Foranexampleofautomaticcompletion,refertothewebsiteathttp://www.componentone.com/SuperProducts/SpreadStudio/Demos/.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

Working with a SubEditor

Forseveraleditablecelltypes(theonesinWorkingwithEditableCellTypes),whenyouclickinsidethecell,aneditorisdisplayed.Youcangobeyondthissimplelineeditorandprovideacustomuserinterface(toprovideoptionstomakethetaskofuserinputeasier).Thisotherlevelofinterfaceiscontrolledbythesubeditor,ortheeditorwithinthecelleditor.Forexample,whenyouselectthedate-timecell,youcanprovideacalendarfortheusertoselectadate.Thiscalendarcontrolwouldbecalledbythesubeditor.

CreatingaSubeditor

Youcancreateyourownsubeditor,whichcanbedisplayedbythefollowingactions:

bypressingF4keybydouble-clickingcellsineditmodebypressingadrop-downbutton(whenDropDownButtonpropertyissettotrue)

Thestepsforcreatingyourownsubeditorare:

1. CreateanewFormclassforasubeditor.2. ImplementISubEditorinterfacetotheFormthatyouhavejustcreated.3. Setthesubeditor(SubEditorproperty)tothecaller.

Toseeanexampleofasubeditor,refertoCustomizingthePop-UpDate-TimeControlwherethecalendarsubeditorisavailableforadate-timecell,andCustomizingthePop-UpCalculatorControlwhereacalculatorsubeditorisavailableforseveralnumericcelltypes.

CancelingaSubeditor

Forseveraleditablecelltypes,whenyouclickinsidethecell,asubeditorisdisplayedbydefault.Butsometimesyoumightwanttodisablethesesubeditors.Forexample,indate-timecellsyoumightwanttodisablethepop-upcalendarcontrol;inthenumbercells,youmightwanttodisablethepop-upcalculatorcontrol.

Example

Tocancelsubeditors,youcansete.CanceltoTrueintheSubEditorOpening('SubEditorOpeningEvent'intheon-linedocumentation)event,asshowninthefollowingexample.

C#private void FpSpread1_SubEditorOpening(object sender, FarPoint.Win.Spread.SubEditorOpeningEventArgs e){ e.Cancel = true;}

VBPrivate Sub FpSpread1_SubEditorOpening(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.SubEditorOpeningEventArgs) Handles FpSpread1.SubEditorOpening

Spread Windows Forms Developer’s Guide 386

Copyright © GrapeCity, inc. All rights reserved.

Page 388: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

e.Cancel = TrueEnd Sub

Forinformationontheeditablecelltypes,refertoWorkingwithEditableCellTypes.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

Creating a Custom Cell Type

Youcanimplementyourowntypesofcellsbycreatingasubclassthatinheritsanexistingcelltype(thatis,overridingeachmethodinthatclass).ThecustomcelltypeclassshouldbemarkedasserializableiftheClipboardwillbeusedwithitoriftheexporttoExcelmethodsareused.

Forinformationonotherfeaturesofcelltypes,refertoUnderstandingAdditionalFeaturesofCellTypes.

UsingCode

Thisexamplesubclassesthecheckboxcelltypetoillustratetheuseofthemethods.

C#class myCkBox : FarPoint.Win.Spread.CellType.CheckBoxCellType{CheckBox ckbx = new CheckBox();

public myCkBox(){}new event EventHandler EditingCanceled;new event EventHandler EditingStopped;

public override void StartEditing(EventArgs e, bool selectAll, bool autoClipboard){ return;}public override void CancelEditing(){ EditingCanceled(ckbx, EventArgs.Empty); base.FireEditingCanceled();}public override bool StopEditing(){ if (EditingStopped != null) { EditingStopped(ckbx, EventArgs.Empty); base.FireEditingStopped(); return true; } else { return false; }}

public override bool IsReservedKey(KeyEventArgs e){ return base.IsReservedKey(e);

Spread Windows Forms Developer’s Guide 387

Copyright © GrapeCity, inc. All rights reserved.

Page 389: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

}public override object IsReservedLocation(Graphics g, int x, int y, Rectangle r,FarPoint.Win.Spread.Appearance appr, objectvalue, float zoom){ return base.IsReservedLocation(g, x, y, r, appr, value, zoom);}public override Size GetPreferredSize(Graphics g, Size size,FarPoint.Win.Spread.Appearance appr, object value, float zoom){ return base.GetPreferredSize(g, size, appr, value, zoom);}public override object Parse(string s){ return base.Parse(s);}public override string Format(object o){ return base.Format(o.ToString());}public override Control GetEditorControl(FarPoint.Win.Spread.Appearance appearance,float zoomFactor){ return ckbx;}public override object GetEditorValue(){ return ckbx.CheckState;}public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearanceappr, object value, bool issel, boolislocked, float zoom){ GetEditorValue(); if (ckbx.CheckState == CheckState.Checked) { ControlPaint.DrawCheckBox(g, r.X, r.Y, r.Width - 40, r.Height - 6,ButtonState.Checked); } else if (ckbx.CheckState == CheckState.Unchecked) { ControlPaint.DrawCheckBox(g, r.X, r.Y, r.Width - 40, r.Height - 6,ButtonState.Normal); }}public override void SetEditorValue(object value){ ckbx.CheckState = CheckState.Checked;}public override Cursor GetReservedCursor(object o){ return base.GetReservedCursor(o);}}

private void menuItem4_Click(object sender, System.EventArgs e){

Spread Windows Forms Developer’s Guide 388

Copyright © GrapeCity, inc. All rights reserved.

Page 390: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

myCkBox ckbx = new myCkBox(); fpSpread1.ActiveSheet.Cells[0, 0].CellType = ckbx;}

VBPublic Class myCkBoxInherits FarPoint.Win.Spread.CellType.CheckBoxCellType

Dim ckbx As New CheckBox()

Sub New()

End Sub

Public Shadows Event EditingStopped(ByVal sender As Object, ByVal e As EventArgs)

Public Shadows Event EditingCancelled(ByVal sender As Object, ByVal e As EventArgs)

Public Overrides Sub StartEditing(ByVal e As EventArgs, ByVal selectAll As Boolean,ByVal autoClipboard As Boolean) MyBase.StartEditing(e, selectAll, autoClipboard)End Sub

Public Overrides Sub CancelEditing() RaiseEvent EditingCancelled(ckbx, EventArgs.Empty) MyBase.FireEditingCanceled()End Sub

Public Overrides Function StopEditing() As Boolean RaiseEvent EditingStopped(ckbx, EventArgs.Empty) MyBase.FireEditingStopped() Return TrueEnd Function

Public Overrides Function IsReservedKey(ByVal e As KeyEventArgs) As Boolean Return MyBase.IsReservedKey(e)End Function

Public Overrides Function IsReservedLocation(ByVal g As Graphics, ByVal x As Integer,ByVal y As Integer, ByVal r As Rectangle,ByVal appr As FarPoint.Win.Spread.Appearance, ByVal value As Object, ByVal zoom AsSingle) As Object Return MyBase.IsReservedLocation(g, x, y, r, appr, value, zoom)End Function

Public Overrides Function GetPreferredSize(ByVal g As Graphics, ByVal s As Size, ByValappr As FarPoint.Win.Spread.Appearance,ByVal value As Object, ByVal zoom As Single) As Size Return MyBase.GetPreferredSize(g, s, appr, value, zoom)End Function

Public Overrides Function Parse(ByVal s As String) As Object Return MyBase.Parse(s)End Function

Public Overrides Function Format(ByVal o As Object) As String

Spread Windows Forms Developer’s Guide 389

Copyright © GrapeCity, inc. All rights reserved.

Page 391: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Return MyBase.Format(o)End Function

Public Overrides Function GetEditorControl(ByVal appr AsFarPoint.Win.Spread.Appearance, ByVal zoom As Single) As Control Return ckbxEnd Function

Public Overrides Function GetEditorValue() As Object Return ckbx.CheckStateEnd Function

Public Overrides Sub PaintCell(ByVal g As Graphics, ByVal r As Rectangle, ByVal appr AsFarPoint.Win.Spread.Appearance, ByValValue As Object, ByVal issel As Boolean, ByVal islocked As Boolean, ByVal zoom AsSingle) GetEditorValue() If ckbx.CheckState = CheckState.Checked Then ControlPaint.DrawCheckBox(g, r.X, r.Y, r.Width - 40, r.Height - 6,ButtonState.Checked) ElseIf ckbx.CheckState = CheckState.Unchecked Then ControlPaint.DrawCheckBox(g, r.X, r.Y, r.Width - 40, r.Height - 6,ButtonState.Normal) End IfEnd Sub

Public Overrides Sub SetEditorValue(ByVal value As Object) ckbx.CheckState = CheckState.CheckedEnd Sub

Public Overrides Function GetReservedCursor(ByVal o As Object) As Cursor Return MyBase.GetReservedCursor(o)End FunctionEnd Class

Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MenuItem1.Click Dim ckbx As New myCkBox() FpSpread1.ActiveSheet.Cells(0, 0).CellType = ckbxEnd Sub

Spread Windows Forms Developer’s Guide 390

Copyright © GrapeCity, inc. All rights reserved.

Page 392: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing Interaction in Cells

YoucancustomizevariousaspectsofuserinteractionintheSpreadcomponent.Thetasksthatrelatetocustomizingtheuserinteractionwiththespreadsheetinclude:

UsingEditModeandFocusUsingDragOperationstoFillCellsUsingVisibleIndicatorsintheCellUsingConditionalFormattingofCellsManagingFormulasinCellsUsingtheAdditionalSpreadControls

Youcancustomizewhatyouallowtheusertodo.Thereareseveralfeaturesthatarecoveredinvarioustopicsinthissection,buttheyaresummarizedinonetopicforeasyreferenceinAllowingUserFunctionality.

Youcanalsodeterminehowtheuserinteractsbasedonthecelltype.RefertoCustomizingInteractionwithCellTypes.

Youcanalsodeterminehowtheuserinteractswiththekeyboard.RefertoManagingKeyboardInteraction.

Using Edit Mode and Focus

Importantaspectsofworkingwithcells,andwithuserinteractionatacelllevel,includetheuseofeditmodeandfocus.Thefollowingtopicsdescribehowyoucancustomizeinteractionincludingeditmodeandfocus:

UnderstandingEditModeinaCellLockingaCellAllowingtheDisplayofButtonsinaCellCustomizingtheFocusIndicatorforaCell

Understanding Edit Mode in a Cell

Typically,whentheenduserdouble-clicksinthecell,theeditorcontrolismadeavailableandtheusercantypeinthecell.Thisabilitytoeditinacelliscallededitmode.Severalpropertiesandmethodscancustomizetheuseofeditmode.

Whenthecellisineditmode,theactivecelltypicallydisplaysaflashingI-beamcursor,asshowninthefigurebelow.Whenthecellisnotineditmode,theactivecelltypicallydisplaysafocusrectangle,alsoasshown.

Cellineditmode Cellselectedbutnotineditmode

Acellenterseditmode(editmodeisturnedon)when

theuserstartstypinginthecelltheuserdouble-clicksthecelltheEditMode('EditModeProperty'intheon-linedocumentation)propertyissettotrue

Acellleaveseditmode(editmodeisturnedoff)when

theuserpressestheEnterkeytheusermakesanothercelltheactivecelltheapplicationlosesthefocus

Spread Windows Forms Developer’s Guide 391

Copyright © GrapeCity, inc. All rights reserved.

Page 393: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theEditMode('EditModeProperty'intheon-linedocumentation)propertyissettofalse

Whenacellenterseditmode,bydefaultthecursorispositionedattheendoftheexistingtextinthecell.YoucanchangeittoselecttheexistingtextinthecellbysettingtheEditModeReplace('EditModeReplaceProperty'intheon-linedocumentation)property.

Ifyouprefer,youcanspecifythatacellisalwaysineditmodewhenitbecomestheactivecellusingtheEditModePermanent('EditModePermanentProperty'intheon-linedocumentation)property.

Whenacellenterseditmode,theEditModeOn('EditModeOnEvent'intheon-linedocumentation)eventoccurs;whenacellleaveseditmode,theEditModeOff('EditModeOffEvent'intheon-linedocumentation)eventoccurs.

YoucansetthepositionofthecursorintheeditcontrolwhenitreceivesthefocusbyusingtheSuperEditBase.EditModeCursorPositionproperty.

YoucanstartandstopeditmodebyusingtheStartCellEditing('StartCellEditingMethod'intheon-linedocumentation)andStopCellEditing('StopCellEditingMethod'intheon-linedocumentation)methods.

YoucankeepthecellalignmentwheneditingwiththeAllowEditorVerticalAlign('AllowEditorVerticalAlignProperty'intheon-linedocumentation)property.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. InthePropertieswindow,selecttheEditModePermanentorEditModeReplaceproperties.

UsingtheSpreadDesigner

1. SelecttheSettingsmenu.2. SelecttheEditoption(SpreadSettingssection).3. ChecktheCellsAlwaysinEditModeoptionforEditModePermanentorEditingReplacesExistingText

forEditModeReplace.4. UsetheFilemenu,thenApplyandExittosavethechanges.

Locking a Cell

Youcanlockacellorrangeofcellsandmakeitunavailableforeditingbytheenduser.Youcanmaketheappearanceoflockedcellsdifferentsothatthelockedcellsarenoticeablebytheuser.

YoucanlockcellsusingtheLocked('LockedProperty'intheon-linedocumentation)propertyintheCell('CellClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),Row('RowClass'intheon-linedocumentation),orAlternatingRow('AlternatingRowClass'intheon-linedocumentation)objects.YoucanalsosettheLocked('LockedProperty'intheon-linedocumentation)propertyfortheStyleInfo('StyleInfoClass'intheon-linedocumentation)objectandapplythatstyletothecellsyouwantlocked.YoualsoneedtosettheProtect('ProtectProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)objecttolockthecells.TheLockedpropertymarksthecellstobelocked,andtheProtectpropertysetswhethertolockthosecells.Forcellsmarkedaslockedtobelockedfromuserinput,theProtect('ProtectProperty'intheon-linedocumentation)propertyofthesheetmustbesettoTrue,whichisitsdefaultvalue.IfitissettoFalse,theusercanstillinteractwiththecells.

Anotherwaytolockcellsistomakethemtextcells(usingtheTextCellType('TextCellTypeClass'intheon-linedocumentation))andsettheReadOnlyproperty.Thismakesthecellsnon-editable.

Youcanalsospecifyadifferentcolor(forbackgroundorfortext)orfontinlockedcellsusingtheLockBackColor('LockBackColorProperty'intheon-linedocumentation),LockForeColor('LockForeColorProperty'intheon-linedocumentation),andLockFont('LockFontProperty'intheon-linedocumentation)properties

Spread Windows Forms Developer’s Guide 392

Copyright © GrapeCity, inc. All rights reserved.

Page 394: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

oftheSheetView('SheetViewClass'intheon-linedocumentation),Appearance('AppearanceClass'intheon-linedocumentation),Cell('CellClass'intheon-linedocumentation),Column('ColumnClass'intheon-linedocumentation),Row('RowClass'intheon-linedocumentation),NamedStyle('NamedStyleClass'intheon-linedocumentation),orStyleInfo('StyleInfoClass'intheon-linedocumentation)objects.

Lockingacelldoesnotlockanyshapes(floatingobjects)overthatcell.Aprotectedsheetonlymeansthatallthecellsinthatsheetmarkedaslockedarelocked;itdoesnotapplytoshapesoverthatsheet.Forlockingshapes,refertoCustomizingDrawing.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. InthePropertieswindowontherightsideoftheSheetViewCollectionEditor,selecttheCellspropertyfor

thesheet.5. ClickthebuttontodisplaytheCell,Column,andRowEditor.6. Intheeditor,selectthecellstomarkaslocked.7. SelecttheLockedpropertyandsetthevaluetoTrue.8. Ifyouwanttoapplythischange,clickApply.9. ClickOKtoclosetheCell,Column,andRoweditor.10. InthePropertieswindowontherightsideoftheSheetViewCollectionEditor,intheBehaviorgroup,

selecttheProtectpropertyandsetittoTrueifyouwantthecellstobelockedfromuserinput.11. ClickOKtoclosetheSheetViewCollectionEditor.

UsingCode

1. SettheLocked('LockedProperty'intheon-linedocumentation)propertyfortheCell('CellClass'intheon-linedocumentation)object(orRow('RowClass'intheon-linedocumentation)orColumn('ColumnClass'intheon-linedocumentation)objectforallthecellsinthatroworcolumn)tomarksomecellsaslocked.

2. SettheProtect('ProtectProperty'intheon-linedocumentation)propertyforthesheet(SheetView('SheetViewClass'intheon-linedocumentation)object)toTrueifyouwantthecellsthataremarkedaslockedinthatsheettobelockedfromuserinput.

Example

MakingsurethattheProtect('ProtectProperty'intheon-linedocumentation)propertyistrueforthesheet,youcanlockspecifiedcolumnsofcellsandthenunlocksomeofthecellsinonerow,asshowninthefollowingexample.

C#fpSpread1.ActiveSheet.Protect = true;fpSpread1.ActiveSheet.LockBackColor = Color.LightCyan;fpSpread1.ActiveSheet.LockForeColor = Color.Green;FarPoint.Win.Spread.Column columnobj;columnobj = fpSpread1.ActiveSheet.Columns[0, 3];columnobj.Locked = true;FarPoint.Win.Spread.Cell cellobj;cellobj = fpSpread1.ActiveSheet.Cells[1,1,1,2];cellobj.Locked = false;fpSpread1.ActiveSheet.Cells[1,0,1,4].Text = "First Five";

Spread Windows Forms Developer’s Guide 393

Copyright © GrapeCity, inc. All rights reserved.

Page 395: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBFpSpread1.ActiveSheet.Protect = TrueFpSpread1.ActiveSheet.LockBackColor = Color.LightCyanFpSpread1.ActiveSheet.LockForeColor = Color.GreenDim columnobj As FarPoint.Win.Spread.Columncolumnobj = fpSpread1.ActiveSheet.Columns(0, 3)columnobj.Locked = TrueDim cellobj As FarPoint.Win.Spread.Cellcellobj = fpSpread1.ActiveSheet.Cells(1,1,1,2)cellobj.Locked = FalseFpSpread1.ActiveSheet.Cells(1,0,1,4).Text = "First Five"

UsingaShortcut

1. SettheLocked('LockedProperty'intheon-linedocumentation)propertyfortheCellsshortcut(orRowsorColumnsshortcutforallthecellsinthatroworcolumn)tomarksomecellsaslocked.

2. SettheProtect('ProtectProperty'intheon-linedocumentation)propertyfortheSheetsshortcuttoTrueifyouwantthecellsthataremarkedaslockedinthatsheettobelockedfromuserinput.

Example

MakingsurethattheProtectpropertyisTrueforthesheet,youcanlockspecificcolumnsofcellsandthenunlocksomeofthecellsinonerow,asshowninthefollowingexample.

C#fpSpread1.ActiveSheet.Protect = true;fpSpread1.ActiveSheet.LockBackColor = Color.LightCyan;fpSpread1.ActiveSheet.LockForeColor = Color.Green;fpSpread1.ActiveSheet.Columns[0, 3].Locked = true;fpSpread1.ActiveSheet.Cells[1,1,1,2].Locked = false;

VBFpSpread1.ActiveSheet.Protect = TrueFpSpread1.ActiveSheet.LockBackColor = Color.LightCyanFpSpread1.ActiveSheet.LockForeColor = Color.GreenFpSpread1.ActiveSheet.Columns(0, 3).Locked = TrueFpSpread1.ActiveSheet.Cells(1,1,1,2).Locked = False

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttolockthecellseitherbydraggingoverarangeofcellsorselectingroworcolumnheaders(forentirerowsorcolumns).(AnotherwayofdoingthisistoselecttheCellsproperty,clickonthebuttontocalluptheCell,Column,andRoweditor,andselectthecellsinthateditor.)

2. Inthepropertieslist(intheMiscgroup),selecttheLockedpropertyandchooseTrue.3. Clickthesheetnametabforthesheetthatcontainsthecells.Fromthepropertieslist(intheBehaviorcategory),

selecttheProtectpropertybuttontodisplaytheSheetViewCollectionEditor.4. InthePropertieswindowintheSheetViewCollectionEditor,intheBehaviorgroup,selecttheProtect

propertyandsetittoTrueifyouwantthecellstobelockedfromuserinput.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Spread Windows Forms Developer’s Guide 394

Copyright © GrapeCity, inc. All rights reserved.

Page 396: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Allowing the Display of Buttons in a Cell

Youcanalloworrestrictthedisplayofbuttonsincellsthatarethespecificgraphicalcelltypesthatallowbuttons.UsetheFpSpreadButtonDrawMode('ButtonDrawModeProperty'intheon-linedocumentation)propertytosetthelimitsonwherebuttonscanbedisplayed.Theserefertoprimarybuttons,suchasthosefoundinthesecelltypes:

buttoncells(ButtonCellType('ButtonCellTypeClass'intheon-linedocumentation))checkboxcells(CheckBoxCellType('CheckBoxCellTypeClass'intheon-linedocumentation))hyperlinkcells,(HyperLinkCellType('HyperLinkCellTypeClass'intheon-linedocumentation))multiple-optionbuttoncells(MultiOptionCellType('MultiOptionCellTypeClass'intheon-linedocumentation))

Secondarybuttonsrefertothosebuttonsinthecellthatarepartofthecontrolthatallowyoutochangevaluesinthecell,suchasthespinbuttonsorthedrop-downarrowinacombobox.

Formoredetailsonpossiblesettings,refertotheButtonDrawModes('ButtonDrawModesEnumeration'intheon-linedocumentation)enumeration.

Fordetailsonsettingthedisplayofprimaryandsecondarybuttonsaspartofacell’sappearance,seetheAppearance('AppearanceClass'intheon-linedocumentation)classDrawPrimaryButton('DrawPrimaryButtonProperty'intheon-linedocumentation)propertyandDrawSecondaryButton('DrawSecondaryButtonProperty'intheon-linedocumentation)property.

YoucanalsomakeuseoftheFpSpreadButtonClicked('ButtonClickedEvent'intheon-linedocumentation)event.

Formoreinformationaboutcelltypesthatallowbuttonstobedrawninacell,refertoWorkingwithGraphicalCellTypes.Formoreinformationaboutcelltypesthatcandisplayspinbuttons,seeDisplayingSpinButtons.

Customizing the Focus Indicator for a Cell

Thefocusrectangleindicatestotheendusertheselectedandactivecell.Bydefault,whenacellisselectedthecellhasasolidfocusrectangleasshowninthefigurebelow.Ifanentirecolumn(orrow)isselected,thecolumn(orrow)ishighlighted,alsoasshown.Thecolumnandrowheaderoftheactivecellalsohaveadifferentbackgroundcolor.

Focusindicatorforselectedindividualcell Focusindicatorforselectedcolumn

YoucancustomizethefocusindicatorfortheactivecellbyusingtheFocusRenderer('FocusRendererProperty'intheon-linedocumentation)propertyoftheSpreadcomponent(whichusestheIFocusIndicatorRenderer('IFocusIndicatorRendererInterface'intheon-linedocumentation)interface).Foranimatedindicators,youneedtheIAnimatedFocusIndicatorRenderer('IAnimatedFocusIndicatorRendererInterface'intheon-linedocumentation)interface.Youcanalsochangetheselectedbackgroundcoloroftheactivecellheaders.

Thistablesummarizedthetypesoffocusindicatorsandtheclassesthatcorrespondtothem.

Type ClassDefault DefaultFocusIndicatorRenderer('DefaultFocusIndicatorRendererClass'intheon-line

documentation)

Spread Windows Forms Developer’s Guide 395

Copyright © GrapeCity, inc. All rights reserved.

Page 397: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Animated AnimatedDefaultFocusIndicatorRenderer('AnimatedDefaultFocusIndicatorRendererClass'intheon-linedocumentation)

CustomLine

CustomFocusIndicatorRenderer('CustomFocusIndicatorRendererClass'intheon-linedocumentation)

Editing EditingFocusIndicatorRenderer('EditingFocusIndicatorRendererClass'intheon-linedocumentation)

Enhanced EnhancedFocusIndicatorRenderer('EnhancedFocusIndicatorRendererClass'intheon-linedocumentation)

Image ImageFocusIndicatorRenderer('ImageFocusIndicatorRendererClass'intheon-linedocumentation)

MarqueeLine

MarqueeFocusIndicatorRenderer('MarqueeFocusIndicatorRendererClass'intheon-linedocumentation)

SolidLine

SolidFocusIndicatorRenderer('SolidFocusIndicatorRendererClass'intheon-linedocumentation)

Flat FlatFocusIndicatorRenderer('FlatFocusIndicatorRendererClass'intheon-linedocumentation)

TheDefaultFocusIndicatorRenderer('DefaultFocusIndicatorRendererClass'intheon-linedocumentation)isthebaseclassfortheothers.TheImageFocusIndicatorRenderer('ImageFocusIndicatorRendererClass'intheon-linedocumentation)allowsyoutouseanimageasthefocusindicator.TheSolidFocusIndicatorRenderer('SolidFocusIndicatorRendererClass'intheon-linedocumentation)allowsyoutocustomizeasolidborderaroundtheselectedcellasafocusindicator.

IntheSpreadDesigner,youcancustomizethefocusindicatorwiththeFocusIndicatorEditor.FormoreinformationaboutusingtheSpreadDesigner,refertotheFocusIndicatorEditor(on-linedocumentation)topicintheSpreadDesignerGuide.

UsingCode

UsetheIFocusIndicatorRenderer('IFocusIndicatorRendererInterface'intheon-linedocumentation)interfacetocreatecustomindicatorsfortheactivecell.

Example

Thisexamplecreatesacustomfocusindicatorfortheactivecell.

C#FarPoint.Win.Spread.SolidFocusIndicatorRenderer sfir =new FarPoint.Win.Spread.SolidFocusIndicatorRenderer(Color.Blue, 2);fpSpread1.FocusRenderer = sfir;// Create a custom indicator.public class MyIndicator : FarPoint.Win.Spread.IFocusIndicatorRenderer{public void Paint(System.Drawing.Graphics g, int x, int y, int width, int height, bool left, bool top, bool right, bool bottom){SolidBrush r = new SolidBrush(System.Drawing.Color.Red);SolidBrush b = new SolidBrush(System.Drawing.Color.Blue);SolidBrush gr = new SolidBrush(System.Drawing.Color.DarkGreen);g.FillRectangle(r, x, y, 1, height);g.FillRectangle(gr, x, y, width, 1);g.FillRectangle(r, x + width - 1, y, 1, height);g.FillRectangle(b, x, y + height - 1, width, 1);

Spread Windows Forms Developer’s Guide 396

Copyright © GrapeCity, inc. All rights reserved.

Page 398: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

}}

fpSpread1.FocusRenderer = new MyIndicator();

VBDim sfir As New FarPoint.Win.Spread.SolidFocusIndicatorRenderer(Color.Blue, 2)FpSpread1.FocusRenderer = sfir' Create a custom indicatorPublic Class MyIndicatorImplements FarPoint.Win.Spread.IFocusIndicatorRendererPublic Sub Paint(ByVal g As System.Drawing.Graphics, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal left As Boolean, ByVal top As Boolean, ByVal right As Boolean, ByVal bottom As Boolean) Implements FarPoint.Win.Spread.IFocusIndicatorRenderer.PaintDim r As New SolidBrush(Color.Red)Dim b As New SolidBrush(Color.Blue)Dim gr As New SolidBrush(Color.DarkGreen)g.FillRectangle(r, x, y, 1, height)g.FillRectangle(gr, x, y, width, 1)g.FillRectangle(r, x + width - 1, y, 1, height)g.FillRectangle(b, x, y + height - 1, width, 1)End SubEnd Class

FpSpread1.FocusRenderer = New MyIndicator()

UsingtheSpreadDesigner

1. SelecttheFormatmenuoption.2. ChoosetheFocusIndicatorEditormenu.3. MakechangestothedialogandselectOK.

UsingCode

UsetheSelectedBackgroundColor('SelectedBackgroundColorProperty'intheon-linedocumentation)propertyoftheEnhancedColumnHeaderRenderer(orrow)tosettheheaderbackcoloroftheactivecell.

Example

Thisexamplechangestheheaderbackgroundcolorfortheactivecell.

C#FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer testing = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer();testing.SelectedBackgroundColor = Color.MediumTurquoise;FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer testing1 = new FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderer();testing1.SelectedBackgroundColor = Color.MediumTurquoise;fpSpread1.Sheets[0].ColumnHeader.DefaultStyle.Renderer = testing;fpSpread1.Sheets[0].RowHeader.DefaultStyle.Renderer = testing1;

VB

Spread Windows Forms Developer’s Guide 397

Copyright © GrapeCity, inc. All rights reserved.

Page 399: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim testing as New FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderertesting.SelectedBackgroundColor = Color.MediumTurquoiseDim testing1 as New FarPoint.Win.Spread.CellType.EnhancedRowHeaderRenderertesting1.SelectedBackgroundColor = Color.MediumTurquoiseFpSpread1.Sheets(0).ColumnHeader.DefaultStyle.Renderer = testingFpSpread1.Sheets(0).RowHeader.DefaultStyle.Renderer = testing1

Using Drag Operations to Fill Cells

Youcanfillcellswithanyofseveraloperationsthatinvolvedraggingoversomecells.Thedragoperations,whichcancopyandmovethecontentaswellastheformatting,include:

FillingCellswithDragandDropFillingCellswithDragandFillFillingCellswithDragandMove

Filling Cells with Drag and Drop

Youcanallowtheendusertodrag-and-dropdatafromonerangeofcellstoanother.YoucanspecifywhethertheusercanselectacellorrangeofcellsanddraganddropthemtoanewlocationinthesamespreadsheetoranotherspreadsheetintheSpreadcomponent.Whenthemousebuttonisreleasedandtherangeofcellsisdropped,theDragDropBlock('DragDropBlockEvent'intheon-linedocumentation)eventoccurs.

Formoreinformation,refertotheAllowDragDrop('AllowDragDropProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Formoreinformationoneventarguments,refertoDragDropBlock('DragDropBlockEvent'intheon-linedocumentation)event,DragDropBlockEventArgs('DragDropBlockEventArgsClass'intheon-linedocumentation),andDragDropBlockCompletedEventArgs('DragDropBlockCompletedEventArgsClass'intheon-linedocumentation).

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. Select(intheBehaviorcategory)theAllowDragDropproperty.3. SelectTruefromthedrop-downlisttoallowdrag-and-dropfeature,orselectFalsetoprohibitit.

UsingaShortcut

Allowthedrag-and-dropfeaturebysettingtheAllowDragDrop('AllowDragDropProperty'intheon-linedocumentation)propertyfortheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Example

Thisexamplecodesetsthecomponenttoallowthedrag-dropfeature.

C#fpSpread1.AllowDragDrop = true;

VBFpSpread1.AllowDragDrop = True

UsingCode

Spread Windows Forms Developer’s Guide 398

Copyright © GrapeCity, inc. All rights reserved.

Page 400: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Allowthedrag-and-dropfeaturebysettingtheAllowDragDrop('AllowDragDropProperty'intheon-linedocumentation)propertyoftheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Example

Thisexamplecodesetsthechildsheettoallowthedrag-dropfeature.

C#FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();sv.AllowDragDrop = true;

VBDim sv As FarPoint.Win.Spread.SpreadView = FpSpread1.GetRootWorkbooksv.AllowDragDrop = True

UsingtheSpreadDesigner

1. FromtheSettingsmenu,selectGeneral(SpreadSettingssection).2. IntheGeneraltab,selectthesettingsforthedraganddroppropertiesasneeded.3. ClickOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

or

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent(intheBehaviorcategory),selecttheAllowDragDropproperty.3. Clickthedrop-downarrowtodisplaythechoicesandselectTrue.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Filling Cells with Drag and Fill

Youcanalsoallowtheendusertodrag-and-filldatafromonecellorarangeofcellstoanothercellorrangeofcells.Withacellorrangeofcellsselected,youcanfillothercellseitherinarow(orrowsifmorethanonecolumnisselected)oracolumn(orcolumnsifmorethanonerowisselected).

Youcanalsospecifywhetherthefillisacopyoraseries.Thecopyoptioncopiesthedatatotheselectedrange.Theseriesoptionincrementsordecrementsthevaluesbasedontheseries.Dragdownortotherighttoincrementthevalues.Draguportothelefttodecrementthevalues.UsetheRangeDragFillMode('RangeDragFillModeProperty'intheon-linedocumentation)propertytospecifythetypeoffill.

Spreadusesthedatamodeltodeterminewhetherthedatacanbeincrementedwhenusingtheseriesfill.Thedisplayedvalueshaveahigherprioritywiththebuilt-incelltypeswhenusingtheseriesfill.

Theexampleshownhereusesthecopyoptiontofillseveralcellsinacolumnfromtheoriginallyselectedcell.

Spread Windows Forms Developer’s Guide 399

Copyright © GrapeCity, inc. All rights reserved.

Page 401: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexampleusestheseriesfilloption.

YoucancustomizethedirectionofthefillusingtheFillDirection('FillDirectionEnumeration'intheon-linedocumentation)enumeration.

Formoreinformation,refertotheAllowDragFill('AllowDragFillProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Formoreinformationoneventarguments,refertoDragFillBlock('DragFillBlockEvent'intheon-linedocumentation)event,DragFillBlockEventArgs('DragFillBlockEventArgsClass'intheon-linedocumentation),andDragFillBlockCompletedEventArgs('DragFillBlockCompletedEventArgsClass'intheon-linedocumentation).

UsingthePropertiesWindow

Spread Windows Forms Developer’s Guide 400

Copyright © GrapeCity, inc. All rights reserved.

Page 402: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. Select(intheBehaviorcategory)theAllowDragFillproperty.3. SelectTruefromthedrop-downlisttoallowdrag-and-fillfeature,orselectFalsetoprohibitit.

UsingaShortcut

Allowthedrag-and-fillfeaturebysettingtheAllowDragFill('AllowDragFillProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Example

Thisexamplecodesetsthecomponenttoallowthedrag-fillfeature.

C#fpSpread1.AllowDragFill = true;

VBFpSpread1.AllowDragFill = True

UsingCode

Allowthedrag-and-dropfeaturebysettingtheAllowDragFill('AllowDragFillProperty'intheon-linedocumentation)propertyintheFpSpread('FpSpreadClass'intheon-linedocumentation)component.

Example

Thisexamplecodesetsthechildsheettoallowthedrag-fillfeature.

C#FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();sv.AllowDragFill = true;

VBDim sv As FarPoint.Win.Spread.SpreadView = FpSpread1.GetRootWorkbooksv.AllowDragFill = True

UsingtheSpreadDesigner

1. FromtheSettingsmenu,selectGeneral(SpreadSettingssection).2. IntheGeneraltab,selectthesettingsforthedragandfillpropertiesasneeded.3. ClickOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

or

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent(intheBehaviorcategory),selecttheAllowDragFillproperty.3. Clickthedrop-downarrowtodisplaythechoicesandselectTrue.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Filling Cells with Drag and Move

Spread Windows Forms Developer’s Guide 401

Copyright © GrapeCity, inc. All rights reserved.

Page 403: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcandragandmoveentirerowsorcolumnsofcellswithinagivensheet.

Formoreinformation,refertotheAllowingtheUsertoMoveRowsorColumns.

Formoreinformationoneventarguments,refertoDragMoveEventArgs('DragMoveEventArgsClass'intheon-linedocumentation)andDragMoveCompletedEventArgs('DragMoveCompletedEventArgsClass'intheon-linedocumentation).

Using Visible Indicators in the Cell

Youcancustomizetheuserinteractionwithindividualcells(orarangeofcells).Tocustomizethisaspectofuserinteraction,youcanperformthefollowingtasks:

DisplayingTextTipsinaCellAddingaNotetoaCellPreventingaCellfromReceivingFocusReturningInformationforaClickedCellDisplayingErrorIconsinCellsorRows

Aswithmostspreadsheets,Spreaddoesnotallowin-celleditingofthecellsintherowandcolumnheaders.

Formoreinformationaboutcellsandsheetinteractions,refertothefollowingtopics:

Description RefertoForinformationonaddingaformulatoacell PlacingaFormulainCells

Forinformationonallowingausertoenteraformulainacell AllowingtheUsertoEnterFormulas

Forinformationonhowtochangetheappearanceofcells CustomizingtheAppearanceofaCell

Forinformationonsettingthecelltype CustomizingInteractionwithCellTypes

Forinformationaboutcustomizingfocusindicators CustomizingtheFocusIndicatorforaCell

Forinformationoncustomizingtheinteractionatasheetlevel CustomizingInteractionwithaSheet

Displaying Text Tips in a Cell

Forcellsthataretoosmalltodisplayallthetextinthecell,youcanallowtheendusertoseethecontentsinatexttip.Youcansetthepolicyandlocationfortexttipsforacellorrangeofcells.Texttipscanbedisplayedfordatacellsorheadercells.Whenthepointerisoversuchacell,thetexttipdisplays.

Todisplayatexttipoveracomboboxcell,youwouldneedtoturnchangethedefaultbehavior.Bydefault,thecomboboxcellcapturesthemousewhenmovingoverthecell,soitcangointoeditmodeonthefirstclickanddrop-downthelist.Youcaneitherturnoffthisbehavior,bysettingtheEditable('EditableProperty'intheon-linedocumentation)propertytoTrueoryoucancreateacustomcelltypeandoverridetheIsReservedLocationmethodtoreturnnothingforthepartsofthecellthatyouwantthetexttiptoshowoverandreturnaninstanceofthe

Spread Windows Forms Developer’s Guide 402

Copyright © GrapeCity, inc. All rights reserved.

Page 404: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

celltypeinthepartsofthecellforwhichyouwanttheclicktoopenthelist.

FormoreinformationrefertotheTextTipAppearance('TextTipAppearanceProperty'intheon-linedocumentation)property,TextTipDelay('TextTipDelayProperty'intheon-linedocumentation)property,andTextTipPolicy('TextTipPolicyProperty'intheon-linedocumentation)property.

ReferalsototheTextTipFetchEventArgs('TextTipFetchEventArgsClass'intheon-linedocumentation)classandtheTextTipFetch('TextTipFetchEvent'intheon-linedocumentation)eventandOnTextTipFetch('OnTextTipFetchMethod'intheon-linedocumentation)method.

Forinformationonscrollbartips,refertothesectiononsettingscrollbartipsinCustomizingtheScrollBarsoftheComponent.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. Select(intheBehaviorgroup)theTextTipPolicyproperty.3. Clickthedrop-downarrowtodisplaythechoicesandchooseavalue.4. Ifyouwanttosetthedelay,selecttheTextTipDelaypropertyandtypeinavalue.

UsingCode

1. SettheTextTipPolicy('TextTipPolicyProperty'intheon-linedocumentation)propertyfortheSpreadcomponent.

2. Ifyouwanttosetadelay,settheTextTipDelay('TextTipDelayProperty'intheon-linedocumentation)property.

Example

Thisexamplecreatesanewcontrol,setswhethertodisplaytexttips,thelocationofthetips,andhowlongtowaitbeforethetexttipisshown.

C#FarPoint.Win.Spread.FpSpread fpSpread1 = new FarPoint.Win.Spread.FpSpread();FarPoint.Win.Spread.SheetView shv = new FarPoint.Win.Spread.SheetView();fpSpread1.Location = new Point(10, 10);fpSpread1.Height = 200;fpSpread1.Width = 400;Controls.Add(fpSpread1);fpSpread1.Sheets.Add(shv);fpSpread1.ActiveSheet.SetValue(0, 0, "TestTextTip");fpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Floating;fpSpread1.TextTipDelay = 1000;MessageBox.Show("Place the pointer over the text to see the text tip.", "", MessageBoxButtons.OK);

VBDim FpSpread1 As New FarPoint.Win.Spread.FpSpread()Dim shv As New FarPoint.Win.Spread.SheetView()FpSpread1.Location = New Point(10, 10)FpSpread1.Height = 200FpSpread1.Width = 400Controls.Add(fpSpread1)FpSpread1.Sheets.Add(shv)FpSpread1.ActiveSheet.SetValue(0, 0, "TestTextTip")

Spread Windows Forms Developer’s Guide 403

Copyright © GrapeCity, inc. All rights reserved.

Page 405: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.FloatingFpSpread1.TextTipDelay = 1000MessageBox.Show("Place the pointer over the text to see the text tip.", "", MessageBoxButtons.OK)

UsingtheSpreadDesigner

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylist,intheBehaviorcategory,selecttheTextTipPolicyproperty.3. Clickthedrop-downarrowtodisplaythechoicesandchooseavalue.4. Ifyouwanttosetthedelay,selecttheTextTipDelaypropertyandtypeinavalue.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Adding a Note to a Cell

Youcanaddanotetoacellorrangeofcells.Thenotemaycontaintextsuchasacomment,aquestion,ordocumentationdescribingtheoriginofthecell'svalue.Eachcellwithanoteattacheddisplaysacellnoteindicator(bydefaultasmallredsquare)intheupperrightcornerofthecell.Whenthepointerisoveracellindicatorofacellthathasanote,thenotetextdisplaysinaboxnexttothecell.Alternatively,youcansetthecellnotestoalwaysbedisplayed,notjustwhenthepointermovesovertheindicator.Forcellnotesthataresetaspopupnotes,theyaredisplayedinasimilarmannerastexttips.Whenthepointerisoverthecellnoteindicator,thecellnotetextappears.Thisisillustratedinthefollowingfigure.

Theredsquareintheupperrightcornerofthecellindicatesthatanoteisavailableforthatcell.Anexampleisshowninthefollowingfigure.YoucanusetheCellNoteIndicatorVisible('CellNoteIndicatorVisibleProperty'intheon-linedocumentation)propertytohidethecellnoteindicatorwhenthepointerisoverthecellnoteindicator.YoucanusetheNoteIndicatorPosition('NoteIndicatorPositionProperty'intheon-linedocumentation)propertyforthecelltosetthelocationofthenote.

CustomizingtheCellNoteBehavior

Youcanallownotestoremaindisplayed,asiftheywerestickynotes.Inthiscasetheyappearinarectanglenexttothecellwithanexpandablelinethatattachesthenotetothecell,allowingthenotetobemovedbytheuser.Anexampleofastickynotethathasbeenselectedisshowninthefollowingfigure.ThecellNoteStyle('NoteStyleProperty'intheon-linedocumentation)propertymustusetheNoteStyle('NoteStyleEnumeration'intheon-linedocumentation)enumerationtoallowthis.Thestickynoteinthiscaseisashapethatcanbemoved.

Spread Windows Forms Developer’s Guide 404

Copyright © GrapeCity, inc. All rights reserved.

Page 406: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tomovethenote,presstheleftmousebuttonwhenthepointerisonthenotetoselectit,dragittothedestination,andreleasethemousebuttontoplaceit.Thelinefromthecellnoteindicatortothestickynotestretchestoaccommodateanyplacementofthenote.

Youcanallowtheusertoeditcellnotesifthenotesarealwaysshown.Toallowtheusertoeditit,settheAllowNoteEdit('AllowNoteEditProperty'intheon-linedocumentation)propertyforthesheet,whichsetsallstickynotesonthatsheettobeeditablebytheuser.

Thecellnotecancontainanextrabitofhumanreadableinformationfortheenduser;youcanalsoallowtheusertoattachtheirowninformationincellnotes.Theinformationcanbewhateverisusefultotheenduser.Forexample,theendusermightusethecellnotetoindicatetheoriginalsourceofthecellvalue(cellnote="ValueasobtainedfromanarticleintheJulyissueofourcorporatemagazine").

Youcanfurthercustomizetheuseofnotes:

automaticallysizecellnotesbasedoncontentscustomizelocationsofcellnotesmakestickynotessotheystaywhereplacedcustomizethenoteindicator(seesectionbelow)printcellnotes

Thereareadditionalclassesthatcanbeusedtocustomizetheappearanceofthecellnote.UsetheStickyNoteStyleInfoclassfornotes.

UnderstandingLimitations

Therearesomelimitationstotheuseanddisplayofcellnotes:

ThenotedoesnotdisplaywhentheNoteStyle('NoteStyleProperty'intheon-linedocumentation)propertyofthecellobjectissettohidden.ThenotedoesnotdisplayincertaincelltypeswhentheIsReservedLocationmethodforthatcelltypeissettotrue.Thismayoccurinacheckboxcell,orinacomboboxcellthatisnoteditable,orwhenapointerisoveralinkinahyperlinkcell.Thecellnoteindicatordoesnotappearwhenthecellisineditmode.Thecellnoteofananchorcellisdisplayedinacellspan,butthecellnotesofanyothercellinthespanarenotdisplayed.Usecautioninchoosingaredcolorasthebackgroundforacellthatcouldcontainaredcellnote.Thecellnoteindicatorcouldbeinvisibleagainstaredbackground.

CustomizingtheCellNoteIndicator

Youcanchangethesizeandthecolorofthecellnoteindicator.Thedefaultsizeofthecellnoteindicatorisa3x3squarebutyoucanmodifythewidthortheheightofthenoteindicatortoanypositiveintegervalue.Thedefaultcolorofthecellnoteindicatorisredbutyoucanassignanycolorvaluetoit.Thefollowingfigureshowstheindicatorusingdefaultvaluesandacustomindicatorusingcustomvalues.ThecustomvaluesaresetusingtheNoteIndicatorColor('NoteIndicatorColorProperty'intheon-linedocumentation)andNoteIndicatorSize('NoteIndicatorSizeProperty'intheon-linedocumentation)properties.

Spread Windows Forms Developer’s Guide 405

Copyright © GrapeCity, inc. All rights reserved.

Page 407: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformationonnotes,refertotheNote('NoteProperty'intheon-linedocumentation)propertyintheCell('CellClass'intheon-linedocumentation)class.

Forinformationaboutprintingcellnotes,refertoPrintingaSheetwithCellNotes.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetinwhichthecellsappear.5. Inthepropertieslist,selecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.

6. Selectthecellsforwhichyouwanttosetthenote.7. Inthepropertieslist,selecttheNotepropertyandtypethenotetext.8. ClickOKtoclosetheCell,Column,andRowEditor.9. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

1. SettheNotepropertyforthecellsorrangeofcellsinthesheetoftheSpreadcomponent.2. Setthepropertiesforcustomizingthenote,includingthenoteindicatorandnotepositionanddisplay.

Example

Thisexamplecodesetsaneditablecellnoteforarangeofcellsandsetsthecolorofthecellnoteindicatortogreen(fromthedefaultred).

C#fpSpread1.Sheets[0].AllowNoteEdit = true;fpSpread1.Sheets[0].Cells[1, 1, 3, 3].Note = "test";fpSpread1.Sheets[0].Cells[1, 1, 3, 3].NoteIndicatorColor = Color.Green;fpSpread1.Sheets[0].Cells[1, 1, 3, 3].NoteStyle = FarPoint.Win.Spread.NoteStyle.StickyNote;

VBFpSpread1.Sheets(0).AllowNoteEdit = TrueFpSpread1.Sheets(0).Cells(1, 1, 3, 3).Note = "test"FpSpread1.Sheets(0).Cells(1, 1, 3, 3).NoteIndicatorColor = Color.GreenFpSpread1.Sheets(0).Cells(1, 1, 3, 3).NoteStyle = FarPoint.Win.Spread.NoteStyle.StickyNote

Spread Windows Forms Developer’s Guide 406

Copyright © GrapeCity, inc. All rights reserved.

Page 408: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecodedefinesarangeofcellsandthensetsthenoteforthatrange.

C#FarPoint.Win.Spread.Cell range1;range1 = fpSpread1.ActiveSheet.Cells[1, 1, 3, 3];range1.Value = "Value Here";range1.Note = "This is the note that describes the value.";

VBDim range1 As FarPoint.Win.Spread.Cellrange1 = FpSpread1.ActiveSheet.Cells(1, 1, 3, 3)range1.Value = "Value Here"range1.Note = "This is the note that describes the value."

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosetthenotestodisplay.2. Inthepropertieslist(intheMiscgroup),selecttheNotepropertyandtypeinthetextofthenote.

(OrselecttheCellspropertyandclickonthebuttontocalluptheCell,Column,andRoweditorandselectthecellsinthateditor.)

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Preventing a Cell from Receiving Focus

Youcanpreventcellsfromreceivingfocus,andthusnotallowtheendusertoclickinthatcell.YoucontrolfocussettingsthataredefinedbykeyboardinputandmouseoperationbysettingtheCanFocus('CanFocusProperty'intheon-linedocumentation)propertyinthecell.Youcanalsosetthispropertyinthecolumnsandrowsshortcutobjectsandyoucansetitinastylethatisappliedtoagroupofcells.

Returning Information for a Clicked Cell

YoucangetrowandcolumnindexinformationforcellsthatareclickedbyaccessingtheCellClick('CellClickEvent'intheon-linedocumentation)eventparametereintheCellClickEventArgs('CellClickEventArgsClass'intheon-linedocumentation)class.Youcangetx-andy-coordinatesaswellfromthisparameter.YoucanimplementaMouseDowneventandfromthex-andy-coordinatesyoucanobtainrowandcolumnindexinformationoftheclickedcell.WiththeGetCellFromPixel('GetCellFromPixelMethod'intheon-linedocumentation)methodintheFpSpread('FpSpreadClass'intheon-linedocumentation)class,youcangettargetcellinformationintheCellRange('CellRangeClass'intheon-linedocumentation)classformat.Youcanobtainrowandcolumninformationfromrespectivemembers.

Youcanobtaincellinformationsuchaspositionsandsizesthathavebeenspecifiedbyrowandcolumnindexes.WhentheGetCellRectangle('GetCellRectangleMethod'intheon-linedocumentation)methodintheFpSpreadclassiscalled,specifythetargetrowandcolumnindexes.Thecellcoordinateinformationisreturnedinthe.NETframeworkRectangleformat.

Forheaders,youcangetrowandcolumnindexinformationofclickedheadercellsbyaccessingCellClickeventparametereintheCellClickEventArgsclass.Youcandetectwhethertheheadershavebeenclicked.Youcangetx-andy-coordinatesaswellfromthisparameter.YoucanimplementaMouseDowneventandfromthex-andy-coordinatesyoucanobtainrowandcolumnindexinformationoftheclickedheadercell.

Spread Windows Forms Developer’s Guide 407

Copyright © GrapeCity, inc. All rights reserved.

Page 409: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

WiththeGetColumnHeaderCellFromPixel('GetColumnHeaderCellFromPixelMethod'intheon-linedocumentation)methodintheSpreadView('SpreadViewClass'intheon-linedocumentation)class,youcangettargetcellinformationintheCellRangeclassformatforcolumncells.Youcanobtainrowandcolumninformationincolumnheadersfromrespectivemembers.Inthecaseofrowheadercells,calltheGetRowHeaderCellFromPixel('GetRowHeaderCellFromPixelMethod'intheon-linedocumentation)method.

Displaying Error Icons in Cells or Rows

Youcandisplayerroriconsincellsorrows.

UsetheShowCellErrors('ShowCellErrorsProperty'intheon-linedocumentation)orShowRowErrors('ShowRowErrorsProperty'intheon-linedocumentation)propertytospecifywhetheryouwishtodisplayanerroriconoracellnoteindicator.SettheErrorText('ErrorTextProperty'intheon-linedocumentation)propertyfortheCell('CellClass'intheon-linedocumentation)classorRow('RowClass'intheon-linedocumentation)classtospecifythecellorrowtodisplaytheerroriconin.SetthevalueoftheErrorTextpropertyto"CellError"todisplaytheerroriconforacellor"RowError"tospecifytheerroriconforarow.Thefollowingimagedisplaystheerroricon.

YoucandisplayacellnoteindicatorinsteadoftheerroriconbysettingShowCellErrorsorShowRowErrorstofalse.ThetextyouspecifywiththeErrorTextpropertyisthendisplayedinthecellnote.

UsingCode

1. SettheShowCellErrors('ShowCellErrorsProperty'intheon-linedocumentation)orShowRowErrors('ShowRowErrorsProperty'intheon-linedocumentation)property.

2. SettheErrorText('ErrorTextProperty'intheon-linedocumentation)propertyfortheCell('CellClass'intheon-linedocumentation)orRow('RowClass'intheon-linedocumentation)object.

Example

Thisexampledisplaysanerroriconinthelockedcell.

CSfpSpread1.ShowCellErrors = true;fpSpread1.Sheets[0].Cells[1, 1].ErrorText = "CellError";fpSpread1.Sheets[0].Cells[1, 1].Locked = true;

VBFpSpread1.ShowCellErrors = TrueFpSpread1.Sheets(0).Cells(1, 1).ErrorText = "CellError"FpSpread1.Sheets(0).Cells(1, 1).Locked = True

Using Conditional Formatting of Cells

Youcancustomizetheuserinteractionwithindividualcells(orarangeofcells).Youcanuserulesorconditionaloperatorsintheconditionalformat.

Spread Windows Forms Developer’s Guide 408

Copyright © GrapeCity, inc. All rights reserved.

Page 410: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tocustomizethisaspectofuserinteraction,youcanperformthefollowingtasks:

CreatingConditionalFormattingwithRulesSettingupConditionalFormattingofaCell

Creating Conditional Formatting with Rules

Youcansetthevisualappearanceofcellsusingrules.Thefollowingclassesareavailablewhencreatingconditionalformattingwithrules:

AverageConditionalFormattingRuleClass(on-linedocumentation)BetweenValuesConditionalFormattingRuleClass(on-linedocumentation)BlankConditionalFormattingRuleClass(on-linedocumentation)DatabarConditionalFormattingRuleClass(on-linedocumentation)FormulaConditionalFormattingRuleClass(on-linedocumentation)ErrorConditionalFormattingRuleClass(on-linedocumentation)IconSetConditionalFormattingRuleClass(on-linedocumentation)PrePaintConditionalFormattingRuleClass(on-linedocumentation)PrePaintTextConditionalFormattingRuleClass(on-linedocumentation)TextConditionalFormattingRuleClass(on-linedocumentation)ThreeColorScaleConditionalFormattingRuleClass(on-linedocumentation)TimePeriodConditionalFormattingRuleClass(on-linedocumentation)TopRankedValuesConditionalFormattingRuleClass(on-linedocumentation)TwoColorScaleConditionalFormattingRuleClass(on-linedocumentation)UnaryComparisonConditionalFormattingRuleClass(on-linedocumentation)UniqueOrDuplicatedConditionalFormattingRuleClass(on-linedocumentation)

Theaveragerulechecksforvaluesaboveorundertheaverage.Thecellvaluerulecomparesvalues.Thedaterulecomparesdates.Theformularuleallowsyoutouseformulaswhencheckingthecondition.

Thescaleruleusesaslidingcolorscale.Forexampleif1isyellowand50isgreen,then25wouldbelightgreen.

Thespecifictextrulesearchesfortextstrings.Thetop10rulechecksforvaluesinthetoporbottomoftherange.Theuniquerulecheckstoseeifthevalueistheonlyoneofthatvalueintherange(iftheduplicateoptionisfalse).Theduplicaterulechecksforduplicatevalues.

Thedatabarruledisplaysabarinthecellbasedonthecellvalueintherange.Theiconsetruledisplaysiconsbasedonthevalues.

YoucanaddruleswiththeSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodortheConditionalFormatting('ConditionalFormattingClass'intheon-linedocumentation)class.

Thefollowingtopicsprovideadditionalinformationaboutspecificconditionalformattingrules.

ColorScaleRulesDataBarRuleHighlightingRulesIconSetRuleTop,Bottom,orAverageRules

Color Scale Rules

Colorscalesarevisualguidesthathelpyouunderstanddatadistributionandvariation.Atwo-colorscalecomparesarangeofcellsbyusingagradationoftwocolors.Theshadeofthecolorrepresentshigherorlowervalues.Forexample,

Spread Windows Forms Developer’s Guide 409

Copyright © GrapeCity, inc. All rights reserved.

Page 411: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

inagreenandredcolorscale,youcanspecifythathighervaluecellsareclosertoagreencolorandlowervaluecellsareclosertoaredcolor.Youcanspecifythevaluetype,value,andcolorfortheminimumandmaximumproperties.

Athree-colorscalecomparesarangeofcellsbyusingagradationofthreecolors.Theshadeofthecolorrepresentshigher,middle,orlowervalues.Forexample,inagreen,yellow,andredcolorscale,youcanspecifythathighervaluecellshaveagreencolor,middlevaluecellshaveayellowcolor,andlowervaluecellshavearedcolor.Youcanspecifythevaluetype,value,andcolorfortheminimum,middle,andmaximumproperties.

Thefollowingimageusesthethreecolorrule.TheA2cellisagradationofthemiddleandlowcolorvalues.

UsingCode

SetthepropertiesoftheTwoColorScaleConditionalFormattingRule('TwoColorScaleConditionalFormattingRuleClass'intheon-linedocumentation)classortheThreeColorScaleConditionalFormattingRule('ThreeColorScaleConditionalFormattingRuleClass'intheon-linedocumentation)classandthenapplytheformatting.

Example

ThisexamplecodecreatesathreecolorruleandusestheSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodtoapplytherule.

C#private void Form1_Load(object sender, EventArgs e) { fpSpread1.Sheets[0].Cells[0, 0].Value = 3; fpSpread1.Sheets[0].Cells[1, 0].Value = 2; fpSpread1.Sheets[0].Cells[1, 1].Value = 10; fpSpread1.Sheets[0].Cells[0, 2].Value = 1; }

private void button1_Click(object sender, EventArgs e) {FarPoint.Win.Spread.Model.CellRange celRange1 = new FarPoint.Win.Spread.Model.CellRange(0, 0, 3, 3);FarPoint.Win.Spread.ThreeColorScaleConditionalFormattingRule rule = new FarPoint.Win.Spread.ThreeColorScaleConditionalFormattingRule(Color.Aqua, Color.Bisque, Color.BlueViolet);fpSpread1.Sheets[0].SetConditionalFormatting(new FarPoint.Win.Spread.Model.CellRange[] { celRange1 }, rule); }

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets(0).Cells(0, 0).Value = 3 FpSpread1.Sheets(0).Cells(1, 0).Value = 2

Spread Windows Forms Developer’s Guide 410

Copyright © GrapeCity, inc. All rights reserved.

Page 412: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).Cells(1, 1).Value = 10 FpSpread1.Sheets(0).Cells(0, 2).Value = 1 End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim celRange1 As New FarPoint.Win.Spread.Model.CellRange(0, 0, 3, 3) Dim rule As New FarPoint.Win.Spread.ThreeColorScaleConditionalFormattingRule(Color.Aqua, Color.Bisque, Color.BlueViolet) FpSpread1.Sheets(0).SetConditionalFormatting(New FarPoint.Win.Spread.Model.CellRange() {celRange1}, rule) End Sub

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosettheconditionalformat.2. UndertheHomemenu,selecttheConditionalFormattingiconintheStylesection,thenselecttheColorScalesoption,andthenchoosethecolorset.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Data Bar Rule

Thedatabarruleusesabarthatisdisplayedasthebackgroundforeachcell.Thelengthofthebarcorrespondstothesizeofthedatarelativetotheotherdataintheworksheet.Thelongerthebar,thegreaterthevalueinthecell.

Thefollowingimagedisplaysdatabarsinacellrange:

Youcanspecifythevaluetypeandthevaluetocompareintheconditionalformat.

ValueType

Description

Percent Theminimumvalueintherangeofcellsthattheconditionalformattingruleappliestoplusxpercentofthedifferencebetweenthemaximumandminimumvaluesintherangeofcellsthattheconditionalformattingruleappliesto.Forexample,iftheminimumandmaximumvaluesintherangeare1and10respectively,andxis10,thenthevalueis1.9.

HighestValue

Themaximumvalueintherangeofcellsthattheconditionalformattingruleappliesto.

LowestValue

Theminimumvalueintherangeofcellsthattheconditionalformattingruleappliesto.

Formula Theresultoftheformuladeterminestheminimumormaximumvalueofthecellrangethattheruleappliesto.Iftheresultisnotnumeric,itistreatedaszero.

Percentile Theresultofthefunctionpercentileappliedtotherangewithx.

Spread Windows Forms Developer’s Guide 411

Copyright © GrapeCity, inc. All rights reserved.

Page 413: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Automatic Thesmallerorlargerortheminimumormaximumvalueintherangeofcellsthattheconditionalformatappliesto.

Number Number,date,ortimevalueintherangeofcellsthattheconditionalformattingruleappliesto.

Validpercentilesarefrom0(zero)to100.Apercentilecannotbeusediftherangeofcellscontainsmorethan8,191datapoints.Useapercentilewhenyouwanttovisualizeagroupofhighvalues(suchasthetop20thpercentile)inonedatabarandlowvalues(suchasthebottom20thpercentile)inanotherdatabar.Thisisusefulifyouhaveextremevaluesthatmightskewthevisualizationofyourdata.

Validpercentvaluesarefrom0(zero)to100.Percentvaluesshouldnotuseapercentsign.Useapercentagewhenyouwanttovisualizeallvaluesproportionallybecausethedistributionofvaluesisproportional.

Startformulaswithanequalsign(=).Invalidformulasresultinnoformattingapplied.

Theminimumandmaximumtypescanbedifferent.TheMaximum('MaximumProperty'intheon-linedocumentation)propertyshouldnotbesettoaConditionalFormattingValuevaluesuchasConditionalFormattingValueType.MinorConditionalFormattingValueType.AutoMin.Anexceptionwilloccurinthiscase.TheMinimum('MinimumProperty'intheon-linedocumentation)propertyshouldnotbesettoaConditionalFormattingValuevaluesuchasConditionalFormattingValueType.MaxorConditionalFormattingValueType.AutoMax.Anexceptionwilloccurinthiscase.

Youcanalsospecifyborders,colors,andanaxis.

UsingCode

Setthepropertiesofthedatabarruleclassandthenapplytheformatting.

Example

ThisexamplecodecreatesadatabarruleandusestheSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodtoapplytherule.

C#private void Form1_Load(object sender, EventArgs e) { fpSpread1.Sheets[0].Cells[0, 0].Value = 3; fpSpread1.Sheets[0].Cells[1, 0].Value = 2; fpSpread1.Sheets[0].Cells[2, 0].Value = 10; fpSpread1.Sheets[0].Cells[3, 0].Value = 1; }

private void button1_Click(object sender, EventArgs e) { FarPoint.Win.Spread.DatabarConditionalFormattingRule d = new FarPoint.Win.Spread.DatabarConditionalFormattingRule(); d.BorderColor = Color.Red; d.ShowBorder = true; d.Minimum = new FarPoint.Win.Spread.ConditionalFormattingValue(0, FarPoint.Win.Spread.ConditionalFormattingValueType.Number); d.Maximum = new FarPoint.Win.Spread.ConditionalFormattingValue(15, FarPoint.Win.Spread.ConditionalFormattingValueType.Max); fpSpread1.ActiveSheet.SetConditionalFormatting(0, 0, 4, 1, d); }

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

Spread Windows Forms Developer’s Guide 412

Copyright © GrapeCity, inc. All rights reserved.

Page 414: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Handles MyBase.Load FpSpread1.Sheets(0).Cells(0, 0).Value = 3 FpSpread1.Sheets(0).Cells(1, 0).Value = 2 FpSpread1.Sheets(0).Cells(2, 0).Value = 10 FpSpread1.Sheets(0).Cells(3, 0).Value = 1 End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim d As New FarPoint.Win.Spread.DatabarConditionalFormattingRule() d.BorderColor = Color.Red d.ShowBorder = True d.Minimum = New FarPoint.Win.Spread.ConditionalFormattingValue(0, FarPoint.Win.Spread.ConditionalFormattingValueType.Number) d.Maximum = New FarPoint.Win.Spread.ConditionalFormattingValue(15, FarPoint.Win.Spread.ConditionalFormattingValueType.Max) FpSpread1.ActiveSheet.SetConditionalFormatting(0, 0, 4, 1, d) End Sub

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosettheconditionalformat.2. UndertheHomemenu,selecttheConditionalFormattingiconintheStylesection,thenselecttheDataBarsoption,andthenchoosethecolorset.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Highlighting Rules

Youcanusethisruletohighlightdatathatmeetsoneofthefollowingconditions:

isgreaterthanavalueislessthanavalueisbetweenahighandlowvalueisequaltoavaluecontainsaspecificvalueisadatethatoccursinaparticularrangeiseitheruniqueorduplicatedelsewhereintheworksheet

Afteryouchooseoneoftheoptionsabove,enteravalueorformulaagainstwhicheachcelliscompared.Ifthecelldatasatisfiesthatcriteria,thentheformattingisapplied.

Youcanselectapredefinedhighlightstyleorcreateacustomhighlightstyle.Thefollowingrulesarehighlightstylerules:

BetweenValuesConditionalFormattingRule('BetweenValuesConditionalFormattingRuleClass'intheon-linedocumentation)BlankConditionalFormattingRule('BlankConditionalFormattingRuleClass'intheon-linedocumentation)ErrorConditionalFormattingRule('ErrorConditionalFormattingRuleClass'intheon-linedocumentation)FormulaConditionalFormattingRule('FormulaConditionalFormattingRuleClass'intheon-linedocumentation)TextConditionalFormattingRule('TextConditionalFormattingRuleClass'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 413

Copyright © GrapeCity, inc. All rights reserved.

Page 415: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TimePeriodConditionalFormattingRule('TimePeriodConditionalFormattingRuleClass'intheon-linedocumentation)UnaryComparisonConditionalFormattingRule('UnaryComparisonConditionalFormattingRuleClass'intheon-linedocumentation)UniqueOrDuplicatedConditionalFormattingRule('UniqueOrDuplicatedConditionalFormattingRuleClass'intheon-linedocumentation)

Thisfigureillustratesthefollowingexample.

UsingCode

1. Setthepropertiesoftheruleclass.2. Applytheformatting.

Example

ThisexamplecodecreatesthebetweenvaluesruleandusestheSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodtoapplytherule.

C#private void Form1_Load(object sender, EventArgs e) { fpSpread1.Sheets[0].Cells[0, 0].Value = 3; fpSpread1.Sheets[0].Cells[1, 0].Value = 2; fpSpread1.Sheets[0].Cells[1, 1].Value = 5; fpSpread1.Sheets[0].Cells[0, 2].Value = 1; }

private void button1_Click(object sender, EventArgs e) { FarPoint.Win.Spread.BetweenValuesConditionalFormattingRule between = new FarPoint.Win.Spread.BetweenValuesConditionalFormattingRule(true, 10, false, 20, false); between.FirstValue = 10; between.SecondValue = 20; between.IsNotBetween = true; between.BackColor = Color.Bisque; fpSpread1.ActiveSheet.SetConditionalFormatting(1, 1, between); }

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets(0).Cells(0, 0).Value = 3 FpSpread1.Sheets(0).Cells(1, 0).Value = 2 FpSpread1.Sheets(0).Cells(1, 1).Value = 5 FpSpread1.Sheets(0).Cells(0, 2).Value = 1 End Sub

Spread Windows Forms Developer’s Guide 414

Copyright © GrapeCity, inc. All rights reserved.

Page 416: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim between As New FarPoint.Win.Spread.BetweenValuesConditionalFormattingRule(True, 10, False, 20, False) between.FirstValue = 10 between.SecondValue = 20 between.IsNotBetween = True between.BackColor = Color.Bisque FpSpread1.ActiveSheet.SetConditionalFormatting(1, 1, between) End Sub

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosettheconditionalformat.

2. UndertheHomemenu,selecttheConditionalFormattingiconintheStylesection,thenselecttheHighlightCellsRulesoption,andthenchoosethecondition.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Icon Set Rule

Youcansetrulesthatdisplaycertainiconswhenacellvalueisgreaterthan,equalto,orlessthanavalue.

Youcanusebuilt-iniconsetsfortherule.YoucanalsospecifyindividualiconstouseintheiconsetwiththeIconRuleSet('IconRuleSetProperty'intheon-linedocumentation)propertyandtheIconSetConditionalFormattingRule('IconSetConditionalFormattingRuleClass'intheon-linedocumentation)class.YoucanusecustomiconswiththeAddIcon('AddIconMethod'intheon-linedocumentation)methodandtheCustomIconContainer('CustomIconContainerProperty'intheon-linedocumentation)property.

Thefollowingfigureillustratescellsthatdisplaythebuilt-inicons.

UsingCode

1. Setthepropertiesoftheiconsetruleclass.2. Applytheformatting.

Example

ThisexamplecodecreatesaniconsetruleandusestheSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodtoapplytherule.

C#private void Form1_Load(object sender, EventArgs e) { fpSpread1.Sheets[0].Cells[0, 0].Value = 8; fpSpread1.Sheets[0].Cells[1, 0].Value = 5; fpSpread1.Sheets[0].Cells[2, 0].Value = 10; fpSpread1.Sheets[0].Cells[3, 0].Value = 1; }

private void button1_Click(object sender, EventArgs e) {FarPoint.Win.Spread.Model.CellRange celRange1 = new FarPoint.Win.Spread.Model.CellRange(0, 0, 4, 1);FarPoint.Win.Spread.IconSetConditionalFormattingRule rule = new FarPoint.Win.Spread.IconSetConditionalFormattingRule(FarPoint.Win.Spread.ConditionalFormattingIconSetStyle.ThreeRimmedTrafficLights ); fpSpread1.Sheets[0].SetConditionalFormatting(new FarPoint.Win.Spread.Model.CellRange[] { celRange1 }, rule); }

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets(0).Cells(0, 0).Value = 8 FpSpread1.Sheets(0).Cells(1, 0).Value = 5 FpSpread1.Sheets(0).Cells(2, 0).Value = 10

Spread Windows Forms Developer’s Guide 415

Copyright © GrapeCity, inc. All rights reserved.

Page 417: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).Cells(3, 0).Value = 1 End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim celRange1 As New FarPoint.Win.Spread.Model.CellRange(0, 0, 4, 1) Dim rule As New FarPoint.Win.Spread.IconSetConditionalFormattingRule(FarPoint.Win.Spread.ConditionalFormattingIconSetStyle.ThreeRimmedTrafficLights) FpSpread1.Sheets(0).SetConditionalFormatting(New FarPoint.Win.Spread.Model.CellRange() {celRange1}, rule) End Sub

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosettheconditionalformat.2. UndertheHomemenu,selecttheConditionalFormattingiconintheStylesection,thenselecttheIconSetsoption,andthenchoosetheiconset.3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Top, Bottom, or Average Rules

Thetoporbottomrulesapplyformattingtocellswhosevaluesfallinthetoporbottompercent.Thetoprankedrulespecifiesthetoporbottomvalues.Theaverageruleappliestothegreaterorlesseraveragevalueoftheentirerange.

Thefollowingfigureshowsatoprulethatsetsthestylefortheaboveaveragevalueintherangeofvalues;thecodetocreatetheexampleisprovidedintheexample.

Thefollowingoptionsareavailable:

top10top10%bottom10bottom10%aboveaveragebelowaverage

UsingCode

1. Setthepropertiesoftheruleclass.2. Applytheformatting.

Example

ThisexamplecodecreatesanaverageruleandusestheSetConditionalFormatting('SetConditionalFormattingMethod'intheon-linedocumentation)methodtoapplytherule.

C#private void Form1_Load(object sender, EventArgs e) { fpSpread1.Sheets[0].Cells[0, 0].Value = 3; fpSpread1.Sheets[0].Cells[1, 0].Value = 2; fpSpread1.Sheets[0].Cells[1, 1].Value = 10; fpSpread1.Sheets[0].Cells[0, 2].Value = 1; } private void button1_Click(object sender, EventArgs e) { //Average CF FarPoint.Win.Spread.AverageConditionalFormattingRule average = new

Spread Windows Forms Developer’s Guide 416

Copyright © GrapeCity, inc. All rights reserved.

Page 418: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.AverageConditionalFormattingRule(true, true); average.IsAbove = true; average.IsIncludeEquals = true; average.StandardDeviation = 2; average.FontStyle = new FarPoint.Win.Spread.SpreadFontStyle(FarPoint.Win.Spread.RegularBoldItalicFontStyle.Bold); fpSpread1.ActiveSheet.SetConditionalFormatting(1, 1, average); }

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets(0).Cells(0, 0).Value = 3 FpSpread1.Sheets(0).Cells(1, 0).Value = 2 FpSpread1.Sheets(0).Cells(1, 1).Value = 10 FpSpread1.Sheets(0).Cells(0, 2).Value = 1 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Average CF Dim average As New FarPoint.Win.Spread.AverageConditionalFormattingRule(True, True) average.IsAbove = True average.IsIncludeEquals = True average.StandardDeviation = 2 average.FontStyle = New FarPoint.Win.Spread.SpreadFontStyle(FarPoint.Win.Spread.RegularBoldItalicFontStyle.Bold) FpSpread1.ActiveSheet.SetConditionalFormatting(1, 1, average) End Sub

UsingtheSpreadDesigner

1. Intheworkarea,selectthecellorcellsforwhichyouwanttosettheconditionalformat.

2. UndertheHomemenu,selecttheConditionalFormattingiconintheStylesection,thenselecttheTop/BottomRulesoption,andthenchoosethecondition.

3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Setting up Conditional Formatting of a Cell

Youcansetupconditionalformatswithincellsthatdeterminetheformattingofthecellbasedontheoutcomeofaconditionalstatement.Youcanuseanamedstyletospecifyvariousformattingoptionssuchasbordersandcolorstoapplyiftheconditionstatementisvalid,thatis,iftheoperationissatisfied.

Forexample,youmaywanttochangethebackgroundcolorofacellbasedonthevalueofthecell.Ifthevalueisbelow100thenthebackgroundcolorwouldbechangedtored.Theconditionstatementis"lessthan100"andconsistsofacomparisonoperator"lessthan"andacondition,inthiscaseasingleconstant"100".Theconditioncanbeaconstant(expressedasastring)oranexpression.Someconditionstatementshavetwoconditionsandanoperator:forinstance,ifthecellvalueisbetween0and100,thenchangethebackgroundcolor.Inthiscase,thecomparisonoperatoris"between"andthefirstconditionis0andthelastconditionis100.Foracompletelistofoperations,refertotheComparisonOperator('ComparisonOperatorEnumeration'intheon-linedocumentation)enumeration.Foralistofthetypesofexpressions,refertotheCalcEngine.Expressionobject.Formoreinformationaboutthepossiblestylesettings,refertoCreatingandApplyingaStyleforCells.

Iftwoconditionalformatsaresettothesamecell,thesecondconditionalformattakeseffect.

Spread Windows Forms Developer’s Guide 417

Copyright © GrapeCity, inc. All rights reserved.

Page 419: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheconditionalformattingcanbedoneusingtheConditionalFormat('ConditionalFormatClass'intheon-linedocumentation)classandanyofthesemembersoftheSheetView('SpreadViewClass'intheon-linedocumentation)class:

GetConditionalFormatsmethodSetConditionalFormatmethodsClearConditionalFormatsmethod

WhenyouusetheGetConditionalFormatmethods,theconditions,operator,andstyleinformationarereturnedasaConditionalFormatobject.Thefirstconditioncanbeeitherastringorexpression(FirstConditionorFirstConditionExpression.)Similarly,thelastconditioncanbeastringorexpression(LastConditionorLastConditionExpression).Ifonlyoneconditionisset,itisintheFirstConditionandtheLastConditionisnull.TheComparisonOperatoristhecomparisonoperatorfortheconditionalformat.ThestylesettingstoapplytothecellwhentheconditionstatementistruearesetasaNamedStyleobject.

Refertothefollowingcodeexamplestoseehowtosetconditionalformattingforarangeofcellsthatwouldresultindifferentbackgroundcolors,forinstance,asshowninthefollowingfigure.

Forsomecelltypesthatallowinputofmultipledatatypes,suchasgeneralcelltype,conditionalformattingworkswhetheryoutypeinnumbersorstrings.Forexample,ifyouhaveconditionalformattingsetforvaluesbetweenvariousrangessuchas10to20and20to30,thentyping16resultsintheformattingfortherange10to20.Ifyouthentype16m,thecelltreatsthislikeastringandsince"16m"isbetweenstrings"10"and"20",theconditionalformattingstillapplies.

YoucanalsousethesemembersoftheIConditionalFormatSupport('IConditionalFormatSupportInterface'intheon-linedocumentation)interface:

ConditionalFormatIsRowUsed('ConditionalFormatIsRowUsedMethod'intheon-linedocumentation)methodConditionalFormatNextNonEmptyColumnInRow('ConditionalFormatNextNonEmptyColumnInRowMethod'intheon-linedocumentation)method

UsetheClearConditionalFormatsmethodtoclearonlytheconditionalformatsofacellwithoutaffectingtheotherformattingorthecontentsofthecell.

UsetheModel.DefaultSheetStyleModel.ConditionalFormatIsRowUsedmethodtodeterminewhetherarowinthestylemodelcontainsstylesettings.

UsetheModel.DefaultSheetStyleModel.ConditionalFormatNextNonEmptyColumnInRowmethodtoreturntheindexofthenextnon-emptycolumninarowinthemodel.UsetheModel.DefaultSheetStyleModel.GetValidConditionalFormatmethodtoreturnthestyleinformationforthefirstvalidconditionforthecellatthespecifiedrowandcolumninthemodel.

UsingCode

1. Definestyles.2. Setaconditionalformatforacell.

Example

Thisexamplecodesetstheconditionalformatforacellbasedonthenumericvalueofthedata.Itchangesthecoloringofthecellbasedonthevalueoftemperaturedata.Toseehowitworks,typeanumberincellB2,theneitherchangecellsorleaveeditmodetoseetheformattingapplied.

Spread Windows Forms Developer’s Guide 418

Copyright © GrapeCity, inc. All rights reserved.

Page 420: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#FarPoint.Win.Spread.NamedStyle styleCold = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle styleCool = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle styleMild = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle styleWarm = new FarPoint.Win.Spread.NamedStyle();FarPoint.Win.Spread.NamedStyle styleHot = new FarPoint.Win.Spread.NamedStyle();

styleCold.BackColor = Color.Blue;styleCold.ForeColor = Color.White;styleCool.BackColor = Color.Cyan;styleMild.BackColor = Color.Lime;styleWarm.BackColor = Color.Yellow;styleHot.BackColor = Color.Red;

for (int col = 0; col < 6; col++){ fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCold, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "32"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "32", "55"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleMild, FarPoint.Win.Spread.ComparisonOperator.Between, "55", "75"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleWarm, FarPoint.Win.Spread.ComparisonOperator.Between, "75", "85"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "85");}

VBDim styleCold As New FarPoint.Win.Spread.NamedStyle()Dim styleCool As New FarPoint.Win.Spread.NamedStyle()Dim styleMild As New FarPoint.Win.Spread.NamedStyle()Dim styleWarm As New FarPoint.Win.Spread.NamedStyle()Dim styleHot As New FarPoint.Win.Spread.NamedStyle()

styleCold.BackColor = Color.BluestyleCold.ForeColor = Color.WhitestyleCool.BackColor = Color.CyanstyleMild.BackColor = Color.LimestyleWarm.BackColor = Color.YellowstyleHot.BackColor = Color.Red

For col As Integer = 0 To 5 fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCold, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "32") fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "32", "55") fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleMild, FarPoint.Win.Spread.ComparisonOperator.Between, "55", "75") fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleWarm, FarPoint.Win.Spread.ComparisonOperator.Between, "75", "85") fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "85")Next col

Managing Formulas in Cells

Youcansetupandperformcalculationsusingformulasincells.Thismayinvolvethesetasks:

PlacingaFormulainCellsSpecifyingaCellReferenceinaFormulaSpecifyingaSheetReferenceinaFormulaUsingaCircularReferenceinaFormulaNestingFunctionsinaFormulaRecalculatingandUpdatingFormulasAutomaticallyFindingaValueUsingGoalSeekAllowingtheUsertoEnterFormulasCreatingandUsingaCustomNameCreatingandUsingaCustomFunction

FormoreinformationonenteringformulasusingtheSpreadDesigner,refertoEnteringaFormulainSpreadDesigner(on-linedocumentation).

Forinformationonthefloatingformulabar,whereuserscantypeinformulasandselectcellsdynamically,refertoSettinguptheFormulaTextBox.

Foranoverviewofformulasanddetailsonthefunctionsandoperatorsthatcanbeusedtocreateaformula,refertotheFormulaReference.

ForinformationontheCalcEngineassembly,whichisresponsiblefortheformulacalculations,refertotheFarPoint.CalcEngine('FarPoint.CalcEngineAssembly'intheon-linedocumentation).

Spread Windows Forms Developer’s Guide 419

Copyright © GrapeCity, inc. All rights reserved.

Page 421: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Placing a Formula in Cells

Youcanaddaformulatoacellorrangeofcells.Youcanalsoaddaformulatoallthecellsinaroworcolumn.Theformulaisastringwiththeexpressionoftheformula,typicallycontainingacombinationoffunctions,operators,andconstants.

WhenassigningaformulatotheRow('RowClass'intheon-linedocumentation)classorColumn('ColumnClass'intheon-linedocumentation)class,youareassigningadefaultformulaforthatroworcolumn.Inotherwords,theformulaisusedforeverycellintheroworcolumn(assumingthattheformulaisnotoverriddenatthecelllevel).Foraformulainaroworcolumn,Spreadusesthefirstcellintheroworcolumnasthebaselocation.TheformulaevaluatestoadifferentresultforeachcellincolumnAifyouuserelativeaddressing.IfyouwanteachcellincolumnAtoevaluatetothesumofthevaluesinC2andD2(andnotthevalueintheCandDcolumnsforeachrow)thenyouwouldneedtousetheformula$C$2+$D$2,whichusesabsoluteaddress.Forexamplesofformulasthatusecellreferences,refertoSpecifyingaCellReferenceinaFormula.

YoucanaddaformulabyspecifyingtheFormulapropertyfortheobjectorbyenteringitintheSpreadDesigner.Theproceduresforusingcodearegivenbelow.ForinstructionsonusingSpreadDesignertoenteraformula,refertoEnteringaFormulainSpreadDesigner(on-linedocumentation).Youcanallowenduserstoenterformulasbyallowingthemtotypetheequalssignandthentheformula;refertoAllowingtheUsertoEnterFormulas.

Becarefulofthetypeofcellinwhichthedataisfound,andwhetheryouusetheTextorValuepropertywhenassigningdatathatisusedinaformula.WhenyouassigncelldatausingtheTextproperty,thespreadsheetusesthecelltypetoparseanassignedstringintotheneededdatatype.Forexample,anumbercelltypeparsesastringintoadoubledatatype.WhenyouassignthecelldatausingtheValueproperty,thespreadsheetacceptstheassignedobjectasisandnoparsingoccurs,soifyousetitwithastring,itremainsastring.Somenumericfunctions(forexample,SUM)ignorenon-numericvaluesinacellrange.Forexample,ifthecellrangeA1:A3containsthevalues{1,"2",3},thentheformulaSUM(A1:A3)evaluatesto4becausetheSUMfunctionignoresthestring"2".Besurethatyousetthevaluecorrectlyforanycellsusedinthecalculationofaformulaandthatyousetthemwiththecorrectdatatype.

Astringconstantinaformulacancontainspecialcharacterssuchasthenewlinecharacter(thatis,'\n').Makesurethatyouenclosethestringconstantinquotesinthetextrepresentationoftheformula.ThefollowingC#codecreatesamultiple-linetextcellandassignsaformulathatcontainsastringconstantthatcontainsanewlinecharacter.

C#TextCellType ct = new TextCellType();ct.Multiline = true;fpspread1.Sheets[0].Cells[0,0].Formula = "\"line1\nline2\"";

UsingaShortcut

Addaformulatoacell,row,orcolumnbyspecifyingtheFormulapropertyforthatcell,row,orcolumn.

Example

Thisexampleshowshowtospecifyaformulathatfindstheproductoffivetimesthevalueinthefirstcell,andputstheresultinanothercell.Thenitfindsthesumofarangeofcells(A1throughA4)andputstheresultineverycellofthefourthcolumn.

C#FpSpread1.ActiveSheet.Cells[2, 0].Formula = "PRODUCT(A1,5)";FpSpread1.ActiveSheet.Columns[3].Formula = "SUM(A1:A4)";

VBFpSpread1.ActiveSheet.Cells(2, 0).Formula = "PRODUCT(A1,5)"FpSpread1.ActiveSheet.Columns(3).Formula = "SUM(A1:A4)"

Spread Windows Forms Developer’s Guide 420

Copyright © GrapeCity, inc. All rights reserved.

Page 422: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Specifythecell,row,orcolumn.2. Addaformulatothecell,row,orcolumn.

Example

Thisexampleshowshowtospecifyaformulathatsumstwocells,doublesit,andputstheresultinathirdcell.

C#FarPoint.Win.Spread.Cell mycell;mycell = fpSpread1.Cells[2, 0];mycell.Formula = "SUM(A1:A2) * 2";

VBDim mycell As FarPoint.Win.Spread.Cellmycell = FpSpread1.ActiveSheet.Cells(2, 0)mycell.Formula = "SUM(A1:A2) * 2"

UsingtheFormulaEditor

Atdesigntime,youcanenterformulasincellsusingeithertheFormulabarortheFormulaEditor,bothofwhichareavailablefromtheSpreadDesigner.TheFormulaEditorisalsoavailablefromthePropertiesWindow.Formoreinformation,refertoEnteringaFormulainSpreadDesigner(on-linedocumentation).Fordetailsonthefunctionsandoperatorsthatcanbeusedtocreateaformula,refertotheFormulaReference.

1. Selectthesheettabofthesheetthatcontainsthecellsinwhichtoplaceformulas.2. Selectthecellorcellsinthesheet.3. IntheFormulaproperty,clickthearrowbutton.ThisopenstheFormulaEditor.4. IntheFormulaEditor,youmaytypeintheformulaintheeditbox.Toassistinenteringfunctionsinthe

formula,youcandouble-clickonafunctionnametohaveitappearintheeditbox.Functionsareorganizedbycategory.Youcanalsotypeoperatorsandconstantstoconstructyourformula.

5. Whendone,clickApply.ClickOKtoclosetheeditor.6. IfyouwereworkingfromwithintheSpreadDesigner,fromtheFilemenuchooseApplyandExittoapplyyour

changestothecomponentandexitSpreadDesigner.

Specifying a Cell Reference in a Formula

Besidesvalues,operators,andfunctions,aformulacancontainreferencestovaluesinothercells.Forexample,tofindthesumofthevaluesintwocells,theformulacanrefertothecellcoordinatesbyrowandcolumn.Youcanuseanabsolutecellreference(withtheactualcoordinatesoftherowandcolumn)orarelativecellreference(withthecoordinatesrelativetothecurrentcell).YouchoosewhichtypeofcellreferenceforthesheetbyusingtheReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)property.Fordetailsonthewaytospecifythereferencestyle,refertotheReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)propertyoftheSheetView('SheetViewClass'intheon-linedocumentation)class,andtheReferenceStyle('ReferenceStyleEnumeration'intheon-linedocumentation)enumeration.

Ifyouhavechangedthecellreferencestyletoastylethatcannotrepresenttheformula,theSpreadcomponentprovidestheformulawithquestionmarksasplaceholdersforcellreferencesthatcannotberepresented.

Thefollowingtablecontainsexamplesofvalidformulasusingreferences:

Spread Windows Forms Developer’s Guide 421

Copyright © GrapeCity, inc. All rights reserved.

Page 423: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Function DescriptionSUM(A1:A10) Sumsrows1through10inthefirstcolumn

PI()*C6 PItimesthevalueincellC6

(A1+B1)*C1 Addsthevaluesinthefirsttwocellsandmultipliestheresultbythevalueinthethirdcell

IF(A1>5,A1*2,A1*3)

IfthecontentsofcellA1aregreaterthan5,thenmultiplythecontentsofcellA1by2,elsemultiplythecontentsofcellA1by3

IfyouhavedefinedrelativecellreferencesusedinaformulaincellB1asRC[-1]+R[-1]C,theformulaisinterpretedasaddthevalueinthecelltotheleft(A1)tothevalueinthecellabove("B0").Thecomponenttreatsthevalueinthecell"B0"asanemptycell.IfyouchangethecellreferencestyletotheA1style,theformulabecomesA1+B?,becausetheA1stylecannotrepresentcell"B0".However,thecomponentstillevaluatestheformulaasitwouldusingtheR1C1referencestyle.

Note:AlthoughmostofSpreaduseszero-basedreferencestorowsandcolumns,inthecreationofformulasyoumustuseone-basedreferences.Thecolumnandrownumbersstartatone(1),notzero(0).

RangeReference

Spreaddoesnotsupportrangereferenceswherethestartrowandendrowconsistofdifferentreferencetypes(forexample,oneabsolutecoordinateandonerelativecoordinate).

Eitherbothrowcoordinatesmustbeabsoluteorbothrowcoordinatesmustberelative.Forexample:

Reference WhetherSupportedR1C[-1]:R5C[-1] supported(absoluterow:absoluterow)

R1C[-1]:RC[-1] notsupported(absoluterow:relativerow)

RC[-1]:R5C[-1] notsupported(relativerow:absoluterow)

R[-5]c[-1]:RC[-1] supported(relativerow:relativerow)

Developyourformulassothateitherbothrowcoordinatesareabsolute,

for(inti=0;i<n;i++)

fpspread1.Sheets[0].Cells[i,column].Formula="SUM(R1C[-1]:R"+(i+1).ToString()+"C[-1])"

orbothrowcoordinatesarerelative,

for(inti=0;i<n;i++)

fpspread1.Sheets[0].Cells[i,column].Formula="SUM(R["+(-i).ToString()+"]C[-1]:RC[-1])"

Thesamerestrictionsapplytostartcolumnandendcolumncoordinates.

Formoreinformationoncellreferencestyles,refertotheFormulaReference.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindowselecttheSheetspropertyandclickonthebuttontoopentheSheetViewCollectioneditor.

2. SelectthesheetfromtheMemberlist.3. Inthepropertieslist(intheCalculationcategory),selecttheReferenceStyleproperty.4. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue,eitherA1orR1C1.

UsingCode

Spread Windows Forms Developer’s Guide 422

Copyright © GrapeCity, inc. All rights reserved.

Page 424: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SpecifythereferencestylebysettingtheReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)propertyorusethedefaultReferenceStylevalue.

Example

Thisexamplesetsthereferencestyle.

C#fpSpread1.Sheets[0].ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1;fpSpread1.Sheets[0].Cells[2, 2].Formula = "SUM(A1:A6)";

VBFpSpread1.Sheets(0).ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1FpSpread1.Sheets(0).Cells(2, 2).Formula = "SUM(A1:A6)"

UsingtheSpreadDesigner

1. Selectthesheettabnameforthesheet.2. Inthepropertylist(intheCalculationcategory),selecttheReferenceStyleproperty.3. Clickthedrop-downarrowtodisplaythechoicesandselectthevalue,eitherA1orR1C1.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Specifying a Sheet Reference in a Formula

Aformulacancontainreferencestoothersheets.Whenareferencetoacellincludesareferencetoacellonanothersheet,thisiscalledcross-sheetreferencing.Anexampleofcross-sheetreferencinginaformulathatusestheadditionoperatorwouldbe:

(FirstRoundData!A2+SecondRoundData!A2)

Note:AlthoughmostofSpreaduseszero-basedreferencestorowsandcolumns,inthecreationofformulasyoumustuseone-basedreferences.Thecolumnandrownumbersstartatone(1),notzero(0).

Anotherexamplewouldbekeepingarunningtotalofcellsofonesheetonaseparatesheet.UsetheFormulapropertytoputaformulaononesheetthatreferencesthecellsyouwantaddedfromanothersheet,asshowninthefollowingcode.

FpSpread1.Sheets(1).Cells(0,0).Formula = "SUM(Sheet1!A1:Sheet1:A100)"

ThenusetheReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)propertytosetthereferencestyle.

Youcanhaveformulasthatreferenceotherworksheetsoryoucanhaveautomaticcalculationsattheworksheetlevel(appliestoallsheets).Youcannothaveboth.WhenEnableCrossSheetReference('EnableCrossSheetReferenceProperty'intheon-linedocumentation)isTrue(whichisthedefaultsetting),theentireworkbookactsasasinglecalculationunitwithallworksheetssharingthesamecalculationsettings(autocalculations,iterations,customfunctions,customnames,etc).Changingacalculationsettingaffectsallworksheets.Formulascanreferencecellsonotherworksheets.WhenEnableCrossSheetReferenceisFalse,eachworksheetfunctionsasaseparatecalculationunitwitheachworksheethavingitsowncalculationsettings(autocalculations,iterations,customfunctions,customnames,andsoon).Changingacalculationsettingaffectsasingleworksheet.ForthissettingofEnableCrossSheetReference('EnableCrossSheetReferenceProperty'intheon-linedocumentation),formulascanonlyreferencecellsonthesameworksheet.

Ifthesheetnamecontainsnonalpha-numericcharacters(forexample,aspace),thenenclosethesheetnameinsingle

Spread Windows Forms Developer’s Guide 423

Copyright © GrapeCity, inc. All rights reserved.

Page 425: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

quotesintheformula.Forexample,supposesheetnameis"pageone"thentheformulawouldbeSUM('pageone'!$A$1:$A$5).

Ifthesheetnamecontainsthesinglequotecharacter,thenusetwosinglequotecharactersintheformula.Forexample,supposethesheetnameis"scott'spage"thentheformulawouldbeSUM('scott''spage'!$A$1:$A$5).

Ifthesheetnamecontainsacolon,thenusetwosinglequotesaroundthesheetname.Forexample("'Sheet:name'!$B$1:$F$1").

Formoreinformationoncross-sheetreferencing,refertotheFormulaReference.

UsingCode

Thefollowingexampleusesdefaultsheetnamesinaformula.

Example

Thisexamplesetstheformula.

C#fpSpread1.Sheets[0].Cells[0,0].Formula = "Sheet1!A3 + Sheet2!A2";

VBFpSpread1.Sheets(0).Cells(0,0).Formula = "Sheet1!A3 + Sheet2!A2"

Using a Circular Reference in a Formula

Youcanrefertoaformulainthecellthatcontainsthatformula;thistypeofreferenceiscalledacircularreference.Thisisdonetypicallytorecurseonafunctiontoapproachanoptimumvaluebyiteratingonthesamefunction.Youcanselecthowmanytimesafunctioniteratesonitself(recurses)bysettingtherecalculationiterationcountpropertyusingtheMaximumIterations('MaximumIterationsProperty'intheon-linedocumentation)property.YoucansettheamountofchangeallowedwiththeMaximumChange('MaximumChangeProperty'intheon-linedocumentation)property.

Bydefault,iftheformula"=COLUMNS(A1:C5)"isincellC4,noresultisreturned.Inotherwords,ifboththelastcolumnandrowindexofthearrayaregreaterthanthecolumnandrowindexofthecellinwhichtheformularesides,theformulacannotbecalculated.Inthiscase,thecellC4isintherangeA1:C5.ThisacircularreferenceinaformulaandsoSpreaddoesnotevaluatetheformulaunlessiterationsareturnedon.

Aswithmostspreadsheetproducts(includingExcelandOpenOffice),Spreadsolvescircularformulasviaiterations.Duringeachrecalculationcycle,aspecifiednumberofiterationsareperformed.Duringeachiteration,everycircularformulaisevaluatedexactlyonce.Theexactorderinwhichthecircularformulasareevaluatedduringagiveniterationcannotbeassumedbytheapplication.Aswithmostspreadsheetproducts(includingExcelandOpenOffice),circularformulasinSpreadareintendedtobeusedinscenarioswheretheiterationsconvergetothedesiredsolutionregardlessoftheorderofevaluationwithinagiveniteration.

ForinformationonusingtheFormulaEditortoenteraformulaatdesigntime,refertoEnteringaFormulainSpreadDesigner(on-linedocumentation).Fordetailsonthefunctionsandoperatorsthatcanbeusedtocreateaformula,refertotheFormulaReference.

UsingCode

1. Setthecelltypesforthecellswiththeformulas.2. SettherecalculationiterationcountbysettingtheMaximumIterations('MaximumIterationsProperty'intheon-linedocumentation)propertyforthesheet.

3. SpecifythemaximumamountofchangethatcanoccurwitheachiterationbysettingtheMaximumChange

Spread Windows Forms Developer’s Guide 424

Copyright © GrapeCity, inc. All rights reserved.

Page 426: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('MaximumChangeProperty'intheon-linedocumentation)propertyforthesheet.4. Ifneeded,setthereferencestyleforthesheetwiththeReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)property.

5. Definetheformulaswiththecircularreference(s)inthecells.

Example

Thisexamplesetsformulas.

C#fpSpread1.ActiveSheet.Iteration = true;fpSpread1.ActiveSheet.SetValue(0, 1, 20);fpSpread1.ActiveSheet.MaximumChange = 5;fpSpread1.ActiveSheet.MaximumIterations = 5;fpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3");fpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1");

VBFpSpread1.ActiveSheet.Iteration = TrueFpSpread1.ActiveSheet.SetValue(0, 1, 20)FpSpread1.ActiveSheet.MaximumChange = 5FpSpread1.ActiveSheet.MaximumIterations = 5FpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1")FpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3")

Nesting Functions in a Formula

Youcannestafunctionwithinanotherfunctioninaformula.

ForinformationonusingtheFormulaEditortoenteraformulaatdesigntime,refertoEnteringaFormulainSpreadDesigner(on-linedocumentation).Fordetailsonthefunctionsandoperatorsthatcanbeusedtocreateaformula,refertotheFormulaReference.

UsingCode

1. Ifneeded,setthereferencestyleforthesheetwiththeReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)property.

2. Useafunctionwithinanotherfunctioninaformula.

Example

Inthisexamplethesumofthevalueintwocells(foundbyusingtheSUMfunction)isembeddedinaPRODUCTformula.Firstthecelltypesaresetandthevaluesofthecellsareset.

C#fpSpread1.Sheets[0].Cells[3, 1].Formula = "PRODUCT(A1, SUM(A2,A3))";

VBFpSpread1.Sheets(0).Cells(3, 1).Formula = "PRODUCT(A1, SUM(A2,A3))"

Recalculating and Updating Formulas Automatically

Spread Windows Forms Developer’s Guide 425

Copyright © GrapeCity, inc. All rights reserved.

Page 427: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Bydefault,thespreadsheetrecalculatesformulasinthespreadsheetwhenthecontentsofdependentcellschange.Youcanturnthisrecalculationoff.Youcanalsorecalculateanindividualcell.

Alsobydefault,thespreadsheetupdatesformulaswhenyouadd,insert,orremovecolumnsorrowsorwhenyoumoveorswapblocksofcells.Youcanturnofftheseautomaticformulaupdates,butgenerallyyouprobablywantthespreadsheettoupdateformulasinthesecases.Keepinmindhowturningoffautomaticformulaupdatingmightimpactthespreadsheetiftheusermovesdata,addsrowsorcolumns,orperformsotheractionsthataffectthelocationofdata.

Whenautomaticformulaupdatingison,thespreadsheetupdatesabsoluteandrelativecellreferences,asfollows:

Whenthespreadsheetisupdatingformulas,itupdatesabsolutecellreferenceswhenthecellreferencedbytheformulaispartoftheblockthathaschanged.Forexample,ifyouhaveaformulaincellC3thatreferencescellA1,whichusesanabsolutereference,andthenaddarowtothetopofthespreadsheet,younowwanttheformulatoreferencecellA2,becausecellA1isempty.Ifthespreadsheetdidnotupdatetheformula,yourformulawouldbereferencingdifferentdata.

Whenthespreadsheetisupdatingformulas,itupdatesrelativecellreferenceswhenthecellreferencedbytheformulaisnotpartoftheblockthathaschanged.Forexample,ifyouhaveaformulaincellC3thatreferencescellC1asarelativereference,itreferencescellC1asthecellthatistwocellsaboveit.Ifyouaddarowbetweenrow2androw3,cellC3isnowC4,andtherelativeaddressreferencescellC2,thecelltwocellsaboveit.Therefore,tousethesamedataintheformula,thespreadsheetupdatesthecellreferencetothecellthreecellsaboveit,C1.

UsetheAutoCalculation('AutoCalculationProperty'intheon-linedocumentation)propertytoturnonorofftheautomaticrecalculationofformulas.UsetheRecalculate('RecalculateMethod'intheon-linedocumentation)andRecalculateAll('RecalculateAllMethod'intheon-linedocumentation)methodsforrecalculatingformulas.

UsingCode

1. Ifneeded,setthereferencestyleforthesheetwiththeReferenceStyle('ReferenceStyleProperty'intheon-linedocumentation)property.

2. AddaformulatothecellwiththeSetFormula('SetFormulaMethod'intheon-linedocumentation)method.

3. SettheRecalculateAll('RecalculateAllMethod'intheon-linedocumentation)methodtorecalculate.

Example

Thisexamplerecalculatesalltheformulas.

C#fpSpread1.ActiveSheet.SetValue(0, 0, 20);fpSpread1.ActiveSheet.SetValue(0, 1, 10);fpSpread1.ActiveSheet.SetFormula(3, 0, "SUM(A1,B1)");fpSpread1.ActiveSheet.SetFormula(4, 0, "A1*B1");fpSpread1.ActiveSheet.SetValue(0, 1, 100);fpSpread1.ActiveSheet.RecalculateAll();

VBFpSpread1.ActiveSheet.SetValue(0, 0, 20)FpSpread1.ActiveSheet.SetValue(0, 1, 10)FpSpread1.ActiveSheet.SetFormula(3, 0, "SUM(A1,B1)")FpSpread1.ActiveSheet.SetFormula(4, 0, "A1*B1")FpSpread1.ActiveSheet.SetValue(0, 1, 100)FpSpread1.ActiveSheet.RecalculateAll()

Spread Windows Forms Developer’s Guide 426

Copyright © GrapeCity, inc. All rights reserved.

Page 428: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Finding a Value Using GoalSeek

YoucanusetheGoalSeek('GoalSeekMethod'intheon-linedocumentation)methodtofindavaluethatwillproducethedesiredresultforaformula.Anapproximationisacceptable.Youcansetthestartingandintendedgoalofthecalculation.

UsingCode

UsetheGoalSeekmethodtofindtherequiredresult.

Example

Inthisexampletheformulaisincell(1,1).Theresultthatyouwanttoseeintheformulacellis32.ThevalueinC1iswhatisrequiredtogetaresultof32.

C#FpSpread1.Sheets[0].Cells[1, 1].Formula = "C1+D1";FpSpread1.Sheets[0].Cells[0, 3].Value = 2;FpSpread1.GoalSeek(0, 0, 2, 0, 1, 1, 32);<

VBFpSpread1.Sheets(0).Cells(1, 1).Formula = "C1+D1"FpSpread1.Sheets(0).Cells(0, 3).Value = 2FpSpread1.GoalSeek(0, 0, 2, 0, 1, 1, 32)

Allowing the User to Enter Formulas

Inmanyofthecelltypes,userscantypeinaformulabysimplystartingwithanequalssign(=).Youdonotneedtosetapropertytoallowthis.Howtheresultisdisplayeddependsonthecelltype.Forexample,anintegercelltypedisplaystheresultasaninteger,eveniftheresultoftheformulaisnotaninteger.Inthiscase,anumbermayappearrounded.Forcurrencyanddatecells,specificformattingcanbedefined.Formoreinformationonsettingvariouscelltypes,refertoWorkingwithEditableCellTypes.

Forinformationonthefloatingformulabar,whereuserscantypeinformulasandselectcellsdynamically,refertoSettinguptheFormulaTextBox.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow(intheBehaviorcategory),selecttheAllowUserFormulasproperty.

2. SelectTruefromthedrop-downlisttoallowuserstoenterformulas,orselectFalsetoprohibitthem.

UsingaShortcut

AllowtheusertoenterformulasbysettingtheAllowUserFormulas('AllowUserFormulasProperty'intheon-linedocumentation)propertyforthecomponentorthesheet.

Example

ThisexamplecodesetstheSpreadcomponenttoallowuserstoenterformulas.

C#

Spread Windows Forms Developer’s Guide 427

Copyright © GrapeCity, inc. All rights reserved.

Page 429: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.AllowUserFormulas = true;

VBFpSpread1.AllowUserFormulas = True

UsingCode

AllowtheusertoenterformulasbysettingtheAllowUserFormulas('AllowUserFormulasProperty'intheon-linedocumentation)propertyforthecomponentorthesheet.

Example

Thisexamplecodesetsthechildsheettoallowuserstoenterformulas.

C#FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();sv.AllowUserFormulas = true;

VBDim sv As FarPoint.Win.Spread.SpreadView = FpSpread1.GetRootWorkbooksv.AllowUserFormulas = True

UsingtheSpreadDesigner

1. SelecttheSpreadcomponent(orselectSpreadfromthepull-downmenu).2. Inthepropertylistforthecomponent(intheBehaviorcategory),selecttheAllowUserFormulasproperty

andselectthevalueTrue.3. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Creating and Using a Custom Name

Custom,user-definednamesareidentifierstorepresentinformationinthespreadsheet,usedmostlyinformulas.Acustomnamecanrefertoacell,arangeofcells,acomputedvalue,oraformula.Youcandefineacustomnameandthenusethenameinformulas.Whentheformulaisevaluated,thecustomname'svalueisreferencedandevaluated.

Youcancreatesheetlevelorworkbooklevelcustomnames.Thescopeofthesheetlevelcustomnameislimitedtothesheetforwhichitwascreated.Thisallowsyoutousethesamenameonseveralsheets.Formulasinasheetwillignoresheetlevelcustomnamesonothersheets.

UsetheAddCustomName('AddCustomNameMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)classtoaddworkbookorsheetlevelcustomnames.ThesheetViewScopeparameterintheAddCustomNamemethodcanbesettotrueforasheetlevelcustomnameandfalseforaworkbooklevelcustomname.UsetheAddModelScopeCustomName('AddModelScopeCustomNameMethod'intheon-linedocumentation)methodtoaddsheetlevelcustomnames.

AvoidusingcustomnamesthatstartwithC#orR#patterns(#standsforanynumber).

UsingCode

DefinethecustomnameusingtheAddCustomName('AddCustomNameMethod'intheon-linedocumentation)methodfortheworkbookorsheet.

Spread Windows Forms Developer’s Guide 428

Copyright © GrapeCity, inc. All rights reserved.

Page 430: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

ToaddacustomnameforacellspecifiedwithA1notation,usetheAddCustomName('AddCustomNameMethod'intheon-linedocumentation)methodasshowninthefollowingexample,whichcreatesaworkbooklevelcustomname.

C#FarPoint.Win.Spread.Model.DefaultSheetDataModel d = new FarPoint.Win.Spread.Model.DefaultSheetDataModel();d.AddCustomName("test", "$B$1", 0, 0);

VBDim d As FarPoint.Win.Spread.Model.DefaultSheetDataModel = New FarPoint.Win.Spread.Model.DefaultSheetDataModel()d.AddCustomName("test", "$B$1", 0, 0)

Toaddacustomnameforacomputedvalue,usetheAddCustomName('AddCustomNameMethod'intheon-linedocumentation)methodasshowninthiscode:

C#FarPoint.Win.Spread.Model.DefaultSheetDataModel d;d = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)FpSpread1.Sheets[0].Models.Data;d.AddCustomName("alpha", "101", 0, 0);

VBDim d As FarPoint.Win.Spread.Model.DefaultSheetDataModeld = DirectCast(FpSpread1.Sheets(0).Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel)d.AddCustomName("alpha", "101", 0, 0)

Thefollowingexampleaddsanamethatisarangereference.

C#FarPoint.Win.Spread.Model.DefaultSheetDataModel d;d = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)FpSpread1.Sheets[0].Models.Data;d.AddCustomName("Sales", "Sheet1!$F$20:$F$50", 0, 0);

VBDim d As New FarPoint.Win.Spread.Model.DefaultSheetDataModeld = DirectCast(FpSpread1.Sheets(0).Models.Data,FarPoint.Win.Spread.Model.DefaultSheetDataModel)d.AddCustomName("Sales", "Sheet1!$F$20:$F$50", 0, 0)

UsingtheSpreadDesigner

1. SelecttheDatamenuintheSpreadDesigner.2. SelecttheNameManagericon.3. UsetheNewbuttontoaddcustomnamesandclicktheClosebuttonwhenfinished.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Creating and Using a Custom Function

Spread Windows Forms Developer’s Guide 429

Copyright © GrapeCity, inc. All rights reserved.

Page 431: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Ifyouhavefunctionsthatyouuseonaregularbasisthatarenotinthebuilt-infunctionsorifyouwishtocombinesomeofthebuilt-infunctionsintoasinglefunction,youcandosobydefiningyourowncustomfunctions.Theycanbecalledasyouwouldcallanyofthebuilt-infunctions.

Acustomfunctioncanhavethesamenameasabuilt-infunction.Thecustomfunctiontakespriorityoverthebuilt-infunction.Customfunctionsaredynamicallylinkedatevaluationtime.Thus,theapplicationcanredefineanexistingbuilt-infunction,ifthecustomfunctionusesthesamenameandisaddedbeforetheformulaisparsed.

IfaformulaattemptstocallacustomfunctionwithaparametercountoutsideoftherangeindicatedbytheMinArgs('MinArgsProperty'intheon-linedocumentation)andMaxArgs('MaxArgsProperty'intheon-linedocumentation)propertiesofthefunction,thentheEvaluate('EvaluateMethod'intheon-linedocumentation)methodofthefunctionisskippedandthe#VALUE!errorvalueisusedastheresult.

Also,ifaformulaattemptstocallacustomfunctionwithaparameterthatisanerrorvalue(forexample,#NUM!,#VALUE!,#REF!)andtheAcceptsError('AcceptsErrorMethod'intheon-linedocumentation)methodofthefunctionreturnsFalseforthatparameter,thentheEvaluatemethodofthefunctionisskippedandtheerrorvalueisusedastheresult.

Thecustomfunction'sEvaluate('EvaluateMethod'intheon-linedocumentation)methoddoesnotreceiveanyinformationregardingthelocation(orcontext)inwhichtheformulaisbeingevaluated.Ifyourcustomfunctionneedstherowandcolumninwhichitisbeingevaluatedthenyoumustaddextraparameterstoyourcustomfunctionandmanuallypasstherowandcolumncoordinatesintheextraparameters.

UsingCode

1. Definethecustomfunction(s).2. Registerthefunction(s)inthesheet.3. Usethecustomfunction(s).

Example

Thefirststepistocreatethecustomfunctions.Inthisexample,wecreatethreefunctions:acubemathematicalfunction,anXORlogicalfunction,andanullstringfunction.Thefollowingcodeimplementsthecustomfunctions.

TheCUBEcustomfunctionraisesanumbertothethirdpower.Thatis,CUBE(x)isequivalenttoPOWER(x3).

C#public class CubeFunctionInfo : FarPoint.CalcEngine.FunctionInfo{public override string Name { get { return "CUBE"; } }public override int MinArgs { get { return 1; } }public override int MaxArgs { get { return 1; } }public override object Evaluate (object[] args){double num = FarPoint.CalcEngine.CalcConvert.ToDouble(args[0]);return num * num * num;}}

TheXORcustomfunctionperformsanexclusiveORoperationontwoBooleanvalues.Thisissimilartothe"^"operatorinCortheXoroperatorinVB.

C#public class XorFunctionInfo : FunctionInfo{public override string Name { get { return "XOR"; } }

Spread Windows Forms Developer’s Guide 430

Copyright © GrapeCity, inc. All rights reserved.

Page 432: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

public override int MinArgs { get { return 2; } }public override int MaxArgs { get { return 2; } }public override object Evaluate (object[] args){bool arg0 = CalcConvert.ToBool(args[0]);bool arg1 = CalcConvert.ToBool(args[1]);return (arg0 || arg1) && (arg0 != arg1);}}

TheNULLfunctionreturnstheconstantvaluenullsimilartohowtheFALSE()functionreturnstheconstantvaluefalse.

C#public class NullFunctionInfo : FunctionInfo{public override string Name { get { return "NULL"; } }public override int MinArgs { get { return 0; } }public override int MaxArgs { get { return 0; } }public override object Evaluate (object[] args){return null;}}

Thefollowingcoderegistersthecustomfunctions.

C#fpSpread1.ActiveSheet.AddCustomFunction(new CubeFunctionInfo());fpSpread1.ActiveSheet.AddCustomFunction(new XorFunctionInfo());fpSpread1.ActiveSheet.AddCustomFunction(new NullFunctionInfo());

Thefollowingcodeusesthecustomsinformulas.

C#fpSpread1.ActiveSheet.SetFormula(0, 0, "CUBE(5)");fpSpread1.ActiveSheet.SetFormula(1, 0, "XOR(FALSE,FALSE)");fpSpread1.ActiveSheet.SetFormula(1, 1, "XOR(TRUE,FALSE)");fpSpread1.ActiveSheet.SetFormula(1, 2, "XOR(FALSE,TRUE)");fpSpread1.ActiveSheet.SetFormula(1, 3, "XOR(TRUE,TRUE)");fpSpread1.ActiveSheet.SetFormula(2, 0, "CHOOSE(1,100,NULL(),300)");fpSpread1.ActiveSheet.SetFormula(2, 1, "CHOOSE(2,100,NULL(),300)");fpSpread1.ActiveSheet.SetFormula(2, 2, "CHOOSE(3,100,NULL(),300)");

ParametersinCustomFunctions

Bydefault,parametersarepassedbyvalue.Asingleemptycellispassedasnull(NothinginVisualBasic).Asinglenon-emptycellispassedasaboxedprimitive(forexample,double,boolean,string,andsoon).AcellrangeispassedasaninstanceoftheCalcArray('CalcArrayClass'intheon-linedocumentation)class.TheCalcArray('CalcArrayClass'intheon-linedocumentation)classhasRowCountandColumnCountpropertiesfordeterminingthenumberofrowsandcolumnsinthetwodimensionalarray.TheCalcArrayclasshasaGetValue('GetValueMethod'intheon-linedocumentation)methodforgettingasinglevaluefromofthearray.TherowandcolumnindexestotheGetValuemethodarezerobased.

Ifyouwantaparameterpassedbyreference,thenyoumustoverridetheAcceptsReference('AcceptsReferenceMethod'intheon-linedocumentation)methodintheFunctionInfo('FunctionInfoClass'intheon-line

Spread Windows Forms Developer’s Guide 431

Copyright © GrapeCity, inc. All rights reserved.

Page 433: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)class.WhentheAcceptsReferencemethodreturnsTrueforaparameter,asinglecelloracellrangeispassedasaninstanceoftheCalcReference('CalcReferenceClass'intheon-linedocumentation)class.TheCalcReference('CalcReferenceClass'intheon-linedocumentation)classhasRowandColumnpropertiesfordeterminingthefirstrowandcolumninthereference.TheCalcReferenceclasshasRowCountandColumnCountpropertiesfordeterminingthenumberofrowsandcolumnsinthereference.TheCalcArrayclasshasaGetValuemethodforgettingasinglevaluefromthereference.TherowandcolumnindexesfortheGetValuemethodstartattherowandcolumn.

Example

Inthisexample,afunctioncountsthenumberofcellsinarangethatarelessthanagivencriteria.

C#class CountIfLessThanFunctionInfo : FunctionInfo { public override string Name { get { return "COUNTIFLESSTHAN"; } } public override int MinArgs { get { return 2; } } public override int MaxArgs { get { return 2; } } public override bool AcceptsReference(int i) { return i == 0; } public override object Evaluate(object[] args) { CalcReference range = args[0] as CalcReference; double criteria = CalcConvert.ToDouble(args[1]); double count = 0.0; if (range == null) return CalcError.Value; for (int i = range.Row; i < range.Row + range.RowCount; i++) { for (int j = range.Column; j < range.Column + range.ColumnCount; j++) double cellValue = CalcConvert.ToDouble(range.GetValue(i, j)); if (cellValue < criteria) count++; } } return count; }}

Using the Additional Spread Controls

Spread Windows Forms Developer’s Guide 432

Copyright © GrapeCity, inc. All rights reserved.

Page 434: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanextendthefunctionalityprovidedinSpreadtoendusersthroughothercontrolsontheform.TheFormulaProviderextendstheformulaandfunctioncapabilitytoothercontrolsontheform.TheFormulaTextBoxcanbeusedtomakeformulabarsorothereditcontrolsinyourapplication.TheNameBoxcanbeusedtoaddcustomnamesintheapplication.Thesecontrolsextendspreadsheetcapabilitytootherpartsofyourapplication.

SettinguptheFormulaTextBoxSettinguptheFormulaProviderSettinguptheNameBox

Formoreinformationonformulas,refertoManagingFormulasinCellsandtheFormulaReference.

Setting up the Formula Text Box

Youcansetupafloatingformulabarthatenduserscanusetoaddformulas.Theformulabarissimilartotheformulaeditoravailabletothedeveloperandhastheappearanceofatextbox.Theformulabarprovidesalistofcalculationfunctions.Italsoprovidesavisualmethodofselectingcellrangesfortheformula.

Refertothefollowingexampletoseehowtocreatetheformulatextbox.

SettinguptheFormulaTextBox

Tosetuptheformulabaratruntime,usetheFormulaTextBox('FormulaTextBoxClass'intheon-linedocumentation)class.YoucanalsodrawtheformulatextboxontheformandassignittoSpreadatdesigntime.SelecttheformulatextboxiconintheToolboxanddragittotheform.SelecttheformulatextboxverbandattachittoSpread.

TheAllowUserFormulas('AllowUserFormulasProperty'intheon-linedocumentation)propertyallowstheusertotypeformulasinthecellintheSpreadcontrol.

IfyousettheAllowUserFormulaspropertytoTrue,thentheformulasthataretypedinacellshowupintheformulabar.

UsingtheFormulaTextBox

Tousetheformulatextbox,typetheequalsign(=)andthenstarttypingthenameoftheformula.Thisbringsupalistoffunctionsthatstartwiththatletter.Youcanthentypetheleftparenthesisandeitherselectablockofcellsbydraggingthemouseoverthatrangeortypecellvaluesbyabsoluteorrelativereference.ThefigurebelowshowstheselectionofarangeofcellsfromA1toB3.

Spread Windows Forms Developer’s Guide 433

Copyright © GrapeCity, inc. All rights reserved.

Page 435: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformationonformulas,refertoManagingFormulasinCellsandtheFormulaReference.

UsingCode

Createtheformulaeditorandattachittothecontrol.

Example

Thisexamplecodecreatesthefloatingformulabar.

C#FarPoint.Win.Spread.FormulaTextBox editor = new FarPoint.Win.Spread.FormulaTextBox();editor.Location = new Point(0, 0);editor.Size = new Size(80, 20);this.Controls.Add(editor);editor.Attach(fpSpread1);// This line will disconnect the formula bar from the control// editor.Detach();

VBDim editor As New FarPoint.Win.Spread.FormulaTextBoxeditor.Location = New Point(0, 0)editor.Size = New Size(80, 20)Controls.Add(editor)editor.Attach(FpSpread1)‘ This line will disconnect the formula bar from the control‘ editor.Detach()

Setting up the Formula Provider

Youcanaddaformulaprovidercontroltotheform.Theprovidercontrolallowsyoutoaddvaluesfromothercontrolsusingformulasandputtheresultinacontrolontheform.Customformulafunctionscanbeused(AddCustomFunctionInfo('AddCustomFunctionInfoMethod'intheon-linedocumentation)method)aswellascustomnames(AddQueryValueName('AddQueryValueNameMethod'intheon-linedocumentation)method).TheprovidercontrolcanbeaddedtotheToolbox.Findtheformulaprovidercontrolinthelistof.NETcontrolsthatcanbeaddedtotheToolboxandselectit.

Spread Windows Forms Developer’s Guide 434

Copyright © GrapeCity, inc. All rights reserved.

Page 436: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SettinguptheFormulaProviderControl

Double-clicktheformulaprovidercontrolafterselectingitfromtheToolbox.

Twodesignpropertieswillbeaddedtoeachcontrolontheform.TheFormulaonFormulaProviderpropertyisthepropertyforsettingaformula.TheFormulaTriggerEventonFormulaProviderpropertyallowsyoutodeterminewhicheventwillcausetheformulatoupdate.

UsingtheFormulaProvider

Thefollowingbasicexampleshowshowtousetheformulaprovideratdesigntime.Thisexampleusestwotextboxcontrolsandtheformulaprovider.Thesecondtextboxdisplaysthevaluefromthefirsttextbox.Theformulaforthesecondtextbox(FormulaonFormulaProviderproperty)hasbeensettobeequaltothefirsttextbox.Thetriggerevent(FormulaTriggerEvent)hasbeensettotheTextChangedevent.

Formoreinformationonformulas,refertoManagingFormulasinCellsandtheFormulaReference.

UsingCode

AddtheformulaproviderandtwotextboxcontrolstotheformandsettheSetFormula('SetFormulaMethod'intheon-linedocumentation)andSetFormulaTriggerEvent('SetFormulaTriggerEventMethod'intheon-linedocumentation)methodsfortheformulaprovider.

Spread Windows Forms Developer’s Guide 435

Copyright © GrapeCity, inc. All rights reserved.

Page 437: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplegetsthetypeddatafromtextbox1andputsitintextbox2.

C#FormulaProvider1.SetFormula(TextBox2, "=TextBox1");FormulaProvider1.SetFormulaTriggerEvent(TextBox1, "TextChanged");

VBFormulaProvider1.SetFormula(TextBox2, "=TextBox1")FormulaProvider1.SetFormulaTriggerEvent(TextBox1, "TextChanged")

Setting up the Name Box

Youcanusethenameboxcontroltodisplayorcreatecustomnamesatruntime.Customnamesthatarecreatedbythenameboxcanonlyrefertoacellorarangeofcells.

SettinguptheNameBox

SelectthenameboxcontrolfromtheToolboxanddrawitontheformorusetheNameBox('NameBoxClass'intheon-linedocumentation)classtocreatethecontrolatruntime.ThenattachthecontroltoSpread.ThefollowingimagedisplaystheNameBoxcontrolinthetoolbox.

UsingtheNameBox

Tocreateacustomname,selectacellorrangeofcellsintheSpreadcontrol,typeacustomnameinthenameboxcontrol,andthenpresstheequalkeytocreatethecustomname.

Usethedrop-downlistinthenameboxcontroltodisplaythecustomnames.Youcanselectoneofthenamestoseethecellorcellrangethatthenamerefersto.

UsingCode

Spread Windows Forms Developer’s Guide 436

Copyright © GrapeCity, inc. All rights reserved.

Page 438: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Createthenameboxandattachittothecontrol.

Example

Thisexamplecodecreatesanameboxcontrolandacustomname.

C#fpSpread1.ActiveSheet.AddCustomName("Alpha", "A1:B1", 0, 0);

FarPoint.Win.Spread.NameBox namebox1 = new FarPoint.Win.Spread.NameBox();namebox1.Location = new Point(0, 0);namebox1.Size = new Size(80, 20);this.Controls.Add(namebox1);namebox1.Attach(fpSpread1);

VBFpSpread1.ActiveSheet.AddCustomName("Alpha", "A1:B1", 0, 0)

Dim namebox1 As New FarPoint.Win.Spread.NameBox()namebox1.Location = New Point(0, 0)namebox1.Size = New Size(80, 20)Controls.Add(namebox1)namebox1.Attach(FpSpread1)

Spread Windows Forms Developer’s Guide 437

Copyright © GrapeCity, inc. All rights reserved.

Page 439: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing Data Binding

YoucanbindtheSpreadcomponenttoadataset,suchasdatainadatabase,ortoanythingthatthe.NETframeworkallows,suchasanIListobject.YoucanworkwithdatabindingSpreadwithdataorothercontrolsbythesetasks:

BindingtoDataBindingSpreadtoanExternalDataSetBindingaCellRangeinSpreadtoanExternalDataSourceBindingaCellRangeinSpreadasaDataSourcetoanExternalControlCustomizingColumnandFieldBindingBindingaComboBoxtoaDataReader

AddingtoBoundDataAddingaRowtoaBoundSheetAddinganUnboundRowtoaBoundSheetAddinganUnboundColumntoaBoundSheet

CustomizingDataBindingCustomizingColumnHeadersforBoundSheetsCustomizingCellTypesforBoundSheetsWorkingwithHierarchicalDataDisplayCreatingaHierarchicalDisplayManuallyCreatingCustomHierarchyIcons

Ifyouwouldliketostepthroughanexample,seeoneofthebrieftutorials:

Tutorial:BindingtoaCorporateDatabase(VisualStudio2013)(on-linedocumentation)Tutorial:BindingtoaCorporateDatabase(OlderVisualStudio)

Binding to Data

YoucanbindtheSpreadcomponenttoadataset,suchasdatainadatabase,ortoanythingthatthe.NETframeworkallows,suchasanIListobject.

ThetasksyoucanperformtobindSpreadtodataorothercontrolsare:

BindingSpreadtoanExternalDataSetBindingaCellRangeinSpreadtoanExternalDataSourceBindingaCellRangeinSpreadasaDataSourcetoanExternalControlCustomizingColumnandFieldBindingBindingaComboBoxtoaDataReader

Binding Spread to an External Data Set

YoucanbindtheSpreadcomponenttoadataset.Whenyoubindthecomponentusingthedefaultsettings,datafromthedatasetisreadintothecolumnsandrowsofthesheettowhichyoubindthedata.Columnsareassociatedwithfields,androwsrepresenteachrecordinthedataset.

Youcanalsobindasheet,column,orcellrange.

ThefollowinginstructionsprovidethecodenecessarytobindtheSpreadcomponenttoadataset.Foratutorialthatcanintroduceyoutotheprocedurefordatabinding,refertotheTutorial:BindingtoaCorporateDatabase(VisualStudio2013)(on-linedocumentation).

Formoreinformation,refertotheAddRowToDataSource('AddRowToDataSourceMethod'intheon-line

Spread Windows Forms Developer’s Guide 438

Copyright © GrapeCity, inc. All rights reserved.

Page 440: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)andBindDataColumn('BindDataColumnMethod'intheon-linedocumentation)methods.

Ifyouwanttore-orderthecolumnsinadataset,movearoundthecolumnsintheSpreadafterthebind.UsetheBindDataColumn('BindDataColumnMethod'intheon-linedocumentation)methodintheSheetView('SheetViewClass'intheon-linedocumentation)classtodothis.

Therearemanyalternativewaystosetupdatabinding.TolearnmoreaboutdatabindinginVisualStudio.NET,consulttheVisualStudio.NETdocumentation.

UsingthePropertiesWindow

1. Createyourdataset.2. InthePropertieswindowselecttheSpreadcomponent.

Tosetthedatasourceforthecomponent,settheDataSourceproperty.Tosetthedatasourceforthesheet,

a. SelecttheSheetspropertyfortheSpreadcomponent.b. ClickthebuttontodisplaytheSheetViewCollectionEditor.c. Selectthesheetforwhichtosetthedatasource.d. SettheDataSourcepropertyforthatsheet.

UsingCode

1. Createyourdataset.2. SettheFpSpreadDataSource('DataSourceProperty'intheon-linedocumentation)orSheetViewDataSource('DataSourceProperty'intheon-linedocumentation)propertyequaltothedataset.

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetnamed"dbDataSet".

C#// Bind the component to the data set.fpSpread1.Sheets[0].AutoGenerateColumns = false;fpSpread1.Sheets[0].DataSource = dbDataSet;fpSpread1.Sheets[0].ColumnCount = 2;fpSpread1.Sheets[0].BindDataColumn(0, "ID");fpSpread1.Sheets[0].BindDataColumn(1, "Description");

VB' Bind the component to the data set.FpSpread1.Sheets(0).AutoGenerateColumns = FalseFpSpread1.Sheets(0).DataSource = dbDataSetFpSpread1.Sheets(0).ColumnCount = 2FpSpread1.Sheets(0).BindDataColumn(0, "ID")FpSpread1.Sheets(0).BindDataColumn(1, "Description")

Binding a Cell Range in Spread to an External Data Source

YoucanbindacellrangeinSpreadtoanexternaldatasource.Todothis,usetheSpreadDataBindingAdpater('SpreadDataBindingAdapterClass'intheon-linedocumentation)classtocreateaconnectionbetweentheSpreadcomponentandthedatasourceandusetheMapperInfo('MapperInfoClass'intheon-line

Spread Windows Forms Developer’s Guide 439

Copyright © GrapeCity, inc. All rights reserved.

Page 441: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)classtomapthecellrangetotherangeinthedatasource.

Ifyouaddorremoveacolumnfromthedatasourcewhenboundtoacellrange,theSpreadcomponentdoesnotautomaticallyupdate.

ThedatasourceandthecellrangeintheSpreadarecontrolledbytheMapperInfo('MapperInfoClass'intheon-linedocumentation)class.Theysynchronizewitheachotherviarowsynchronization.Iftheuseraddsorremovesanyrowinthecellrange,itwillaffectthedatasourceandviceversa.Iftheuseraddsanewrowrightbelowtheexistingboundcellrange,thecellrangewillexpandonerowandmaketheMapperInfo('MapperInfoClass'intheon-linedocumentation)classanddatasourceexpandandviceversa.Ifthenewrowisaddedoutsideoftheboundarea,thenitisnotaddedtotheboundrange.

BydefaulttheSpreadcomponenttriestomatchthedatatypeoftheexternaldatasourcetothecelltypeofSpread.YoucansetDataAutoCellTypes('DataAutoCellTypesProperty'intheon-linedocumentation)toFalsetopreventthis.Thefollowingtableshowsthedefaultcelltypethatisusedbasedonthetypeofdata.

DataType CellTypeBoolean Checkboxcell

DateTime Datetimecell

Double,Single,Decimal Numbercell

Int16,Int32,andsoon Numbercell

String Textcell

Other Generalcell

Formoreinformation,refertotheSpreadDataBindingAdpater('SpreadDataBindingAdapterClass'intheon-linedocumentation)classandtheMapperInfo('MapperInfoClass'intheon-linedocumentation)classintheAPIreference.

UsingCode

1. Createyourdataset.2. CreateanewSpreadDataBindingAdapterobject.3. SettheSpreadobjecttotheadapter.4. Setthesheetname.5. CreatetheMapperInfoobjectandlinkittotheadapter.6. SettheFillSpreadDataByDataSourcemethod.

Example

Thisexamplecodebindsasinglecellrangetoadatasource.Theexamplerequiresthatyoucreateadatasourceobjectnamed"dt".

C#FarPoint.Win.Spread.Data.SpreadDataBindingAdapter data = new FarPoint.Win.Spread.Data.SpreadDataBindingAdapter();

Spread Windows Forms Developer’s Guide 440

Copyright © GrapeCity, inc. All rights reserved.

Page 442: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Assign the datasource to a data tabledata.DataSource = dt;data.Spread = fpSpread1;data.SheetName = "Sheet1";data.MapperInfo = new FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1);data.FillSpreadDataByDataSource();

VB' Create an adapter.Dim data As New FarPoint.Win.Spread.Data.SpreadDataBindingAdapter' Assign the datasource to a data tabledata.DataSource = dtdata.Spread = FpSpread1data.SheetName = "Sheet1"data.MapperInfo = New FarPoint.Win.Spread.Data.MapperInfo(3, 2, 1, 1)data.FillSpreadDataByDataSource()

Binding a Cell Range in Spread as a Data Source to an External Control

YoucanbindarangeofcellsinSpreadasadatasourceforanexternalcontrolsuchasaDataGridcontrol.Thefollowingdiagramshowstheobjectsinvolved.

Thesearetheobjectsinvolved:

SpreadDataView('SpreadDataViewClass'intheon-linedocumentation)SpreadDataRowView('SpreadDataViewClass'intheon-linedocumentation)ISpreadDataViewDataFormatter('ISpreadDataViewDataFormatterInterface'intheon-linedocumentation)ISpreadDataViewMapper('ISpreadDataViewMapperInterface'intheon-linedocumentation)DefaultSpreadDataViewDataFormatter('DefaultSpreadDataViewDataFormatterClass'intheon-linedocumentation)DefaultSpreadDataViewMapper('DefaultSpreadDataViewMapperClass'intheon-linedocumentation)

CreatingaCustomFormatter

YoucancreateacustomformatterclassbyinheritingfromISpreadDataViewDataFormatter('ISpreadDataViewDataFormatterInterface'intheon-linedocumentation).

Spread Windows Forms Developer’s Guide 441

Copyright © GrapeCity, inc. All rights reserved.

Page 443: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Createtheclass.2. Assigntheclasstothedataview.

Example

Thisexamplecodecreatesacustomclass.

C#public class MySpreadDataViewDataFormatter : ISpreadDataViewDataFormatter{private SpreadDataColumn column;private SheetView sheetView;public SheetView SheetView;{get { return sheetView; }set { sheetView = value; }}public MySpreadDataViewDataFormatter(SpreadDataColumn ownerColumn,SheetView sheetView){if (ownerColumn == null){throw new ArgumentNullException("ownerColumn");}column = ownerColumn;this.SheetView = sheetView;}public object GetCellValue(Cell cell){object ret = null;try{ret = this.SheetView.GetValue(cell.Row.Index, cell.Column.Index);ret += ": Customized format";}catch{ret = " No value";}return ret;}public void SetCellValue(Cell cell, object value){this.SheetView.SetValue(cell.Row.Index, cell.Column.Index, value + ": Customized format");}}// Assign new formatterdataSet = BuildDataSet(5,5);this.spreadDataBindingAdapter1.Spread = this.fpSpread1;this.spreadDataBindingAdapter1.SheetName = this.fpSpread1.ActiveSheet.SheetName;this.spreadDataBindingAdapter1.DataSource = dataSet.Tables[0];spreadDataBindingAdapter1.MapperInfo = new MapperInfo(1, 2, 3, 4);MySpreadDataViewDataFormatter testFormatter = new MySpreadDataViewDataFormatter(this.spreadDataBindingAdapter1.SpreadDataView.Columns[2], fpSpread1.ActiveSheet);

Spread Windows Forms Developer’s Guide 442

Copyright © GrapeCity, inc. All rights reserved.

Page 444: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

this.spreadDataBindingAdapter1.SpreadDataView.Columns[2].Formatter = testFormatter;this.spreadDataBindingAdapter1.FillSpreadDataByDataSource();

CreatingaCustomMapper

YoucancreateacustommapperclassbyinheritingfromISpreadDataViewMapper('ISpreadDataViewMapperInterface'intheon-linedocumentation).

UsingCode

1. Createtheclass.2. Assigntheclasstothedataview.

Example

Thisexamplecodecreatesacustomclass.

C#public class MySpreadDataViewMapper : ISpreadDataViewMapper{...}//Assign customized Mapper for SpreadDataViewdataSet = BuildDataSet(5,5);this.spreadDataBindingAdapter1.Spread = this.fpSpread1;this.spreadDataBindingAdapter1.SheetName = this.fpSpread1.ActiveSheet.SheetName;this.spreadDataBindingAdapter1.DataSource = dataSet.Tables[0];MySpreadDataViewMapper testMapper = new MySpreadDataViewMapper ();this.spreadDataBindingAdapter1.SpreadDataView.Mapper = testMapper;spreadDataBindingAdapter1.MapperInfo = new MapperInfo(1, 2, 3, 4);this.spreadDataBindingAdapter1.FillSpreadDataByDataSource();

VBPublic Class MySpreadDataViewMapperImplements FarPoint.Win.Spread.Data.ISpreadDataViewMapper...End ClassdataSet = BuildDataSet(5, 5)Me.spreadDataBindingAdapter1.Spread = Me.fpSpread1Me.spreadDataBindingAdapter1.SheetName = Me.fpSpread1.ActiveSheet.SheetNameMe.spreadDataBindingAdapter1.DataSource = dataSet.Tables(0)Dim testMapper As New MySpreadDataViewMapper()Me.spreadDataBindingAdapter1.SpreadDataView.Mapper = testMapperspreadDataBindingAdapter1.MapperInfo = New MapperInfo(1, 2, 3, 4)Me.spreadDataBindingAdapter1.FillSpreadDataByDataSource()

Customizing Column and Field Binding

Whenasheetisboundtoadataset,columnsareassignedtodatasetfieldssequentially.Thatis,thefirstdatafieldisassignedtocolumnA,thesecondtocolumnB,andsoon.Youcanchangetheassignmentstoassignanyfieldtoanycolumn.

Forboundspreadsheets,bydefaultthespreadsheetinheritsthewidthofthecolumnsfromthedatabase.Todetermine

Spread Windows Forms Developer’s Guide 443

Copyright © GrapeCity, inc. All rights reserved.

Page 445: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

yourowncustomwidths,youwouldeitherneedtosetyourwidthafterbindingtheSpreadorsetDataAutoSizeColumns('DataAutoSizeColumnsProperty'intheon-linedocumentation)toFalseandsetyourwidth.

IfyouhavemorethanoneSpreadboundtoasingledataset,youmaywanttosettheAutoGenerateColumns('AutoGenerateColumnsProperty'intheon-linedocumentation)propertyofthesheetineachSpreadtoFalse,soSpreaddoesnotbindallthecolumns.ThenyoucansettheDataField('DataFieldProperty'intheon-linedocumentation)propertyofthecolumnsineachoftheSpreadcontrolstothefieldnamefromthedataset.Then,onlythatcolumnofthedatasetisboundtotheSpread.

UsingthePropertiesWindow

1. Createyourdataset.2. InthePropertieswindow,selecttheSpreadcomponent.3. SelecttheDataSourceproperty(fortheSpreadcomponent)orselecttheSheetspropertyandsettheDataSourceproperty,andsetitequaltothedataset.

4. Ifyouhavenotalreadydoneso,selecttheSheetspropertyfortheSpreadcomponent.5. ClickthebuttontodisplaytheSheetViewCollectionEditor.6. Clickthesheetforwhichyouwanttochangethecolumnfields.7. Setthesheet’sAutoGenerateColumnspropertytoFalse,becauseyouwanttooverridetheauto-generatedcolumnandfieldmappings.

8. Inthepropertylist,selecttheCellspropertyandclickthebuttontodisplaytheCell,Column,andRowEditor.

9. Selectthecolumnforwhichyouwanttochangethecolumnfields.10. SettheDataFieldpropertytoselectoneoftheavailablefields,orleaveitblanktomakethecolumnanunbound

column.11. ClickOKtoclosetheCell,Column,andRowEditor.12. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

1. Createyourdataset.2. SettheSheetAutoGenerateColumnpropertytofalse,becauseyouwanttooverridetheauto-generated

columnandfieldmappings.3. SettheFpSpreadobject'sorSheetobject'sDataSourcepropertyequaltothedataset.4. Foreachcolumninthesheetforwhichyouwanttomapafield,settheColumnobject'sDataFieldpropertyto

thefieldnameinthedataset.

Example

ThisexamplecodebindstheSpreadcomponenttoanexistingdataset,thensetsthefieldstouseinthefirstfourcolumns.

C#// Turn off automatic column and field mapping.fpSpread1.Sheets[0].AutoGenerateColumns = false;// Bind the component to the data set.fpSpread1.DataSource = dataSet1;// Set the fields for the columns.fpSpread1.Sheets[0].Columns[0].DataField = "Description";fpSpread1.Sheets[0].Columns[1].DataField = "ID";fpSpread1.Sheets[0].Columns[2].DataField = "LeadTime";fpSpread1.Sheets[0].Columns[3].DataField = "Price";

Spread Windows Forms Developer’s Guide 444

Copyright © GrapeCity, inc. All rights reserved.

Page 446: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VB' Turn off automatic column and field mapping.FpSpread1.Sheets(0).AutoGenerateColumns = False' Bind the component to the data set.FpSpread1.DataSource = DataSet1' Set the fields for the columns.FpSpread1.Sheets(0).Columns(0).DataField = "Description"FpSpread1.Sheets(0).Columns(1).DataField = "ID"FpSpread1.Sheets(0).Columns(2).DataField = "LeadTime"FpSpread1.Sheets(0).Columns(3).DataField = "Price"

UsingCode

1. Createyourdataset.2. CreateanewSheetViewobject.3. SettheSheetViewobject'sAutoGenerateColumnpropertytoFalse,becauseyouwanttooverridetheauto-

generatedcolumnandfieldmappings.4. SettheSheetViewobject'sDataSourcepropertyequaltothedataset.5. Foreachcolumnforwhichyouwanttomapthefields,settheSheetViewobject'sColumnsobjectDataFieldpropertytospecifythefield.

6. AssigntheSheetViewobjecttoasheetinthecomponent.

Example

ThisexamplecodecreatesaboundSheetViewobjectandmapsfourfieldstofourcolumns,thenassignsittoasheetinaSpreadcomponent.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Turn off automatic column and field mapping.newsheet.AutoGenerateColumns = false;// Bind the SheetView object to the data set.newsheet.DataSource = dataSet1;// Set the fields for the columns.newsheet.Columns[0].DataField = "Description";newsheet.Columns[1].DataField = "ID";newsheet.Columns[2].DataField = "LeadTime";newsheet.Columns[3].DataField = "Price";// Assign the SheetView object to the first sheet.fpSpread1.Sheets[0] = newsheet;

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Turn off automatic column and field mapping.newsheet.AutoGenerateColumns = False' Bind the SheetView object to the data set.newsheet.DataSource = DataSet1' Set the fields for the columns.newsheet.Columns(0).DataField = "Description"newsheet.Columns(1).DataField = "ID"

Spread Windows Forms Developer’s Guide 445

Copyright © GrapeCity, inc. All rights reserved.

Page 447: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

newsheet.Columns(2).DataField = "LeadTime"newsheet.Columns(3).DataField = "Price"' Assign the SheetView object to the first sheet.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSourcepropertyequaltothedataset.3. OpentheSpreadDesignerfortheSpreadcomponent.4. Selectthesheettabforthesheetforwhichyouwanttosetthecolumnfields.5. SettheAutoGenerateColumnpropertytoFalse,becauseyouwanttooverridetheauto-generatedcolumnandfieldmappings.

6. Selectthecolumnforwhichyouwanttosetthedatafield.7. SettheDataFieldpropertytothefieldyouwanttodisplayintheselectedcolumn.8. ContinuetoselectcolumnsandsettheirDataFieldpropertiesuntilyouhavesetallthecolumnsyouwant.You

canleavesomeofthecolumnsunboundifyouwanttodoso.9. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Binding a Combo Box to a DataReader

YoucanbindacomboboxtoaDataReader.ADataReaderletsyouaccessdatainaread-only,forward-onlywayfromadatasource.UsingaDataReaderisoftenaquickwayofreturningresults,asillustratedinthefollowingexampleforpopulatingresultsinacombobox.

Example

Thisexampleaddsdatatoacombocellfromadatasource.

C#/// Set up a connection to the database. The database name is an example.string dbpath = "c:\\reader.mdb";System.Data.OleDb.OleDbConnection dbConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + dbpath);/// Open a connection and a SELECT command.dbConn.Open();System.Data.OleDb.OleDbCommand dbCommand = new System.Data.OleDb.OleDbCommand("SELECT * FROM Table1", dbConn);/// Open a DataReader on that connection and command.System.Data.OleDb.OleDbDataReader dr = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);/// Loop through the rows returned by the reader.ArrayList al = new ArrayList();while (dr.Read()) { al.Add(dr("Data"));}/// Populate combo box with data converted to strings.string[] s;s = al.ToArray(typeof(string));FarPoint.Win.Spread.ComboBoxCellType cb = new FarPoint.Win.Spread.ComboBoxCellType();cb.Items = s;FpSpread1.ActiveSheetView.Cells(0, 0).CellType = cb;

Spread Windows Forms Developer’s Guide 446

Copyright © GrapeCity, inc. All rights reserved.

Page 448: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

/// Dispose connection.dbConn.Dispose();

VB' Set up a connection to the database. The database name is an example.Dim dbpath As String = "c:\reader.mdb"Dim dbConn As New System.Data.OleDb.OleDbConnection( _"Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbpath)' Open a connection and a SELECT command.dbConn.Open()Dim dbCommand As New System.Data.OleDb.OleDbCommand( _"SELECT * FROM Table1", dbConn)' Open a DataReader on that connection and command.Dim dr As System.Data.OleDb.OleDbDataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)' Loop through the rows returned by the reader.Dim al As New ArrayList()While dr.Read() al.Add(dr("Data"))End While' Populate combo box with data converted to strings.Dim s As String()s = al.ToArray(GetType(String))Dim cb As New FarPoint.Win.Spread.ComboBoxCellTypecb.Items = sFpSpread1.ActiveSheetView.Cells(0, 0).CellType = cb' Dispose connection.dbConn.Dispose()

Adding to Bound Data

Youcanaddrowsorcolumnstobounddata.

Thetasksyoucanperformtoaddrowsorcolumnsinclude:

AddingaRowtoaBoundSheetAddinganUnboundRowtoaBoundSheetAddinganUnboundColumntoaBoundSheet

Adding a Row to a Bound Sheet

Onceyoubindasheettoadatasetyoumightwanttoaddanunboundrowtocontainadditionaldata.TherowcouldthenbeboundusingtheAddRowToDataSource('AddRowToDataSourceMethod'intheon-linedocumentation)method.

ThefollowingfigureshowsasheetinaSpreadcomponentthatcontainsdatafromadatasetandanunboundrowatthebottomthatcalculatestheaverages.

Spread Windows Forms Developer’s Guide 447

Copyright © GrapeCity, inc. All rights reserved.

Page 449: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Createyourdataset.2. SettheFpSpreadobject'sDataSource('DataSourceProperty'intheon-linedocumentation)property

equaltothedataset.3. CalltheSheetViewobject'sAddUnboundRows('AddUnboundRowsMethod'intheon-linedocumentation)methodtospecifywheretoaddtheunboundrow.

4. Setpropertiesfortheunboundrow.5. SettheSheetViewobject'sAddRowToDataSource('AddRowToDataSourceMethod'intheon-linedocumentation)methodifyouwanttoaddtherowtothedatasource.

Example

ThisexamplecodecreatesaboundFpSpreadobjectandaddsanunboundrowtoit.

C#DataSet ds = new DataSet();DataTable emp = new DataTable("Name");emp.Columns.Add("LastName");emp.Columns.Add("GPA (Single)", typeof(decimal));emp.Columns.Add("GPA (Double)", typeof(decimal));emp.Rows.Add(new Object[] { "Shorter", "4.12", "4.12" });emp.Rows.Add(new Object[] { "Williams", "2.00", "2.00" });emp.Rows.Add(new Object[] { "Zacheius", "3.62", "3.62" });ds.Tables.Add(emp);fpSpread1.DataSource = ds;fpSpread1.ActiveSheet.AddUnboundRows(3, 1);fpSpread1.ActiveSheet.Cells[3, 0].Text = "Average";fpSpread1.ActiveSheet.Cells[3, 1].Formula = "AVERAGE(B1:B3)";fpSpread1.ActiveSheet.Cells[3, 2].Formula = "AVERAGE(C1:C3)";//fpSpread1.ActiveSheet.AddRowToDataSource(3, true);

VBDim ds = New DataSet()Dim emp As New DataTable("Name")emp.Columns.Add("LastName")emp.Columns.Add("GPA (Single)", GetType(Decimal))emp.Columns.Add("GPA (Double)", GetType(Decimal))emp.Rows.Add(New Object() {"Shorter", "4.12", "4.12"})emp.Rows.Add(New Object() {"Williams", "2.00", "2.00"})emp.Rows.Add(New Object() {"Zacheius", "3.62", "3.62"})ds.Tables.Add(emp)FpSpread1.DataSource = dsFpSpread1.ActiveSheet.AddUnboundRows(3, 1)FpSpread1.ActiveSheet.Cells(3, 0).Text = "Average"FpSpread1.ActiveSheet.Cells(3, 1).Formula = "AVERAGE(B1:B3)"FpSpread1.ActiveSheet.Cells(3, 2).Formula = "AVERAGE(C1:C3)"'FpSpread1.ActiveSheet.AddRowToDataSource(3, True)

Adding an Unbound Row to a Bound Sheet

Onceyoubindasheettoadatasetyoumightwanttoaddanunboundrowtocontainadditionaldata.

Spread Windows Forms Developer’s Guide 448

Copyright © GrapeCity, inc. All rights reserved.

Page 450: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThefollowingfigureshowsasheetinaSpreadcomponentthatcontainsdatafromadatasetandanunboundrowatthebottomthatcalculatestheaverages.

UsingaShortcut

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSource('DataSourceProperty'intheon-linedocumentation)propertyequaltothedataset.

3. CalltheSheetobject'sAddUnboundRows('AddUnboundRowsMethod'intheon-linedocumentation)methodtospecifywheretoaddtheunboundrow.

4. Setpropertiesfortheunboundrow.

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetthenaddsanunboundrow.

C#// Bind the component to the data set.fpSpread1.DataSource = dbDataSet;// Add an unbound row.fpSpread1.Sheets[0].AddUnboundRows(20, 1);

VB' Bind the component to the data set.FpSpread1.DataSource = dbDataSet' Add an unbound row.FpSpread1.Sheets(0).AddUnboundRows(20, 1)

UsingCode

1. Createyourdataset.2. CreateanewSheetViewobject.3. SettheSheetViewobject'sDataSource('DataSourceProperty'intheon-linedocumentation)

propertyequaltothedataset.4. CalltheSheetViewobject'sAddUnboundRows('AddUnboundRowsMethod'intheon-linedocumentation)methodtospecifywheretoaddtheunboundrow.

5. Setpropertiesfortheunboundrow.6. AssigntheSheetViewobjecttoasheetinthecomponent.

Example

ThisexamplecodecreatesaboundSheetViewobjectandaddsanunboundrowtoit,thenassignsittoasheetina

Spread Windows Forms Developer’s Guide 449

Copyright © GrapeCity, inc. All rights reserved.

Page 451: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Spreadcomponent.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Bind the SheetView object to the data set.newsheet.DataSource = dataSet1;// Add an unbound row.newsheet.AddUnboundRows(20, 1);// Assign the SheetView object to the first sheet.fpSpread1.Sheets[0] = newsheet;

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Bind the SheetView object to the data set.newsheet.DataSource = DataSet1' Add an unbound row.newsheet.AddUnboundRows(20, 1)' Assign the SheetView object to the first sheet.FpSpread1.Sheets(0) = newsheet

Adding an Unbound Column to a Bound Sheet

Onceyoubindasheettoadatasetyoumightwanttoaddanunboundcolumntocontainadditionaldata.

YoucanaddanunboundcolumntotheSpreadcontrolbyincreasingtheColumnCount('ColumnCountProperty'intheon-linedocumentation)propertyafterthecontrolisbound.AnotheroptionistousetheDataField('DataFieldProperty'intheon-linedocumentation)propertytobindspecificcolumnsandleavetheDataField('DataFieldProperty'intheon-linedocumentation)propertyunsetforthecolumnsyoudonotwanttobind.

UsingCode

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSource('DataSourceProperty'intheon-linedocumentation)propertyequaltothedataset.

3. SettheColumnCount('ColumnCountProperty'intheon-linedocumentation)propertyforthesheet.

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetandthensetsthecolumncount.

C#// Bind the component to the data set.fpSpread1.DataSource = dbDataSet;// If this datasource has 19 columns, set the count to 20.fpSpread1.Sheets[0].ColumnCount=20;

VB' Bind the component to the data set.FpSpread1.DataSource = dbDataSet' If this datasource has 19 columns, set the count to 20.

Spread Windows Forms Developer’s Guide 450

Copyright © GrapeCity, inc. All rights reserved.

Page 452: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).ColumnCount=20

Customizing Data Binding

Youcancustomizethedisplayincludingheaders,celltypes,andhierarchicaldisplay.

Thetasksyoucanperformforcustomizingthedisplayofbounddatainclude:

CustomizingColumnHeadersforBoundSheetsCustomizingCellTypesforBoundSheetsWorkingwithHierarchicalDataDisplayCreatingaHierarchicalDisplayManuallyCreatingCustomHierarchyIcons

Customizing Column Headers for Bound Sheets

Bydefault,sheetsdisplaythefieldnamesinthecolumnheaderswhenboundtoadataset.Ifyouprefer,youcanchangethetexttodisplaycustomcolumnnames.

UsingthePropertiesWindow

1. Createyourdataset.2. InthePropertieswindow,selecttheSpreadcomponent.3. SelecttheDataSourceproperty(fortheSpreadcomponent)orselecttheSheetspropertyandsettheDataSourceproperty,andsetitequaltothedataset.

4. Ifyouhavenotalreadydoneso,selecttheSheetspropertyfortheSpreadcomponent.5. ClickthebuttontodisplaytheSheetViewCollectionEditor.6. Clickthesheetforwhichyouwanttochangethecolumnheadings.7. Ifyouareprovidingcustomtextforeverycolumnheader,settheDataAutoHeadingspropertytoFalsesothesheetdoesnotdisplaythefieldnamesfromthedatasetasthecolumnheadertext.

8. Inthepropertylist,selecttheCellspropertyandclickthebuttontodisplaytheCell,Column,andRowEditor.

9. Selectthecolumnforwhichyouwanttochangethecolumnheadings.10. SettheLabelpropertytothenewtextyouwantintheheading.11. Repeatsteps8and9foreachcolumnforwhichyouwanttosetthecolumnheading.12. ClickOKtoclosetheCell,Column,andRowEditor.13. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSourcepropertyequaltothedataset.3. Ifyouareprovidingcustomtextforeverycolumnheader,settheSheetobject'sDataAutoHeadingsproperty

toFalsesothesheetdoesnotdisplaythefieldnamesfromthedatasetasthecolumnheadertext.4. SettheTextpropertyoftheColumnHeadercellstospecifythecustomtext.

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetthencustomizesthefirstcolumnheader.

Spread Windows Forms Developer’s Guide 451

Copyright © GrapeCity, inc. All rights reserved.

Page 453: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#// Bind the component to the data set.fpSpread1.DataSource = dbDataSet;// Set custom text in the first column header.fpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "Student ID";

VB' Bind the component to the data set.FpSpread1.DataSource = dbDataSet' Set custom text in the first column header.FpSpread1.Sheets(0).ColumnHeader.Cells(0, 0).Text = "Student ID"

UsingCode

1. Createyourdataset.2. CreateanewSheetViewobject.3. SettheSheetViewobject'sDataSourcepropertyequaltothedataset.4. Ifyouareprovidingcustomtextforeverycolumnheader,settheSheetViewobject'sDataAutoHeadings

propertytoFalsesothesheetdoesnotdisplaythefieldnamesfromthedatasetasthecolumnheadertext.5. SettheTextpropertyforColumnHeadercellstospecifythecustomtext.6. AssigntheSheetViewobjecttoasheetinthecomponent.

Example

ThisexamplecodecreatesaboundSheetViewobjectandcustomizesthetextinthefirstcolumnheadercell,thenassignsittoasheetinaSpreadcomponent.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Bind the SheetView object to the data set.newsheet.DataSource = dataSet1;// Change the column header text in the first header cell.newsheet.ColumnHeader.Cells[0, 0].Text = "Student ID";// Assign the SheetView object to the first sheet.fpSpread1.Sheets[0] = newsheet;

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Bind the SheetView object to the data set.newsheet.DataSource = DataSet1' Change the column header text in the first header cell.newsheet.ColumnHeader.Cells(0, 0).Text = "Student ID"' Assign the SheetView object to the first sheet.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSourcepropertyequaltothedataset.

Spread Windows Forms Developer’s Guide 452

Copyright © GrapeCity, inc. All rights reserved.

Page 454: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

3. OpentheSpreadDesignerfortheSpreadcomponent.4. Selectthesheettabforthesheetforwhichyouwanttosetthecustomheadertext.5. Ifyouareprovidingcustomtextforeverycolumnheader,settheDataAutoHeadingspropertytoFalsesothesheetdoesnotdisplaythefieldnamesfromthedatasetasthecolumnheadertext.

6. Selectthecolumnforwhichyouwanttosetcustomheadertext,thenright-clickandchooseHeaders.7. IntheHeaderEditor,double-clicktheheaderforwhichyouwanttodisplaycustomtext.8. Editthetexttobethecustomtextyouwant,andthenpressEntertostopediting.9. Whenyouhaveeditedalltheheadertextyouwanttoedit,clickOKtoclosetheHeaderEditor,thenclickYes

toapplyyourchangestotheselection.10. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing Cell Types for Bound Sheets

Bydefault,whentheSpreadcomponentorsheetisboundtoadataset,itsetsthecelltypesfortheboundrowsbasedonthedatainthedataset.Youcanturnoffthisautomaticcelltypeassignmentandassigncelltypesyourself.

UsingthePropertiesWindow

1. Createyourdataset.2. InthePropertieswindow,selecttheSpreadcomponent.3. SelecttheDataSourceproperty(fortheSpreadcomponent)orselecttheSheetspropertyandsettheDataSourceproperty,andsetitequaltothedataset.

4. Ifyouhavenotalreadydoneso,selecttheSheetspropertyfortheSpreadcomponent.5. ClickthebuttontodisplaytheSheetViewCollectionEditor.6. Clickthesheetforwhichyouwanttochangethecelltypes.7. SettheDataAutoCellTypespropertytoFalsesothesheetdoesnotautomaticallyassignthecelltypesforthecolumns.

8. Inthepropertylist,selecttheColumnspropertyandclickthebuttontodisplaytheCell,Column,andRowEditor.

9. Selectthecolumnforwhichyouwanttochangethecelltype.10. SettheCellTypepropertytothecelltypeyouwanttouseforthecolumn.11. Repeatsteps8and9foreachcolumnforwhichyouwanttosetthecelltype.12. ClickOKtoclosetheCell,Column,andRowEditor.13. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSource('DataSourceProperty'intheon-linedocumentation)propertyequaltothedataset.

3. SettheSheetobject’sDataAutoCellTypes('DataAutoCellTypesProperty'intheon-linedocumentation)propertytoFalsesothesheetdoesnotautomaticallyassignthecelltypesforthecolumns.

4. SettheColumnobject'sCellType('CellTypeProperty'intheon-linedocumentation)propertytospecifythecelltypeforeachcolumn.

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetthenassignsthecelltypesforitsthreecolumns.

C#

Spread Windows Forms Developer’s Guide 453

Copyright © GrapeCity, inc. All rights reserved.

Page 455: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

// Bind the component to the data set.fpSpread1.DataSource = dbDataSet;// Turn off automatic cell type assignment.fpSpread1.Sheets[0].DataAutoCellTypes = false;// Set the first column as general cell type.FarPoint.Win.Spread.CellType.GeneralCellType generalct = new FarPoint.Win.Spread.CellType.GeneralCellType();fpSpread1.Sheets[0].Columns[0].CellType = generalct;// Set the second column as number cell type.FarPoint.Win.Spread.CellType.NumberCellType numberct = new FarPoint.Win.Spread.CellType.NumberCellType();fpSpread1.Sheets[0].Columns[1].CellType = numberct;// Set the third column as currency cell type.FarPoint.Win.Spread.CellType.CurrencyCellType currct = new FarPoint.Win.Spread.CellType.CurrencyCellType();fpSpread1.Sheets[0].Columns[2].CellType = currct;

VB' Bind the component to the data set.FpSpread1.DataSource = dbDataSet' Turn off automatic cell type assignment.FpSpread1.Sheets(0).DataAutoCellTypes = False' Set the first column as general cell type.Dim generalct As New FarPoint.Win.Spread.CellType.GeneralCellType()FpSpread1.Sheets(0).Columns(0).CellType = generalct' Set the second column as number cell type.Dim numberct As New FarPoint.Win.Spread.CellType.NumberCellType()FpSpread1.Sheets(0).Columns(1).CellType = numberct' Set the third column as currency cell type.Dim currct As New FarPoint.Win.Spread.CellType.CurrencyCellType()FpSpread1.Sheets(0).Columns(2).CellType = currct

UsingCode

1. Createyourdataset.2. CreateanewSheetViewobject.3. SettheSheetViewobject'sDataSourcepropertyequaltothedataset.4. Ifyouareprovidingcustomtextforeverycolumnheader,settheSheetViewobject'sDataAutoHeadings

propertytoFalsesothesheetdoesnotdisplaythefieldnamesfromthedatasetasthecolumnheadertext.5. SettheTextpropertyoftheColumnHeadercellstospecifythecustomtext.6. AssigntheSheetViewobjecttoasheetinthecomponent.

Example

ThisexamplecodecreatesaboundSheetViewobjectandcustomizesthetextinthefirstcolumnheadercell,thenassignsittoasheetinaSpreadcomponent.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet = new FarPoint.Win.Spread.SheetView();// Bind the SheetView object to the data set.newsheet.DataSource = dataSet1;// Change the column header text in the first header cell.

Spread Windows Forms Developer’s Guide 454

Copyright © GrapeCity, inc. All rights reserved.

Page 456: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

newsheet.ColumnHeader.Cells[0, 0].Text = "Student ID";// Assign the SheetView object to the first sheet.fpSpread1.Sheets[0] = newsheet;

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Bind the SheetView object to the data set.newsheet.DataSource = DataSet1' Change the column header text in the first header cell.newsheet.ColumnHeader.Cells(0, 0).Text = "Student ID"' Assign the SheetView object to the first sheet.FpSpread1.Sheets(0) = newsheet

UsingtheSpreadDesigner

1. Createyourdataset.2. SettheFpSpreadobject'sorSheetobject'sDataSourcepropertyequaltothedataset.3. OpentheSpreadDesignerfortheSpreadcomponent.4. Selectthesheettabforthesheetforwhichyouwanttosetthecelltypes.5. SettheDataAutoCellTypespropertytoFalsesothesheetdoesnotautomaticallyassignthecelltypesforthecolumns.

6. Selectthecolumnforwhichyouwanttosetthecelltype.7. Inthepropertylist,settheCellTypepropertytothecelltypeyouwanttouseforthecolumn.8. Repeatsteps6and7foreachcolumnforwhichyouwanttosetthecelltype.9. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Working with Hierarchical Data Display

Sheetscandisplayrelationaldata,suchasfromarelationaldatabase,inhierarchicalviews.Thefollowingfigureshowsanexampleofsuchahierarchicalview,whichusesthedatabaseprovidedforthetutorials.Theusercanexpandorcollapsethelevelsofthehierarchybyclickingontheexpandandcollapsehierarchyicons(plusandminussigns).

Spread Windows Forms Developer’s Guide 455

Copyright © GrapeCity, inc. All rights reserved.

Page 457: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Tosetuphierarchicaldatadisplay,youfirstcreateadatasettoholdtherelationaldata,thendefinetherelationsbetweenthedata,andfinally,settheSpreadcomponenttodisplaythedataasyouwant.Youcancustomizethecelltype,thecolors,theheaders,andotheraspectsoftheappearanceofthechildview.

Youcanbindtoahierarchicalcollection.

Ifyousetaskinforasheet,youmustapplythatskintotheparentsheetandallthechildsheets.Formoreinformationaboutskins,refertoApplyingaSkintoaSheet.

Youcansetthedisplayofthehierarchy,whichSpreadtreatsaschildviewsoftheoverallparentsheet.YoucangetinformationaboutchildviewsusingthesepropertiesoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

ChildRelationCount('ChildRelationCountProperty'intheon-linedocumentation)GetChildDataModel('GetChildDataModelMethod'intheon-linedocumentation)GetChildRelation('GetChildRelationMethod'intheon-linedocumentation)GetChildSheets('GetChildSheetsMethod'intheon-linedocumentation)GetChildView('GetChildViewMethod'intheon-linedocumentation)GetChildVisible('GetChildVisibleMethod'intheon-linedocumentation)ParentRelationName('ParentRelationNameProperty'intheon-linedocumentation)

Youcancatchwhentheenduserisexpandingorcollapsingthechildview.Formoreinformation,seetheExpand('ExpandEvent'intheon-linedocumentation)eventandtheChildViewCreated('ChildViewCreatedEvent'intheon-linedocumentation)event.YoucandetermineiftherowisexpandableusingtheGetRowExpandable('GetRowExpandableMethod'intheon-linedocumentation)andSetRowExpandable('SetRowExpandableMethod'intheon-linedocumentation)methods,andiftherowisexpandedusingtheIsRowExpanded('IsRowExpandedMethod'intheon-linedocumentation)method.

IfyouneedtosetpropertiesonthechildSpreadView,thebestplacetoputcodetodothatisintheChildWorkbookCreatedevent.ThateventfireswhenachildSpreadViewhasbeencreated.TheChildViewCreatedeventfiresafterthechildSheetViewhasbeencreated,butthechildSpreadViewdoesnotgetcreateduntilafterward,anditdoesnotgetcreatedunlessthechildsheetisvisibleinthecomponent(sothatthelayoutcalculationsarefaster).

Ratherthandeletingchildsheetsfromaparentsheet,whenworkingwithbounddata,youwoulddeletetherelationinyourdatasourcetodeletethatchildsheetfromSpread.

Thefollowingsamplecodeassumesyouwanttoremovethefirstchildsheetreturned,inthisexample,alist(0):

CodeDim alist As ArrayList = FpSpread1.Sheets(0).GetChildSheets()Dim sv As FarPoint.Win.Spread.SheetView = alist(0)Dim ds As DataSet = CType(FpSpread1.DataSource, DataSet)ds.Relations.Remove(sv.ParentRelationName)

Formoreinformationaboutprintingahierarchicalsheet,refertoPrintingaChildViewofaHierarchicalDisplay.

ForasmallexampleseetheTutorial:BindingtoaCorporateDatabase(OlderVisualStudio).

UsingaShortcut

1. Createyourdataset.2. Setupthedatarelationsbetweenthedatacomingfromthedataset,forexample,betweentablescomingfroma

relationaldatabase.3. SettheDataSourcepropertyoftheFpSpreadortheSheetViewobjectequaltothedataset.4. ProvidecodeintheChildViewCreatedeventoftheSpreadcomponentfordisplayingtheparentandchild

viewsofthedata.

Spread Windows Forms Developer’s Guide 456

Copyright © GrapeCity, inc. All rights reserved.

Page 458: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

ThisexamplecodebindstheSpreadcomponenttoadatasetthatcontainsmultiplerelatedtablesfromadatabase,andsetsupthecomponenttodisplayhierarchicalviews.Thiscodeexampleusesthedatabaseprovidedforthetutorials(databind.mdb).Ifyouperformedthedefaultinstallation,thedatabasefileisin\ProgramFiles\GrapeCity\SpreadStudio9\Docs\WindowsForms\TutorialFiles.

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Call subroutines to set up data and format the Spread component InitData() FormatSpread()End Sub

Private Sub InitData()Dim con As New OleDb.OleDbConnection()Dim cmd As New OleDb.OleDbCommand()Dim da As New OleDb.OleDbDataAdapter()Dim ds As New DataSet()Dim dt As DataTable

con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ProgramFiles (x86)\ComponentOne\Spread Studio 9\Docs\Windows Forms\TutorialFiles\databind.mdb"con.Open()With cmd.Connection = con.CommandType = CommandType.TableDirect.CommandText = "Categories"End Withda.SelectCommand = cmdda.Fill(ds, "Categories")cmd.CommandText = "Products"da.SelectCommand = cmdda.Fill(ds, "Products")cmd.CommandText = "Inventory Transactions"da.SelectCommand = cmdda.Fill(ds, "Inventory Transactions")ds.Relations.Add("Root", ds.Tables("Categories").Columns("CategoryID"), ds.Tables("Products").Columns("CategoryID"))ds.Relations.Add("Secondary", ds.Tables("Products").Columns("ProductID"), ds.Tables("Inventory Transactions").Columns("TransactionID"))FpSpread1.DataSource = dsEnd Sub

Private Sub FormatSpread()With FpSpread1.Sheets(0).ColumnHeader.Rows(0).Height = 30.Columns(0).Visible = FalseEnd WithEnd Sub

Private Sub FpSpread1_ChildViewCreated(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.ChildViewCreatedEventArgs) HandlesFpSpread1.ChildViewCreatedDim dateType As New FarPoint.Win.Spread.CellType.DateTimeCellType()

Spread Windows Forms Developer’s Guide 457

Copyright © GrapeCity, inc. All rights reserved.

Page 459: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

If e.SheetView.ParentRelationName = "Root" ThenWith e.SheetView.DataAutoCellTypes = False.DataAutoSizeColumns = False.ColumnHeader.Rows(0).Height = 30.Columns(0).Visible = False.Columns(3).Visible = False.Columns(4).Visible = False.Columns(1).Width = 200.Columns(2).Width = 185.Columns(6).Width = 85.Columns(7).Width = 80.Columns(8).Width = 80.Columns(5).CellType = New FarPoint.Win.Spread.CellType.CurrencyCellType().Columns(7).CellType = New FarPoint.Win.Spread.CellType.CheckBoxCellType()End WithElseWith e.SheetView.DataAutoCellTypes = False.DataAutoSizeColumns = False.ColumnHeader.Rows(0).Height = 30.Columns(0).Visible = False.Columns(2).Visible = False.Columns(3).Visible = False.Columns(4).Visible = False.Columns(7).Visible = False.Columns(8).Visible = False.Columns(9).Visible = False.Columns(1).Width = 100.Columns(6).Width = 80.Columns(5).CellType = New FarPoint.Win.Spread.CellType.CurrencyCellType()dateType.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDate.Columns(1).CellType = dateType'Add a total column.ColumnCount = .ColumnCount + 1.ColumnHeader.Cells(0, .ColumnCount - 1).Value = "Total".Columns(.ColumnCount - 1).CellType = New FarPoint.Win.Spread.CellType.CurrencyCellType().Columns(.ColumnCount - 1).Formula = "F1*G1"End WithEnd If

End Sub

UsingaShortcut

1. Createyourdataset.2. Setupthedatarelationsbetweenthedatacomingfromthedataset,forexample,betweentablescomingfroma

relationaldatabase.3. SettheFpSpreadobjectortheSheetobjectDataSourcepropertyequaltothedataset.4. ProvidecodeintheFpSpreadChildViewCreatedeventfordisplayingtheparentandchildviewsofthedata.

Example

ThisexamplecodebindstheSpreadcomponenttoahierarchicalcollection.

Spread Windows Forms Developer’s Guide 458

Copyright © GrapeCity, inc. All rights reserved.

Page 460: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#public class Score{private string classname;private string grade;public string ClassName{get { return classname; }set { classname = value; }}public string Grade{get { return grade; }set { grade = value; }}}

public class Student{private string name;private string id;private ArrayList score = new ArrayList();public string Name{get { return name; }set { name = value; }}public string Id{get { return id; }set { id = value; }}public ArrayList Score{get { return score; }}}

private void Form1_Load(object sender, System.EventArgs e){ArrayList list = new ArrayList();Student s = new Student();s.Name = "John Smith";s.Id = "100001";Score sc = new Score();sc.ClassName = "math";sc.Grade = "A";s.Score.Add(sc);sc = new Score();sc.ClassName = "English";sc.Grade = "A";s.Score.Add(sc);list.Add(s);s = new Student();s.Name = "David Black";s.Id = "100002";

Spread Windows Forms Developer’s Guide 459

Copyright © GrapeCity, inc. All rights reserved.

Page 461: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

sc = new Score();sc.ClassName = "math";sc.Grade = "B";s.Score.Add(sc);sc = new Score();sc.ClassName = "English";sc.Grade = "A";s.Score.Add(sc);list.Add(s);fpSpread1_Sheet1.DataSource = list;}

VBPublic Class ScorePrivate classn as StringPrivate grade As StringPublic Property ClassName() As StringGetReturn classnEnd GetSet(ByVal Value As String)classn = ValueEnd SetEnd Property

Public Property Grades() As StringGetReturn gradeEnd GetSet(ByVal Value As String)grade = ValueEnd SetEnd PropertyEnd Class

Public Class studentPrivate name As StringPrivate id As StringPrivate sco As ArrayList = New ArrayList()Public Property names() As StringGetReturn nameEnd GetSet(ByVal Value As String)name = ValueEnd SetEnd Property

Public Property ids() As StringGetReturn idEnd GetSet(ByVal Value As String)id = ValueEnd SetEnd Property

Spread Windows Forms Developer’s Guide 460

Copyright © GrapeCity, inc. All rights reserved.

Page 462: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Public ReadOnly Property score() As ArrayListGetReturn scoEnd GetEnd PropertyEnd Class

'Form LoadDim list As ArrayList = New ArrayList()Dim s As student = New student()s.names = "John Smith"s.ids = "100001"Dim sc As Score = New Score()sc.ClassName = "math"sc.Grades = "A"s.Score.Add(sc)sc = New Score()sc.ClassName = "English"sc.Grades = "A"s.Score.Add(sc)list.Add(s)s = New student()s.names = "David Black"s.ids = "100002"sc = New Score()sc.ClassName = "math"sc.Grades = "B"s.Score.Add(sc)sc = New Score()sc.ClassName = "English"sc.Grades = "A"s.Score.Add(sc)list.Add(s)FpSpread1_Sheet1.DataSource = list

Creating a Hierarchical Display Manually

Youcanmanually(programmatically)createahierarchicaldisplayasshownintheexamplebelow.Theparentisthehigherlevelofthehierarchyandthechildisthelowerlevel.

Example

ThisexamplecreatestwocustomSheetViewobjects:oneastheparentandoneasthechild.Intheparentsheet,theexampleoverridestheChildRelationCount('ChildRelationCountProperty'intheon-linedocumentation)propertyandGetChildView('GetChildViewMethod'intheon-linedocumentation)andFindChildView('FindChildViewMethod'intheon-linedocumentation)methods.TheChildRelationCountishowmanyrelationsbetweenthisobjectandchildrenobjects(usuallythisisone).

TheGetChildViewisusedtogetthechildsheet.ItcallsFindChildViewtoseeifthesheetisalreadycreated.Ifitis,thenusethatsheet.Ifitisnot,createanewchildsheet.

TheSheetName('SheetNameProperty'intheon-linedocumentation)propertyofthechildSheetViewdetermineswhichparentrowitisassignedto.

OverridetheParentRowIndex('ParentRowIndexProperty'intheon-linedocumentation)propertyinthe

Spread Windows Forms Developer’s Guide 461

Copyright © GrapeCity, inc. All rights reserved.

Page 463: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

childSheetViewtoreturntherownumberthatchildisassignedto.TheSheetNameincreatingthissheetdeterminesthisnumber.

VB...Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets.Clear() FpSpread1.Sheets.Add(New customSheet) FpSpread1.Sheets(0).RowCount = 10 Dim i As Integer For i = 0 To 9 If i <> 1 Then FpSpread1.Sheets(0).SetRowExpandable(i, False) End If Next iEnd SubEnd Class

Public Class customSheetInherits FarPoint.Win.Spread.SheetView

Public Overrides ReadOnly Property ChildRelationCount() As Integer Get Return 1 End Get End Property

Public Overrides Function GetChildView(ByVal row As Integer, ByVal relationIndex As Integer) As FarPoint.Win.Spread.SheetView Dim child As customChild = CType(FindChildView(row, 0), customChild) If Not (child Is Nothing) Then Return child child = New customChild child.RowCount = 5 child.Parent = Me child.SheetName = row.ToString ChildViews.Add(child) Return child End Function

Public Overrides Function FindChildView(ByVal row As Integer, ByVal relationIndex As Integer) As FarPoint.Win.Spread.SheetView Dim id As String = row.ToString Dim View As FarPoint.Win.Spread.SheetView For Each View In ChildViews If View.SheetName = id Then Return View Next Return Nothing End FunctionEnd Class

Public Class customChildInherits FarPoint.Win.Spread.SheetView Public Overrides ReadOnly Property ParentRowIndex() As Integer Get Return CInt(SheetName) End Get

Spread Windows Forms Developer’s Guide 462

Copyright © GrapeCity, inc. All rights reserved.

Page 464: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

End PropertyEnd Class

Creating Custom Hierarchy Icons

YoucancustomizetheiconsusedforexpandingandcollapsingthehierarchyinahierarchicaldisplaybyusingtheGetImage('GetImageMethod'intheon-linedocumentation)andSetImage('SetImageMethod'intheon-linedocumentation)methodsintheSpreadView('SpreadViewClass'intheon-linedocumentation)class,whichisdescribedinCustomizingtheUserInterfaceImages.

Anexampleofhowthedefaulthierarchyicons,asimpleplussignandminussign,appearisshownhere.

Formoreinformationaboutthehierarchicaldisplay,refertotheWorkingwithHierarchicalDataDisplay.

Tutorial: Binding to a Corporate Database (Older Visual Studio)

ThefollowingtutorialwalksyouthroughcreatingaprojectandbindingtheSpreadcontroltoadatabase.

Inthistutorial,themajorstepsare:

Step1:AddingSpreadtoaDataBindingProjectStep2:SettinguptheDatabaseConnectionStep3:SpecifyingtheDatatoUseStep4:CreatingtheDataSetStep5:BindingSpreadtotheDatabaseStep6:ImprovingtheDisplaybyChangingtheCellType

Step 1: Adding Spread to a Data Binding Project

1. StartanewVisualStudio.NETproject.2. Nametheprojectdatabind.3. Nametheformfileintheprojectbinding.cs(or.vb).4. AddtheFpSpreadcomponenttoyourproject,andthenplacethecomponentontheform.

IfyoudonotknowhowtoaddtheFpSpreadcomponenttotheproject,completethestepsinAddingaComponenttoaProject

Step 2: Setting up the Database Connection

Youmusttelltheprojectwhichdatabaseyouwanttouse.Inthisstep,youwilladdaOleDbConnectioncontroltoyourform,andtellitthenameofthedatabasetouse.

Spread Windows Forms Developer’s Guide 463

Copyright © GrapeCity, inc. All rights reserved.

Page 465: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. IftheToolboxisnotdisplayed,fromtheViewmenuchooseToolbox.2. ClicktheDatatabtodisplaytheavailabledatacontrols.3. Double-clicktheOleDbConnectioncontroltoaddittoyourform.

TheOleDbConnectioncontrolisaddedtoyourform,inanewareacreatedbelowthevisibleareaoftheform.Thedatacontrolsyoucreateinthistutorialwillallbeplacedinthisarea,insteadofinthevisibleareaoftheform.

4. PressF4todisplaythePropertieswindowfortheOleDbConnectioncontrol.5. InthePropertieswindow,changethenameofthecontroltodbConnect.6. InthePropertieswindow,clicktheConnectionStringproperty.7. Clickthedownarrowdisplayedontherightsideofthesettingarea,thenselectNewConnectionfromthedrop-downlist.TheDataLinkPropertiesdialogisdisplayed.

8. ClicktheProvidertab,andthenselectMicrosoftJet4.0OLEDBProviderfromthelist.9. ClickNext.10. NexttotheSelectorenteradatabasenamebox,clicktheBrowsebutton.11. BrowsetoC:\ProgramFiles(x86)\GrapeCity\SpreadStudio9\Docs\Windows

Forms\TutorialFiles\databind.mdbandthenchooseOpen.12. ClicktheTestConnectionbutton.13. Ifyoudonotreceiveamessagestatingthe"Testconnectionsucceeded"retrysteps6through12.14. Ifyoureceivedthemessage"Testconnectionsucceeded,"yourconnectioniscomplete.ClickOKtoclosethe

DataLinkPropertiesdialog.

Step 3: Specifying the Data to Use

Nowthatyouhavespecifiedthedatabasetouse,youneedtoretrievetherecordsfromthedatabasetableyouwanttodisplayinyourSpreadcontrol.Todothis,youwillusetheOleDbDataAdaptercontrol.

1. IftheToolboxisnotdisplayed,fromtheViewmenuchooseToolbox.2. ClicktheDatatabtodisplaytheavailabledatacontrols.3. Double-clicktheOleDbDataAdaptercontroltoaddittoyourform.

TheOleDbDataAdaptercontrolisaddedintheareabelowthevisibleareaoftheform.TheDataAdapterConfigurationWizardappears.

4. ChooseNexttobegincompletingthewizard.5. IntheChooseYourDataConnectiondialog,underWhichdataconnectionshouldthedataadapteruse?selecttheconnectionyoucreatedinStep2fromthedrop-downlist.ThenchooseNext.

6. IntheChooseaQueryTypedialog,selectUseSQLstatementsandthenchooseNext.7. IntheGeneratetheSQLstatementsdialog,chooseQueryBuilder.TheAddTabledialogappearstoletyouspecifythetabletouseinthedatabase.

8. SelecttheProductstablefromthelistandchooseAdd,thenchooseClose.9. IntheQueryBuilderdialog,theProducttableappearsinawindow,withalistoftheavailablefieldsinthe

table.Selectthefollowingfields:LeadTimeProductDescriptionProductNameUnitPriceProductID

10. TheQueryBuildercreatesyourSQLqueryinthestatusbox.Yourdialogshouldlooklikethis:

Spread Windows Forms Developer’s Guide 464

Copyright © GrapeCity, inc. All rights reserved.

Page 466: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

11. ChooseOKtoclosetheQueryBuilderdialog,thenchooseNextinthewizard.12. Thewizardsummarizesyourchoices.ChooseFinishtocompletethewizard.13. PressF4todisplaythePropertieswindowfortheOleDbDataAdaptercontrol.14. InthePropertieswindow,changethenameofthecontroltodbAdapt.

Step 4: Creating the Data Set

Nowthatyouhavespecifiedthedatabaseandthedatatousefromthedatabase,youwillcreateadatasettocontainthedataforyourSpreadcontrol.

UsingCode

1. SelectthedbAdaptOleDBDataAdaptercontrolontheform.2. PressF4todisplaythePropertieswindowforthecontrol,ifitisnotalreadydisplayed.3. ClicktheGenerateDatasetverbatthebottomofthePropertieswindow.4. TheGenerateDatasetdialogappears.5. ClickOKtoclosetheGenerateDatasetdialog.Thenewdatasetcontrolisaddedtoyourform.

6. PressF4todisplaythePropertieswindowforthenewDataSetcontrol,ifitisnotalreadydisplayed.7. InthePropertieswindow,changethenameofthecontroltodbDataSet.8. Double-clickontheforminyourprojecttoopenthecodewindow.9. TypethefollowingcodeintheForm_Loadevent:

Spread Windows Forms Developer’s Guide 465

Copyright © GrapeCity, inc. All rights reserved.

Page 467: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

C#DataSet ds;ds = dbDataSet;dbAdapt.Fill(ds);

VBDim ds As DataSetds = dbDataSetdbAdapt.Fill(ds)

Thisfillsthedatasetwiththedatafromthedatabaseyouspecified,usingthefieldsyouspecifiedwhensettinguptheOleDbDataAdaptercontrol.

Step 5: Binding Spread to the Database

Yourdatasetisready,nowyouneedtoprovidecodetobindtheSpreadcontroltothedataset.

1. PressF4todisplaythePropertieswindowfortheSpreadcontrol,ifitisnotalreadydisplayed.2. InthePropertieswindow,settheDataSourcepropertytothenameofyourdataset,dbDataSet.

NoticethatthecolumnheadersintheSpreadcontrolchangetobethefieldnamesfromtheProductstableinyourdatabase.

3. Saveyourproject.4. Runyourprojectandyoushouldseeaformthatlookssimilartothefollowing:

5. Ifyourformdoesnotlooksimilartothisform,adjustthesizeofyourSpreadcontrol,andre-checkthestepsyouhaveperformedsofar.

6. Stoptheproject.

Step 6: Improving the Display by Changing the Cell Type

Inthisstep,youwillchangethecelltypeforoneofthecolumnstobetterdisplaythedatafromthedatabase.

Runyourprojectandyoushouldseeaformthatlookssimilartothefollowing:

Spread Windows Forms Developer’s Guide 466

Copyright © GrapeCity, inc. All rights reserved.

Page 468: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. Double-clickontheformtoopenthecodewindow.2. SetthecelltypefortheUnitPricecolumnbyaddingthecodeinthefollowingexampleafterthecodeyouhave

alreadyadded:3. Saveyourproject.

Example

C#FarPoint.Win.Spread.CellType.CurrencyCellType CurrCell = new FarPoint.Win.Spread.CellType.CurrencyCellType();CurrCell.DecimalPlaces = 2;CurrCell.CurrencySymbol = "US$";fpSpread1.Sheets[0].Columns[3].CellType = CurrCell;

VBDim CurrCell As New FarPoint.Win.Spread.CellType.CurrencyCellType()CurrCell.DecimalPlaces = 2CurrCell.CurrencySymbol = "US$"FpSpread1.Sheets(0).Columns(3).CellType = CurrCell

YouhavemanageddatabindingtoacorporatedatabaseusingSpread.Youhavecompletedthistutorial.

ReviewthelistofstepsforTutorial:BindingtoaCorporateDatabase(OlderVisualStudio).

Spread Windows Forms Developer’s Guide 467

Copyright © GrapeCity, inc. All rights reserved.

Page 469: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing Data on a Sheet

Youcanworkwithdatainthecellsinthedataareaofthespreadsheetinanumberofways:

PlacingandRetrievingDataValidatingUserInputRearrangingDataonaSheetRemovingDatafromaSheetImprovingPerformancebySuspendingtheLayout

Placing and Retrieving Data

Youcanplace(set)dataincellsusingavarietyofmethodsandretrieve(get)thedatausingacomplimentarysetofmethods.Formoreinformationreferto:

HandlingDataUsingSheetMethodsHandlingDataUsingCellPropertiesRepeatedlyFillingaRangeofCellswithCopiedCells

Forinformationontheeffectsofcelltypesonhowdataisdisplayedandmanaged,refertoUnderstandingHowCellTypesWork.

Handling Data Using Sheet Methods

Youcanplacedataincellsasformattedorunformattedstringsorasdataobjects.Thebestwaytoplacedataincellsdependsonwhetheryouwanttoaddstringdataordataobjects,andifyouwanttoadddatatoanindividualcellortoarangeofcells.

Ifyouareworkingwithdataprovidedbyauserinatextbox,forexample,youprobablywanttoaddthedataasstringdatathatisparsedbytheSpreadcomponent.Ifyouareaddingseveralvaluesandwanttoaddthemdirectlytothedatamodel,youcanaddthemasobjects.

Thefollowingtablesummarizesthewaysyoucanadddatausingmethodsatthesheetlevel.

DataDescription HowManyCells

Method

Asastringwithformatting(forexample"$1,234.56")

Individualcell GetText('GetTextMethod'intheon-linedocumentation)

SetText('SetTextMethod'intheon-linedocumentation)

Rangeofcells GetClip('GetClipMethod'intheon-linedocumentation)

SetClip('SetClipMethod'intheon-linedocumentation)

Asastringwithoutformatting(forexample"1234.45")

Individualcell GetValue('GetValueMethod'intheon-linedocumentation)

SetValue('SetValueMethod'intheon-linedocumentation)

Rangeofcells GetClipValue('GetClipValueMethod'intheon-

Spread Windows Forms Developer’s Guide 468

Copyright © GrapeCity, inc. All rights reserved.

Page 470: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

linedocumentation)

SetClipValue('SetClipValueMethod'intheon-linedocumentation)

Asadataobjectwithformatting Rangeofcells GetArray('GetArrayMethod'intheon-linedocumentation)

SetArray('SetArrayMethod'intheon-linedocumentation)

Whenyouworkwithformatteddata,thedataisparsedbythecelltypeformattedforthatcellandplacedinthedatamodel.Whenyouworkwithunformatteddata,thedatagoesdirectlyintothedatamodel.Ifyouadddatatothesheetthatisplaceddirectlyintothedatamodel,youmightwanttoparsethedatabecausethecomponentdoesnotdoso.Tounderstandtheeffectthatthecelltypehasonthisdata,refertothesummaryinUnderstandingHowCellTypesDisplayandFormatData.

Fordetailedinformationabouthowtoprovidethedataforeachcelltype,seethemembertopicsintheFarPoint.Win.Spread.CellType('FarPoint.Win.Spread.CellTypeNamespace'intheon-linedocumentation)namespace.

Toaddalargeamountofinformationtothecomponent,considercreatingandopeningexistingfiles,suchastextfilesorExcel-formattedfiles,asexplainedinOpeningExistingFiles.

Youcanalsoreturndatabysavingthedataorthedataandformattingtoatextfile,Excel-formattedfile,orSpreadXMLfile.Forinstructionsforsavingdatatothesefiletypes,seeSavingDatatoaFile.

UsingthePropertiesWindow

Toadddatatoacell,followtheseinstructions.Youcannotadddatatoarangeofcellsunlessyouwanttoaddthesamedatatoallthecellsintherangeyouselect.

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. Clickthesheetforwhichyouwanttoadddata.5. SelecttheCellspropertyandthenclickthebuttontodisplaytheCell,Column,andRowEditor.6. Selectthecellorrangeofcellstowhichyouwanttoadddata.7. Inthepropertylist,settheTextproperty.8. ClickOKtoclosetheCell,Column,andRowEditor.9. ClickOKtoclosetheSheetViewCollectionEditor.

UsingaShortcut

Togetorsetdatatoacellusingcode,PlaceformattedstringdatausingtheSheetsSetText('SetTextMethod'intheon-linedocumentation)methodorretrievedatausingtheGetText('GetTextMethod'intheon-linedocumentation)method.PlacedataasobjectsdirectlyintothedatamodelusingtheSheetsSetValue('SetValueMethod'intheon-linedocumentation)methodorretrievethedatadirectlyusingtheGetValue('GetValueMethod'intheon-linedocumentation)method.

Togetorsetdatatoarangeofcells,PlaceformattedstringdatausingtheSheetsSetClip('SetClipMethod'intheon-linedocumentation)methodorretrievethedatausingtheGetClip('GetClipMethod'intheon-linedocumentation)method.PlaceunformattedstringdatausingtheSheetsSetClipValue('SetClipValueMethod'inthe

Spread Windows Forms Developer’s Guide 469

Copyright © GrapeCity, inc. All rights reserved.

Page 471: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

on-linedocumentation)methodorretrievedatausingtheGetClipValue('GetClipValueMethod'intheon-linedocumentation)method.AdddataasobjectsdirectlyintothedatamodelusingtheSheetsSetArray('SetArrayMethod'intheon-linedocumentation)methodorretrievethedatausingtheGetArray('GetArrayMethod'intheon-linedocumentation)method.

Example

Thisexamplecodeaddsformatteddatatoarangeofcells.

C#// Add data to cells A1 through C3.fpSpread1.Sheets[0].SetClip(0, 0, 3, 3,"Sunday\tMonday\tTuesday\r\nWednesday\tThursday\tFriday\r\nSaturday\tSunday\tMonday");

VB' Add data to cells A1 through C3.FpSpread1.Sheets(0).SetClip(0, 0, 3, 3, "Sunday" + vbTab + "Monday" + vbTab + "Tuesday" + vbCrLf + "Wednesday" + vbTab + "Thursday" + vbTab + "Friday" + vbCrLf + "Saturday" + vbTab + "Sunday" + vbTab + "Monday")

UsingCode

Toadddatatoacellusingcode,AddformattedstringdatabycallingtheSheetViewobjectSetText('SetTextMethod'intheon-linedocumentation)methodorbycallingtheCellobjectText('TextProperty'intheon-linedocumentation)property.AdddataasobjectsdirectlyintothedatamodelbycallingtheSheetViewobjectSetValue('SetValueMethod'intheon-linedocumentation)methodorbycallingtheCellobjectValue('ValueProperty'intheon-linedocumentation)property.

Toadddatatoarangeofcells,AddformattedstringdatabycallingtheSheetViewobjectSetClip('SetClipMethod'intheon-linedocumentation)method.AddunformattedstringdatabycallingtheSheetViewobjectSetClipValue('SetClipValueMethod'intheon-linedocumentation)method.AdddataasobjectsdirectlyintothedatamodelbycallingtheSheetViewobjectSetArray('SetArrayMethod'intheon-linedocumentation)method.

Example

Thisexamplecodeaddsformatteddatatoarangeofcells.

C#// Create a new SheetView object.FarPoint.Win.Spread.SheetView newsheet=new FarPoint.Win.Spread.SheetView();// Add data to cells A1 through C3.newsheet.SetClip(0, 0, 3, 3, "Sunday\tMonday\tTuesday\r\nWednesday\tThursday\tFriday \r\nSaturday\tSunday\tMonday");// Assign the SheetView object to be the first sheet.fpSpread1.Sheets[0] = newsheet;

Spread Windows Forms Developer’s Guide 470

Copyright © GrapeCity, inc. All rights reserved.

Page 472: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VB' Create a new SheetView object.Dim newsheet As New FarPoint.Win.Spread.SheetView()' Add data to cells A1 through C3.newsheet.SetClip(0, 0, 3, 3, "Sunday" + vbTab + "Monday" + vbTab + "Tuesday" + vbCrLf + "Wednesday" + vbTab + "Thursday" + vbTab + "Friday" + vbCrLf + "Saturday" + vbTab + "Sunday" + vbTab + "Monday")' Assign the SheetView object to be the first sheet.FpSpread1.Sheets(0) = newsheet

Handling Data Using Cell Properties

Thefollowingtablesummarizesthewaysyoucangetorsetdataincellsusingthepropertiesofthecell.

DataDescription CellPropertyAsastringwithformatting(forexample"$1,234.56") Text('TextProperty'intheon-linedocumentation)

Asastringwithoutformatting(forexample"1234.45")

Value('ValueProperty'intheon-linedocumentation)

Thereisnolimitationonthedatatypesofvaluesthatcanbestoredincells.CellvaluesareassignedandretrievedusingthegenericObjectdatatype.Primitivedatatypes(forexample,bool,int,double,etc.)areassignedandretrievedusingboxedprimitives.

TheC#andVisualBasic.NETlanguagesautomaticallyboxprimitives(thatis,convertprimitivetoobject)foryouasillustratedinthiscode.

UsingCode

UsetheValue('ValueProperty'intheon-linedocumentation)propertyorSetValue('SetValueMethod'intheon-linedocumentation)methodtoadddatatoacell.

Example

Thisexampleaddsdatatocells.

C#FpSpread1.Sheets[0].Cells[0, 3].Value = 123;FpSpread1.Sheets[0].SetValue(0, 6, "abc");

VBfpSpread1.Sheets(0).Cells(0, 3).Value = 123fpSpread1.Sheets(0).SetValue(0, 6, "abc")

Example

Youneedtomanuallyunboxprimitives(thatis,convertobjecttoprimitive)byusingacast:

C#int i = (int)spread.Sheets[0].Cells[0, 3].Value;string s = (string)spread.Sheets[0].GetValue(0, 6);

Spread Windows Forms Developer’s Guide 471

Copyright © GrapeCity, inc. All rights reserved.

Page 473: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VBDim i As Integer = CInt(spread.Sheets(0).Cells(0, 3).Value)Dim s As String = CStr(spread.Sheets(0).GetValue(0, 6))

Note:Emptycellsreturnanullvalue(NothinginVB)thatcausesthecasttofail.Ifthereisapossibilitythatacellisemptyorcontainsavalueofunknowndatatypethenyourcodeshouldcheckthedatatypepriortoperformingthecastorshouldprovideanexceptionhandlertocatchtheexceptionthrownbythefailedcast.

Repeatedly Filling a Range of Cells with Copied Cells

Youcancopyarangeofcellsandfillanotherrangewiththosecells,copyingthedataandthecelltypewiththeFillRange('FillRangeMethod'intheon-linedocumentation)method.Forexample,ifyouhavea2x2range,youcanrepeat(fill)downthenextfivegroupsof2x2vertically.

TheparametersfortheFillRange('FillRangeMethod'intheon-linedocumentation)methodare:

startingcellrowandcolumnindexnumberofrowsandcolumnsintherangetocopynumberofeitherrows(ifleftorright)orcolumns(ifupordown)tocopythatrange(notthenumberoftimestorepeattheentirerange;thenumberofeitherrowsorcolumns)

UsingCode

1. Adddatatothecells.2. SettheFillRange('FillRangeMethod'intheon-linedocumentation)method.

Example

Forexample,usingthiscode,youwouldaccomplishtheresultsshownintheprecedingfigure.

C#// Define the text to repeat.fpSpread1.ActiveSheet.Cells[0, 0].Text = "A1-text";fpSpread1.ActiveSheet.Cells[0, 1].Text = "A2-text";fpSpread1.ActiveSheet.Cells[1, 0].Text = "B1-text";fpSpread1.ActiveSheet.Cells[1, 1].Text = "B2-text";

Spread Windows Forms Developer’s Guide 472

Copyright © GrapeCity, inc. All rights reserved.

Page 474: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.Cells[0, 0].BackColor = Color.Cyan;fpSpread1.ActiveSheet.Cells[0, 0].ForeColor = Color.DarkBlue;fpSpread1.ActiveSheet.Cells[0, 1].BackColor = Color.Coral;fpSpread1.ActiveSheet.Cells[0, 1].ForeColor = Color.DarkRed;

// Fill 3 more columns to the right with the two columns' contentsfpSpread1.ActiveSheet.FillRange(0, 1, 2, 1, 3, FarPoint.Win.Spread.FillDirection.Right);// Fill 4 more rows down with the contents of the square// of 2 rows and 2 columnsfpSpread1.ActiveSheet.FillRange(0, 0, 2, 2, 4, FarPoint.Win.Spread.FillDirection.Down);

VB' Define the text to repeat.FpSpread1.ActiveSheet.Cells(0, 0).Text = "A1-text"FpSpread1.ActiveSheet.Cells(0, 1).Text = "A2-text"FpSpread1.ActiveSheet.Cells(1, 0).Text = "B1-text"FpSpread1.ActiveSheet.Cells(1, 1).Text = "B2-text"

FpSpread1.ActiveSheet.Cells(0, 0).BackColor = Color.CyanFpSpread1.ActiveSheet.Cells(0, 0).ForeColor = Color.DarkBlueFpSpread1.ActiveSheet.Cells(0, 1).BackColor = Color.CoralFpSpread1.ActiveSheet.Cells(0, 1).ForeColor = Color.DarkRed

' Fill 3 more columns to the right with the two columns' contentsFpSpread1.ActiveSheet.FillRange(0, 1, 2, 1, 3, FarPoint.Win.Spread.FillDirection.Right)' Fill 4 more rows down with the contents of the square' of 2 rows and 2 columnsFpSpread1.ActiveSheet.FillRange(0, 0, 2, 2, 4, FarPoint.Win.Spread.FillDirection.Down)

Validating User Input

Youcanvalidatethecontentsofthecellinanumberofways.SomevalidationisperformedbytheSpreadcomponentautomatically,basedonthetypeofcell.Beyondthis,tovalidatetheinputfromauser,youcanlookforaneventandrunavalidationroutinebasedontheoccurrenceofthatevent.AnothersimplewaytocheckwhethertheuserentersdatathatisvalidbasedonthecelltypeisbyusingtheIsValidmethod,whichisavailableinallthecelltypeclasses.

CellTypeValidation

Thecellvalidatesuserinputandverifiesthatitfitstherequirementsofthecelltype'sformatandsettings.Atruntime,thecomponentchecksdataeitherwhenitisenteredbytheuserorcode,whenthecomponentlosesthefocus,orboth.Thecomponentvalidatesdataasitisprovided,forexample,astheusertypesthedata,andwhenthecomponentlosesfocus.Userscanenterdatabytypingorpasting;datafromcodecancomefrompropertysettingsoradatabase.Ingeneral,allthesemethodsofenteringdataarehandledinthesamewaybythecomponent,whichchecksthedatatodetermineifitisvalid.

Valuesinthecomponentthatarelessthanthesettingoftheminimumvalue(MinimumValueorMinimumDate,orMinimumTimeproperty)areallowedinthecomponent.Componentsmustallowvalueslessthantheminimumtoletusersprovideapartialvaluethatislaterchangedtoavaluegreaterthantheminimumvalue.Forexample,iftheMinimumValuepropertyissetto100,andtheusertriestochangethevalueto124byselectingtheexistingvalueandtyping,astheusertypesthevaluechangesto"1",whichislessthantheallowedminimumvalue.However,astheusertypesthevaluebecomes"12"andthen"124".Thefinalvalueisabovetheallowedminimumvalue.Thevalueprovidedbytheuserischeckedtoseeifitislessthantheminimumvaluewhenthecontrollosesthefocus.

Spread Windows Forms Developer’s Guide 473

Copyright © GrapeCity, inc. All rights reserved.

Page 475: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Whenthecontrolisvalidatingdataasitcomesintothecomponent,iftheusertriestoprovideinvaliddata,orinvaliddataiscomingfromcodeoradatabase,theUserErroreventoccurs.

Eachcelltypehassomedefaultrestrictionstodeterminewhatisvaliddata.Forexample,thecurrencycelltyperegardsatextstringofcharacterssuchas"abcd"asaninvalidvaluebecauseitexpectsnumericdata.Inaddition,youcansetpropertiesforeachcelltypethatspecifyvaliddatasettings.

Thefollowingtableliststhedefaultdataallowedineachoftheeditablecelltypes.

CellType Default ValidDataExamples

Currency Numericdata,whichcanincludecharactersforthecurrencysymbol,aseparator,andadecimalsymbol

$3.45

$1,234.56

£45

DateTime Dateandtimedata,whichcanincludeseparatorcharacters 8/16/2002,

Monday,August05,20024:40PM

GcDateTime Dateandtimedata,whichcanincludeseparatorcharacters 8/16/2002,

Monday,August05,20024:40PM

GcCharMaskorGcMask

Anycharacterisacceptedthatfitsthemaskstringcriteria

GcComboBoxorGcTextBox

Anycharacterisaccepted

GcNumber Numericdata,whichcanincludecharactersforaseparatorandadecimalsymbol

3.45

1,234.56

GcTimeSpan TimeSpandata,whichcanincludeseparatorcharacters

Hyperlink Anycharacterisaccepted.

General Anycharacterisaccepted.

Mask Anycharacterisacceptedthatfitsthemaskstringcriteria

Number Numericdata,whichcanincludecharactersforaseparatorandadecimalsymbol

3.45

1,234.56

Percent Numericdata,whichcanincludecharactersforthepercentsymbol,aseparator,andadecimalsymbol

0.5

1,234%

Text Anycharacterisaccepted.

Formoreinformationaboutdifferencesbetweenthesecelltypes,refertotheCustomizingInteractionwithCellTypes.

Thefollowingtableliststheadditionalpropertiesyoucansetforeachcelltypethatspecifyvaliddatasettings.

Spread Windows Forms Developer’s Guide 474

Copyright © GrapeCity, inc. All rights reserved.

Page 476: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CellType CellTypePropertiesforDefiningValidDataCurrency MaximumValue('MaximumValueProperty'intheon-linedocumentation),

MinimumValue('MinimumValueProperty'intheon-linedocumentation)

DateTime MaximumDate('MaximumDateProperty'intheon-linedocumentation),MinimumDate('MinimumDateProperty'intheon-linedocumentation),MaximumTime('MaximumTimeProperty'intheon-linedocumentation),MinimumTime('MinimumTimeProperty'intheon-linedocumentation)

GcCharMask FormatString('FormatStringProperty'intheon-linedocumentation)

GcCharMaskorGcMask

Pattern('PatternProperty'intheon-linedocumentation),MaxLength('MaxLengthProperty'intheon-linedocumentation),MinLength('MinLengthProperty'intheon-linedocumentation)

GcComboBox MaxLength('MaxLengthProperty'intheon-linedocumentation),MaxLengthUnit('MaxLengthUnitProperty'intheon-linedocumentation),FormatString('FormatStringProperty'intheon-linedocumentation)

GcDateTime MaxDate('MaxDateProperty'intheon-linedocumentation),MinDate('MinDateProperty'intheon-linedocumentation),MaxMinBehavior('MaxMinBehaviorProperty'intheon-linedocumentation)

GcNumber MaxValue('MaxValueProperty'intheon-linedocumentation),MinValue('MinValueProperty'intheon-linedocumentation),MaxMinBehavior('MaxMinBehaviorProperty'intheon-linedocumentation),ValueSign('ValueSignProperty'intheon-linedocumentation)

GcTextBox MaxLength('MaxLengthProperty'intheon-linedocumentation),MaxLengthUnit('MaxLengthUnitProperty'intheon-linedocumentation),MaxLengthCodePage('MaxLengthCodePageProperty'intheon-linedocumentation),FormatString('FormatStringProperty'intheon-linedocumentation)

GcTimeSpan MaxValue('MaxValueProperty'intheon-linedocumentation),MinValue('MinValueProperty'intheon-linedocumentation),MaxMinBehavior('MaxMinBehaviorProperty'intheon-linedocumentation),ValueSign('ValueSignProperty'intheon-linedocumentation)

Number MaximumValue('MaximumValueProperty'intheon-linedocumentation),MinimumValue('MinimumValueProperty'intheon-linedocumentation)

Mask Mask('MaskProperty'intheon-linedocumentation),MaskChar('MaskCharProperty'intheon-linedocumentation)

Percent MaximumValue('MaximumValueProperty'intheon-linedocumentation),MinimumValue('MinimumValueProperty'intheon-linedocumentation)

Text MaxLength('MaxLengthProperty'intheon-linedocumentation)

Thefollowingtablelistshowinvaliddataishandledbythenumberandtextcelltypes.TheColumnandCellheadingsinthetablerefertoenteringthedataatthecolumnorcelllevel.

Action TextCell

NumberCell

Column Cell Column CellInputinvalidcelltextwhilecellisineditmode +* +* +* +*

Pasteinvalidcelltextwhilecellisineditmode #* #* +* +*

Pasteinvalidcelltextwhilecellisnotineditmode #* #* +* +*

Spread Windows Forms Developer’s Guide 475

Copyright © GrapeCity, inc. All rights reserved.

Page 477: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Pastecopiedcellwithcelltypeandinvalidvaluewhilenotineditmode ##** ##** ##** ##**

Pastecopiedcellwithinvalidvalueandcelltypenotsetwhilecellisnotineditmode

#* #* +* +*

InputinvalidvaluewithcellValueproperty(orISheetDataModelSetValuemethod)

++** ++** ++** ++**

InputinvalidstringvaluewithcellTextproperty(orSheetViewSetTextmethod)

#** #** +** +**

InputinvalidcellvaluewithSheetViewSetValuemethod(validate=false)

++** ++** ++** ++**

InputinvalidcellvaluewithSheetViewSetValuemethod(validate=true) +** +** +** +**

Setinvalidcelltypeafterbinding ++** ++** ++** ++**

UsetheClipboardPasteValuesfieldtopasteinvalidcellvaluewhilecellisnotineditmode

#* #* +* +*

DragFillMode.Copy(theoperationiscanceledifthecellislocked) #* #* +* +*

DragFillMode.Series(theoperationiscanceledifthecellislocked) #* #* +* +*

Thefollowinglistdefinestheconditionsintheabovetable:

+Rejectthevalue++Allow(paint)theexistinginvalidvalueandmakethevaluevalid(truncatethevalueorchangeittobewithintheminimum/maximumsetting)whenediting#Truncatethevalue##Pastethevalueandcelltype*FiretheError/EditErrorevents**DonotfiretheError/EditErrorevents

Event-basedValidation

Youcancheckforaneventandrunavalidationroutinebasedontheoccurrenceofthatevent.Forinstance,theChanged('ChangedEvent'intheon-linedocumentation)eventintheSheetViewclassnotifiesyourapplicationthattheuserhaslefteditmodeandthecontentsofthecellhaschanged.Formorethoroughvalidation,tohandlethecasewhereauserpastesavaluefromtheClipboardasopposedtotypinginavalue,usetheChangedeventonthedatamodel(DefaultSheetDataModelclass).Thisisagoodwaytoevaluatethecontentsofacellafterithasbeenedited,andthrowanerrormessageorreverttooriginalvalueifthedatainthecellisnotvalid.Formoreinformationaboutusingevents,refertoManagingEventsfromUserActions.

IsValidMethodValidation

TheIsValidmethodforthecelltypeclassescheckswhetheravalueisvalidforthecelleditor.Spreadusesthatmethodinternallytocheckvaluescomingoutofthecelleditortoensurethattheyarevalid.Inmostcases,itwillreturnTrueiftheFormatmethodisabletoformatthespecifiednon-stringvalueintoastringtodisplayintheeditor,orwhethertheParsemethodisabletoparsethespecifiedstringvalueintoavalueoftheappropriatetypeforthecell.

Foradvancedusers,youcanevaluatethecontentsofacellafterithasbeenedited,andthrowanerrormessageandreverttotheoriginalvalueifthedatainthecellisnotvalid.TodothisrequireshandlingtheEditModeOneventand

Spread Windows Forms Developer’s Guide 476

Copyright © GrapeCity, inc. All rights reserved.

Page 478: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

settingpropertiesinSuperEditBaseandthusGeneralEditorontheeditorcontroleachtimeeditmodeisturnedon.ThesepropertiesincludeInvalidOption,InvalidColor,CanValidate,andUserEntry,butthisrequiresamoreinvolvedprocess.AtthetimetheEditModeOffeventisraised,thevalueinthedatamodelhasalreadybeenchanged.HandleEditModeOnandstorethecell'svalueandthenintheEditModeOffeventifthecurrentvalueofthecellfailsyourvalidation,resetthevaluetothestoredvalue.

Rearranging Data on a Sheet

Youcanrearrangedataonasheetfromcelltocellinmanyways.

CopyingDataonaSheetMovingDataonaSheetSwappingDataonaSheet

Copying Data on a Sheet

YoucancopydatatoandfromcellsusingtheCopy('CopyMethod'intheon-linedocumentation)methodsforthesheet.

Whenyoucopydatatoacell(orrangeofcells),thedatareplacesthedatainthedestinationcell(orcells).Iftheoperationcopiesarangeofcellsandpastesthemtoanoverlappinglocation,thevaluesofallthecellsyouarepastingarereplacedwiththevaluesofthecellsinthecopiedrange.

Youcanspecifywhetherformulasareautomaticallyupdatedwhencellsorrangesofcellsarecopied.Formoreinformationonautomaticrecalculation,refertoRecalculatingandUpdatingFormulasAutomatically.

FormoreinformationoncustomizingClipboardoperations,suchascopy,refertoCustomizingClipboardOperationOptions.

Moving Data on a Sheet

YoucanmovedatafromonecellorrangeofcellstoanotherusingtheMove('MoveMethod'intheon-linedocumentation)methodsforthesheet.

Whenyoumovedatafromonecell(orrangeofcells)toanother,thedatafromtheoriginationcell(orrangeofcells)replacesthedatainthedestinationcell(orcells).Iftheoperationmovesarangeofcellstoanoverlappinglocation,thevaluesofallthecellsoftherangearereplacedwiththevaluesofthecellsinthemovedrange.

Youcanspecifywhetherformulasareautomaticallyupdatedwhencellsorrangesofcellsaremoved.Formoreinformationonautomaticrecalculation,refertoRecalculatingandUpdatingFormulasAutomatically.

Tomovedata3rowsupthesheetand5rowsdown,youwouldneedtoinsertblankrowswhereyouwanttomovetherowsto.Tomove3rowsupand5rowsdown,copythefiverowstemporarilythenmovethe3rowsuptotheirpositionsandthenassignthefivecopiedrowstothecorrectposition.

Example

Thisexamplemovesdatainthesheetandinsertsblankrows.

C#fpSpread1.Sheets[0].SetText(6, 0, "test");var with1 = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)fpSpread1.Sheets[0].Models.Data;FarPoint.Win.Spread.Model.DefaultSheetDataModel dm = new FarPoint.Win.Spread.Model.DefaultSheetDataModel(5, with1.ColumnCount);dm.SetArray(0, 0, ((FarPoint.Win.Spread.Model.DefaultSheetDataModel)fpSpread1.Sheets[0].Models.Data).GetArray(0, 0, 5, 5));

Spread Windows Forms Developer’s Guide 477

Copyright © GrapeCity, inc. All rights reserved.

Page 479: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

with1.RemoveRows(0, 5);with1.AddRows(0, 3);with1.Move(with1.RowCount - 4, 0, 0, 0, 3, with1.ColumnCount);with1.RemoveRows(with1.RowCount - 4, 3);with1.AddRows(with1.RowCount, 5);with1.SetArray(with1.RowCount - 6, 0, dm.GetArray(0, 0, 5, with1.ColumnCount));

VBFpSpread1.Sheets(0).SetText(6, 0, "test")With CType(FpSpread1.Sheets(0).Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel)Dim dm As New FarPoint.Win.Spread.Model.DefaultSheetDataModel(5, .ColumnCount)dm.SetArray(0, 0, CType(FpSpread1.Sheets(0).Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel).GetArray(0, 0, 5, 5)).RemoveRows(0, 5).AddRows(0, 3).Move(.RowCount - 4, 0, 0, 0, 3, .ColumnCount).RemoveRows(.RowCount - 4, 3).AddRows(.RowCount, 5).SetArray(.RowCount - 6, 0, dm.GetArray(0, 0, 5, .ColumnCount))End With

Swapping Data on a Sheet

Youcanswapthecontentsoftwocellsortworangesofcells.

Whenyouswapdatafromacellorarangeofcellstoanothercellorrangeofcells,thesettingsforthecellareswappedalongwiththedata.Ifyouprovidedsettingsforthecolumnortherowcontainingthecell,orthespreadsheet,butnotthecellitself,thosesettingsarenotswapped.Forexample,ifyouhavesetthesourcecellbackgroundcolortored,thebackgroundcolorisswappedandthetargetcellhasaredbackground.However,ifyouhavesetthebackgroundcolorofthecolumncontainingthesourcecelltored,thatsettingisnotswapped.

Whenyouswapdatafromonecelltoanother,thedatainonecellbecomesthedataintheothercell,andviceversa.Forexample,ifcellA1containsthevalue4andcellB3containsthevalue6andyouswapthevaluesofthecells,thevalueofcellA1becomes6andthevalueofcellB3becomes4.

Ifyouattempttoswaparangethatislargerthantheavailablerangeatthedestination,theswapoperationisnotperformed.Forexample,ifyouattempttoswaparangeoffourcellsandspecifythedestinationasacellattheedgeofthespreadsheet,theswapdoesnottakeplace.

Iftheswapoperationswapsoverlappingrangesofcells,individualcellsareswappedstartingattheoverlappingcorner.

Iftherangesoverlap,suchasmovingrows1and2beforerow0,youcanaddextrarows,movetherows,andthenremovetheextrarows.

Formoreinformationonmethodstomoveorswapdata,refertotheirpageintheAPIreference:

SheetViewClass:SwapRange('SwapRangeMethod'intheon-linedocumentation)MethodSheetViewClass:MoveRange('MoveRangeMethod'intheon-linedocumentation)MethodModelNamespace:DefaultSheetSpanModelClass:SwapColumns('SwapColumnsMethod'intheon-linedocumentation)MethodModelNamespace:DefaultSheetSpanModelClass:SwapRows('SwapRowsMethod'intheon-linedocumentation)Method

UsingCode

Hereisanexampleofswappingarangeofcells.

Example

Spread Windows Forms Developer’s Guide 478

Copyright © GrapeCity, inc. All rights reserved.

Page 480: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexampleswapsarange.

C#fpSpread1.ActiveSheet.RowCount = 10;fpSpread1.ActiveSheet.ColumnCount = 10;private void button1_Click(object sender, System.EventArgs e){ fpSpread1.ActiveSheet.SwapRange(0, 0, 3, 0, 3, 3, true);}

VBFpSpread1.ActiveSheet.RowCount = 10FpSpread1.ActiveSheet.ColumnCount = 10Private Sub void button1_Click(sender As Object, e As System.EventArgs) FpSpread1.ActiveSheet.SwapRange(0, 0, 3, 0, 3, 3, True)End Sub 'button1_Click

Example

Thisexampleaddsrows,movesrows,andthenremovestheextrarows.

C#fpSpread1.ActiveSheet.RowCount = 10;fpSpread1.ActiveSheet.ColumnCount = 10;private void button1_Click(object sender, System.EventArgs e){ fpSpread1.ActiveSheet.Rows[0,1].Add() ; fpSpread1.ActiveSheet.MoveRange(3,0,0,0,2,4,true); fpSpread1.ActiveSheet.Rows[3,4].Remove();}

VBFpSpread1.ActiveSheet.RowCount = 10FpSpread1.ActiveSheet.ColumnCount = 10Private Sub void button1_Click(sender As Object, e As System.EventArgs) FpSpread1.ActiveSheet.Rows(0,1).Add() FpSpread1.ActiveSheet.MoveRange(3,0,0,0,2,4,True) FpSpread1.ActiveSheet.Rows(3,4).Remove()End Sub 'button1_Click

Whenyouswaprangesofdata,youcanspecifywhetherformulasareadjusted.Formoreinformation,seeRecalculatingandUpdatingFormulasAutomatically.

Removing Data from a Sheet

Youcanremovebothdataandcellformattingfromaselectedcellorrangeofcells,orremoveonlythedata,leavingthecellformattingintact.Formoreinformationaboutcellformatting,refertoUnderstandingHowCellTypesDisplayandFormatData.YoucanremovethedatausinganyoftheclearmethodsorbycuttingthedatausingtheClipboardoperation.

Youcanremovethedatausinganyoftheseclearmethodsinthedefaultdatamodel:

Spread Windows Forms Developer’s Guide 479

Copyright © GrapeCity, inc. All rights reserved.

Page 481: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Clear('ClearMethod'intheon-linedocumentation),whichclearsbothdataandformulasClearFormulas('ClearFormulasMethod'intheon-linedocumentation),whichclearsonlyformulasClearData('ClearDataMethod'intheon-linedocumentation),whichclearsonlydataClearCustomNames('ClearCustomNamesMethod'intheon-linedocumentation),whichclearscustomnames,andClearCustomFunctions('ClearCustomFunctionsMethod'intheon-linedocumentation),whichclearscustomfunctionsClearRange('ClearRangeMethod'intheon-linedocumentation),whichclearsdata,formulas,notes,andformattingfromarangeofcells

IfyouuseClearRangeandsetthedataOnlyparametertotrue,themethodclearstheformulas,thecellnotes,andthetextinthecellsinthatrange;inotherwords,itclearsalltheinformationthatisinthedatamodelforthosecells.

Youcanremovethecontentsofarangeofcellsusingthismethodintherangeinterface:

IRangeSupport.Clear('ClearMethod'intheon-linedocumentation)

Improving Performance by Suspending the Layout

Onewaytoimprovetheperformanceofthecomponent,iftherearechangestomanycells,istoholdorsuspendtherepaintinguntilallthechangesarecomplete.Byholdingtherepainting(suspendingthelayout)whileallthechangesandrecalculationsaredone,andthenresumingthelayoutandrepaintingallthecells,thecomponentcansavealotoftimeandstilldeliverarefreshedinterfacetotheuser.

LayoutObjects

Alayoutisanobjectthatstorescalculatedvalues(mostlywidthsandheightsofcells,spans,andviewports)usedforpaintingthecomponentinitscurrentstate.Thismayincludehowmanyviewportsthereare,whatthetopleftcellineachviewportis,howbigeachcolumnandrowisandhowmanyarecurrentlyvisibleineachviewport,etc.Thepurposeofthelayoutobjectistooptimizepaintingofthecomponentbystoringthecalculatedlayoutvaluesusedduringpaintingandreusingthemeachtimethecomponentrepaintsinsteadofrecalculatingthemeachtime.Whenachangeistrackedthatrequiresthelayoutobjecttoberegenerated,itisdiscardedandanewoneiscalculatedbythepaintcode.ThelayoutobjectsarenotpartofthepublicAPI,buttheycacheallofthelayoutinformationrequiredtopaintthesheet,likethecolumnwidths,rowheights,cellspans,celloverflowsandtherectanglesofcellnotesthatarealwaysvisible(Cell.NoteStyle=NoteStyle.StickyNote).

SuspendingtheLayoutLogic

Toimproveperformance,youcansuspendthelayout,whichstopsthelayoutobjectfrombeingupdatedandthusthecomponentdoesnotspendanytimemakingcalculationsforrepaintinguntilthelayoutisresumed.Twomethodsaccomplishthis,theSuspendLayout('SuspendLayoutMethod'intheon-linedocumentation)andResumeLayout('ResumeLayoutMethod'intheon-linedocumentation)methodsintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.Besuretousethetwomethodstogetherwithinaparticularscopeofoperation,otherwiseaproblemmayoccurwiththelayoutbeingsuspendedandnotabletoresume.

TheSuspendLayout('SuspendLayoutMethod'intheon-linedocumentation)methodpreventsthecomponentfromrecomputingthelayoutofcolumns,rows,andcellswhenchangesaremadetothesheet.Ifyouaremakinglotsofchangestothesheetinablockofcode,usingSuspendLayout('SuspendLayoutMethod'intheon-linedocumentation)preventsthecomponentfromdoingredundantintermediaterecalculationsofthelayoutobjectsaseachchangeismade,andusingResumeLayout('ResumeLayoutMethod'intheon-linedocumentation)(true)recomputesthelayoutonceafterallofyourchangesaremade.Thisapproachincreasesperformancegreatly,butthereareadditionalapproachesyoucandodependingonwhatfeaturesyoursheetsrequire,asdescribedinthesection,"OtherPerformanceImprovements."

Example

Spread Windows Forms Developer’s Guide 480

Copyright © GrapeCity, inc. All rights reserved.

Page 482: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thisexamplesuspendsandresumesthelayout.

C#Dim st As System.DateTime = System.DateTime.NowWith FpSpread1.SuspendLayout().Sheets(0).ActiveSkin = FarPoint.Win.Spread.SheetSkin.Load("d:\temp\skin.skn").ResumeLayout()End WithMsgBox("Duration (ticks)=" & System.DateTime.Now.Ticks - st.Ticks)

private void PerformInitialSetup() { // (0) used for property labels. _propertyLabelOrdinal = 0; // Set up the spread spread.SuspendLayout(); SheetView sheet = spread.ActiveSheet; sheet.Models.ColumnHeaderData = new HeaderDataModel(spread, _orientation); sheet.Models.Style = new SheetStyleModel(_orientation); spread.NamedStyles = _config.Styles.NamedStyles;

// Insert initial data sheet.Columns.Count = 2; foreach (Block block in _config.Blocks) { // Insert any leading blank rows if (block.SpaceBefore > 0) sheet.Rows.Add(sheet.Rows.Count, block.SpaceBefore); if (block.DealProperties != null) { int rowIndex = sheet.Rows.Count; sheet.Rows.Add(rowIndex, block.DealProperties.Count); foreach (DealProperty property in block.DealProperties) { sheet.Cells[rowIndex, _propertyLabelOrdinal].Value = property; sheet.Rows[rowIndex].StyleName = block.StyleName; rowIndex++; } } // Insert any trailing blank rows if (block.SpaceAfter > 0) sheet.Rows.Add(sheet.Rows.Count, block.SpaceAfter); } // Set initial styles sheet.Columns[_propertyLabelOrdinal].StyleName = "dealPropertyLabels"; spread.ResumeLayout(); }

SuspendedNotification

Ifthelayoutissuspendedwithoutacorrespondingresumemethodinthesamescopeandanexceptionoccurs,thecomponentdisplaysanotification,asshowninthefollowingfigure.Ifthestateofthecomponentchangessuchthatthelayoutobjectcontainsinvaliddata(usuallytheincorrectnumberofitems)thenanexceptioncanresultwhenthecomponenttriestopaintwiththeinvalidlayoutdata.Thenotificationisshownwheneverthereisanunhandled

Spread Windows Forms Developer’s Guide 481

Copyright © GrapeCity, inc. All rights reserved.

Page 483: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

exceptionthatoccursduringthepaintingofthecontrol,andthelayoutissuspendedwhentheexceptionoccurred.

ThisshouldonlyhappenwhenthelayoutissuspendedwithSuspendLayout('SuspendLayoutMethod'intheon-linedocumentation),andthenchangesaremadetothecomponentstateandthecomponentsomehowmadetopaintagainwithaninvalidlayoutobject.Itispossiblethattherecouldbeanexceptionthatcausesthismessagetobedisplayedthatisnotrelatedtothelayoutbeingsuspended,forexample,ifanexceptionisthrownbyacustomcelltypeobjectduringacalltoIRenderer.PaintCell.

Anychangesmadetothecomponentstatecouldtriggerlayoutrecalculation,butnotallchangesdoso.Changesthatrearrangerowsorcolumns,suchassortingandfiltering,definitelyrequireit,butsettingtextonlydoesitundercertaincircumstances,forexample,whenyouhaveAllowCellOverflowturnedon.Ifthelayoutissuspended,buttheSpreadisabletopaintusingoldlayoutinformationwithoutanyproblems,thentheSpreadmayactinunexpectedways,forexample,itwillnotscrollwhenyoutry,butthenotificationisnotdisplayed.

OtherPerformanceImprovements

Beyondthesuspending(andsubsequentresuming)ofthelayoutlogic,therearefewotherthingsyoucanconsiderthatmayimproveperformance.

Ifyouarenotusingstickynotes,thenyoucansetAutoUpdateNotestofalsetopreventthecomponentfromcheckingforstickynotesthatneedtobemadevisibleorhiddenormoved.IfyouareusingAllowCellOverflow,turningthatoffincreasestheperformanceofthelayoutcalculations,becausethatfeaturerequiresmultipletextwidthcalculationsoneachchangetothedatainacell.Ifyouareusingformulas,settingAutoCalculationtofalsebeforeyourupdatesandthensettingitbacktotrueandcallingRecalculateafterwardseliminatesredundantintermediaterecalculationsofyourformulas.

Someotherthingstoconsideraretoreducethesizeofthecontrolordisplayfewercolumnsandrowsatonce(thelayoutobjectsonlycalculatethevisibleportionofthesheet),orimplementyourownsheetmodelobjects(likeyourowndatamodelobjectimplementingISheetDataModel)whichremovefeaturesthatyoudonotrequire(forexample,ifyoudonotrequiredatabinding,thedatabindinginterfacesdonotneedtobeimplemented).

UsingtheMethodsTogether

Aroughoutlineofthecodeforsuspendinglayoutwouldbe:

SuspendLayout

insertyourcodehere

ResumeLayout

Themethodsareintendedfortemporarilyignoringchangestothelayoutsothatmanychangescanbemadewithoutperformingtheredundantlayoutrecalculationsbetweeneachchange.Whilelayoutcalculationissuspended,eventhandlerstrackingchangestothecomponentarenotabletorecalculatethelayoutandthepaintcodedoesnotaccessthenewlayout.Foranestedloopthatmakesachangetoeverycell,saychangingavalueineachcell,thisisacasethatwoulddefinitelybenefitfromsuspendingthelayoutbeforeandresumingthelayoutafterward.

Donotusethesemethodsunlessthechangesaresuchthattheperformancecanbenefitfromthelayoutbeingsuspendedtemporarily.

Spread Windows Forms Developer’s Guide 482

Copyright © GrapeCity, inc. All rights reserved.

Page 484: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Alwaysusethetwomethodstogetherinthesamescope,otherwisethecomponentmightnotpaintcorrectlyifSuspendLayout('SuspendLayoutMethod'intheon-linedocumentation)iscalledwithoutamatchingcalltoResumeLayout('ResumeLayoutMethod'intheon-linedocumentation)inthesamescope.

Example

Thisexampleshowsthetwomethodsusedtogetherwithinaspecificscopearoundcodethatchangesthecells.ThissuspendstherepaintingoftheSpreadcomponentwhilechangingthecolorofthecellsandthenresumestherepainting.

C#fpSpread1.SuspendLayout();fpSpread1.Sheets[0].Cells[0, 0, 499, 499].BackColor = Color.Blue;fpSpread1.ResumeLayout(true);

VBFpSpread1.SuspendLayout()FpSpread1.Sheets(0).Cells(0, 0, 499, 499).BackColor = Color.BlueFpSpread1.ResumeLayout(True)

Spread Windows Forms Developer’s Guide 483

Copyright © GrapeCity, inc. All rights reserved.

Page 485: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing Keyboard Interaction

YoucancustomizeuserinteractionwithyourSpreadcomponentbymappingkeyboardinputsfromtheusertoparticularactionsontheSpreadcomponentusinginputmapsandactionmaps.Forexample,pressingtheHomekeycanbeassociatedwithmovingtheactivecelltothefirstcellintherow.Manyofthekeysaremappedtoactionsbydefault.Youcancustomizethesedefaultmapsaswellasaddnewmappingstocreatetheinteractionsyouwant.Thefollowingtopicsdescribethedefaultmappingsaswellasproceduresforsettingupmapstocustomizekeystrokeprocessing.

UnderlyingKeystrokeProcessingFactorsofKeyboardMapUsageDefaultKeyboardNavigationDefaultKeyboardMapsDeactivatingtheDefaultKeyboardMapChangingtheDefaultKeyboardMapUsingInputMapswithActionMapsCustomizingtheInputMapsChanginganInputMapforaChildViewUsingtheExcelCompatibilityInputMapsSavingandLoadingMapFiles

Formoreinformationontheclassesinvolved,refertotheActionMap('ActionMapClass'intheon-linedocumentation)andInputMap('InputMapClass'intheon-linedocumentation)classes.

Underlying Keystroke Processing

TheSpreadcomponentbuildsitskeystrokeprocessingontopoftheunderlyingWindowskeystrokeprocessing.

TheSystem.Windows.Forms.Controlclassprovidesthefollowingmethodsandeventsforprocessingkeystrokesthatoccurwhilethecomponenthasfocus:

IsInputKeymethodIsInputCharmethodOnKeyDownmethodOnKeyPressmethodOnKeyUpmethodKeyDowneventKeyPresseventKeyUpevent

TheSystem.Windows.Forms.Controlclassprovidesthefollowingmethodsforprocessingkeystrokesthatoccurwhilethecomponentoroneofitschildcontrolshasfocus:

ProcessDialogKeyProcessDialogChar

Inadditiontothemethodsandeventsinthe.NETFrameworkthathandlekeyboardinput,theSpreadcomponentprovidesinputmaps,asdescribedinDefaultKeyboardMaps.Inputmapsprovideatable-baseddescriptionofthekeyboardbehaviorforaSpreadcomponent.ThisallowstheapplicationtoquerythekeyboardbehaviorforaSpreadcomponent.Aninputmapisessentiallyacollectionofkeystrokesandrelatedactions.

TheSpreadcomponentprovidesaWhenFocusedinputmapforprocessingkeystrokesthatoccurwhilethecomponenthasfocus.TheWhenFocusedinputmapisusedtoimplementtheFpSpread('FpSpreadClass'intheon-linedocumentation)classIsInputKey,IsInputChar,OnKeyDown,OnKeyPress,andOnKeyUpmethodswhichinturnraisetheKeyDown,KeyPress,andKeyUpevents.

Spread Windows Forms Developer’s Guide 484

Copyright © GrapeCity, inc. All rights reserved.

Page 486: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheSpreadcomponentprovidesaWhenAncestorOfFocusedinputmapforprocessingkeystrokesthatoccurwhilethecomponentoroneofitschildcontrolshasfocus.TheWhenAncestorOfFocusedinputmapisusedtoimplementtheFpSpread('FpSpreadClass'intheon-linedocumentation)class'sProcessDialogKeyandProcessDialogCharmethods.Thesemethodsdonotraiseanyevents.MostkeystrokesprocessedbytheSpreadcomponentmustbeprocessedwhetherthecomponentoroneofitschildcontrolshavefocus,whichmeansthatmostoftheSpreadkeyboardbehaviorisdescribedintheWhenAncestorOfFocusinputmap.

Note:WhenkeystrokesareprocessedbytheProcessDialogKeyandProcessDialogCharmethods,noeventsareraised.Thisistrueofmostothergrid-likecomponents,includingtheMicrosoftDataGrid.

TheSpreadcomponenthasmultipleoperationmodes(Normal,ReadOnly,RowMode,SingleSelect,MultiSelect,ExtendedSelect).Eachoperationmoderequiresdifferentkeyboardbehavior.Therefore,theSpreadcomponenthasseparateWhenFocusedandWhenAncestorOfFocusedinputmapsforeachoperationmode,aslistedinthetopicDefaultKeyboardMaps.Formorediscussionofthese,refertoFactorsofKeyboardMapUsage.

ThepredefinedactionsavailablefortheSpreadcomponentareintheSpreadActions('SpreadActionsClass'intheon-linedocumentation)class.Foracompletelistofactions(includingactionsthatdonothavedefaultkeys),refertotheSpreadActions('SpreadActionsClass'intheon-linedocumentation)class.

Ifyouwanttoturnoffoneofthedefaultmapkeystrokesettings,youcansetthekeystroketotheNonememberoftheSpreadActions('SpreadActionsClass'intheon-linedocumentation)class.

Formoreinformationabouttheprogramminginterfaceforinputsandactionsandmaps,refertotheseclasses:

Action('ActionClass'intheon-linedocumentation)classActionMap('ActionMapClass'intheon-linedocumentation)classInputMap('InputMapClass'intheon-linedocumentation)classKeyStroke('KeystrokeStructure'intheon-linedocumentation)classSpreadActions('SpreadActionsClass'intheon-linedocumentation)class

Factors of Keyboard Map Usage

Thereareseveralfactorsinvolvedwithusingmappingsthatshouldbeunderstoodbeforeeitherchangingthedefaultmappingsorcreatingyourownmappings.Theseinclude:

FocusLocationandOperationModeGlobalversusLocalParentversusChildWorkbookEnterKeystrokeBindingExceptionActionCalledNone

FocusLocationandOperationMode

Keyboardmappingisdependentontwofactors:thefocuslocationandtheoperationmode.Forexample,theEnterkeyhasdifferentactionsdependingifitispressedwhenacelleditorhasthefocusorwhenthecontrolhasthefocus.Ifthecelleditorhasthefocus(thecellisineditmode),pressingEntertakesthecelloutofeditmode.Ifthecontrolhasthefocus,andnotachildcontrol(suchasacelleditor),pressingtheEnterkeyputstheactivecellineditmode.Foroperationmodes,forexample,ifthesheetisinReadOnlymode,itsmapdoesnothaveentriesformovingtheactivecellbecausethereisnoactivecell.Customizethedefaultmapskeepingfocuslocationsandoperationmodesinmind.Eachmappingislikeadictionary,definingameaning(anaction)foreachkeystroke.Justasdifferentdictionariesareneededfordifferentlanguages,differentkeyboardmapsareneededfordifferentfocuslocationsandoperationmodes.

TheSpreadcomponentprovidestwoinputmaps,WhenFocusedandWhenAncestorOfFocused,oneforeachtypeoffocuslocation.TheWhenFocusedmapcontainskeyboardbindingsthatapplywhentheSpreadcomponenthasfocusbutnotwhenachildcontrolhasfocus.PlacinganentryintheWhenFocusedinputmapisequivalenttooverridingtheIsInputKeyandIsInputCharmethods(toreturntrueforthekeystroke)andtheOnKeyDown,

Spread Windows Forms Developer’s Guide 485

Copyright © GrapeCity, inc. All rights reserved.

Page 487: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

OnKeyPress,andOnKeyUpmethods(toprocessthekeystroke).TheWhenAncestorOfFocusedmapcontainskeyboardbindingsthatapplywheneithertheSpreadcomponentorachildcontrolhasfocus.PlacinganentryintheWhenAncestorOfFocusedmapisequivalenttooverridingtheProcessDialogKeyandProcessDialogCharmethods(toprocessthekeystroke).

Thefirstfactoriswhatreceivesthekeystrokeorkeystrokecombination.Keystrokeprocessingin.NETishandledintwophases:apre-processingphaseandanormal-processingphase.MostkeystrokeprocessinginSpreadishandledduringthepre-processingphase,whichcorrespondstotheWhenAncestorOfFocusedinputmapmode(refertoInputMapMode('InputMapModeEnumeration'intheon-linedocumentation)enumerationsettings).Inthepre-processingphase,keystrokesarehandledbytheIsInputChar,IsInputKey,ProcessDialogChar,andProcessDialogKeymethods.Thenormal-processingphasecorrespondstotheWhenFocusedinputmapmode.Inthenormal-processingphase,keystrokesarehandledbytheOnKeyDown,OnKeyPress,andOnKeyUpmethods(whichraisetheKeyDown,KeyPress,andKeyUpeventsrespectively).

ForatypicalSpreadcomponent,mostinteractionsthatoccurwhileyouareworkingwiththecomponentoccuraspartoftheWhenAncestorOfFocusedinputmap.Actionssuchasmovingtheactivecell,selectingarangeofcells,andotherswouldbepartofthismap.Forexample,pressingtheTabkeymovestheactivecell,evenifacellisineditmode.Incontrast,somekeysareonlymappedwhenthereisnotacellineditmode(thecomponenthasthefocus,butnotacelleditor).Forexample,theequals(=)keydoesnotperformanactionifpressedwhenacellisineditmode.Ifnocellisineditmode,pressingtheequalskeystartsformulaeditingfortheactivecell.

GlobalversusLocal

TheSpreadcomponentprovidesaparentglobalinputmap,whichissharedbyallSpreadcomponentsinaproject.WhenyoucustomizetheinputmapforaSpreadcomponent,youarecustomizingalocalmapforonlythatcomponent.

TheglobalmapallowstheSpreadcomponenttosavememorybysharingamap.Thelocalmapletsyoucustomizesettings,thenclearthemlaterandretainthedefaultsettingsaslistedinDefaultKeyboardMaps.

Therefore,whenworkingwithinputmaps,youneedtobeawareofwhichmethodsworkwiththeglobalmapandwhichworkwiththelocalmap.

TheGetmethodtoreturninputmapssearchesallinputmaps,includingtheglobalandthelocal.ThePut,Remove,andClearmethodsonlyworkwiththelocalmap.Forexample,ifyoucalltheRemovemethod,itremovesthecustomsettingsforalocalmap,butdoesnotchangethedefaultsettingsprovidedbytheglobalmap.

Youcannotmodifytheglobalmapitself,butifyouwanttodoso,youcancreateanewinputmapandassignittobetheglobalmapinsteadofthedefaultoneprovided.

ParentversusChildWorkbook

Thekeyboardbindingsintheparentworkbook'sinputmapdonotaffectthechildworkbook.TheSpreadcomponentcontainsoneormoreinstancesoftheSpreadViewclass.Inahierarchysetup,theparentisoneinstanceoftheSpreadViewclassandeachchildisaninstanceoftheSpreadViewclass.EachinstanceoftheSpreadViewclasshasitsowninputmap.Thisgivesyoutheoptionofhavingdifferentkeyboardbehaviorsateachlevelofthehierarchy.Ifyouwantaparticularkeyboardbehavioratalllevelsinthehierarchythenyouwouldneedtomodifytheinputmapfortheparentandeachchild.

EnterKeystrokeBindingException

Mostofthebuilt-inkeystrokesonlyhaveabindingintheWhenAncestorOfFocusedmapandthusonlyletyouoverrideonebinding.TheEnterkeystrokeistheexception.IntheWhenAncestorOfFocusedmap,theEnterkeystrokeisboundtotheStopEditingaction.IntheWhenFocusedmap,theEnterkeystrokeisboundtotheStartEditingaction.Thus,youneedtooverridebothbindings.Hereissomesamplecode:

C#InputMap whenAncestorOfFocusedMap = spread.GetInputMap(InputMapMode.WhenAncestorOfFocused);

Spread Windows Forms Developer’s Guide 486

Copyright © GrapeCity, inc. All rights reserved.

Page 488: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

InputMap whenFocusedMap = spread.GetInputMap(InputMapMode.WhenFocused);whenAncestorOfFocusedMap.Put(new Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextRow);whenFocusedMap.Put(new Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextRow);

ActionCalledNone

TheNoneactionisaspecialactionindicatingthatthekeystrokeisnotprocessedbytheinputmap.

PlacingaNoneactioninaninputmapissimilartocallingtheRemovemethodontheinputmap.ThedifferencebetweenthemisthataNoneactioncanoverrideanentryinaparentmapwhereastheRemovemethodonlyaffectsentriesinthespecifiedmap.Bydefault,theWhenFocusedandWhenAncestorOfFocusedmapshavenodirectentriesbutdohaveindirectentriesviaparentmaps.TheWhenFocused'sparentmapcontainsnobindingfortheEsckey.

Default Keyboard Navigation

Thedefaultbehaviorforend-userkeyboardactionissummarizedinthesetables.

DefaultBehavioronaSheet

Thedefaultbehaviorforend-userkeyboardactiononthesheetissummarizedinthistable.

KeyCode Action ActionNameEscape Ifeditmodeison,previouscellvalue

replacesnewvalueandeditmodeisturnedoff

CancelEditing('CancelEditingField'intheon-linedocumentation)

F2 Ifeditmodeison,clearstheactivecellvalue ClearCell('ClearCellField'intheon-linedocumentation)

Ctrl+CorCtrl+Insert

CopiestheselectiontotheClipboard ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+XorShift+Delete

CutstheselectiontotheClipboard ClipboardCut('ClipboardCutField'intheon-linedocumentation)

Ctrl+VorShift+Insert

PastesthedataandformattingfromtheClipboard

ClipboardPasteAll('ClipboardPasteAllField'intheon-linedocumentation)

F3 Ifeditmodeison,placesthecurrentdateandtimeinadate-timecell

DateTimeNow('DateTimeNowField'intheon-linedocumentation)

Ctrl+Shift+Home

Extendstheselectiontoincludethefirstcell ExtendToFirstCell('ExtendToFirstCellField'intheon-linedocumentation)

Shift+Home Extendstheselectiontoincludethefirstcolumn

ExtendToFirstColumn('ExtendToFirstColumnField'intheon-linedocumentation)

Shift+Home Extendstheselectiontoincludethefirstiteminalist

ExtendToFirstItem('ExtendToFirstItemField'intheon-linedocumentation)

Ctrl+Shift+End

Extendstheselectiontoincludethelastcell ExtendToLastCell('ExtendToLastCellField'intheon-linedocumentation)

Shift+End Extendstheselectiontoincludethelastcolumn

ExtendToLastColumn('ExtendToLastColumnField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 487

Copyright © GrapeCity, inc. All rights reserved.

Page 489: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Shift+End Extendstheselectiontoincludethelastiteminalist

ExtendToLastItem('ExtendToLastItemField'intheon-linedocumentation)

Shift+RightArroworCtrl+Shift+RightArrow

Extendsselectionrightonecolumnbyindex ExtendToNextColumn('ExtendToNextColumnField'intheon-linedocumentation)

Shift+RightArroworCtrl+Shift+RightArrow

Extendsselectionrightonecolumnbyvisual ExtendToNextColumnVisual('ExtendToNextColumnVisualField'intheon-linedocumentation)

Shift+DownArrow

Extendsselectiondownonerow ExtendToNextItem('ExtendToNextItemField'intheon-linedocumentation)

Ctrl+Shift+PageDown

Extendsselectionrightonepageofcolumns ExtendToNextPageOfColumns('ExtendToNextPageOfColumnsField'intheon-linedocumentation)

Shift+PageDown

Extendsselectionrightonepageofitems ExtendToNextPageOfItems('ExtendToNextPageOfItemsField'intheon-linedocumentation)

Shift+PageDown

Extendsselectiondownonepageofrows ExtendToNextPageOfRows('ExtendToNextPageOfRowsField'intheon-linedocumentation)

Shift+DownArroworCtrl+Shift+DownArrow

Extendsselectiondownonerow ExtendToNextRow('ExtendToNextRowField'intheon-linedocumentation)

Shift+LeftArroworCtrl+Shift+LeftArrow

Extendsselectionleftonecolumnbyindex ExtendToPreviousColumn('ExtendToPreviousColumnField'intheon-linedocumentation)

Shift+LeftArroworCtrl+Shift+LeftArrow

Extendsselectionleftonecolumnbyvisual ExtendToPreviousColumnVisual('ExtendToPreviousColumnVisualField'intheon-linedocumentation)

Shift+UpArrow

Extendsselectionleftoneitem ExtendToNextItem('ExtendToNextItemField'intheon-linedocumentation)

Ctrl+Shift+PageUp

Extendsselectionleftonepageofcolumns ExtendToPreviousPageOfColumns('ExtendToPreviousPageOfColumnsField'intheon-linedocumentation)

Shift+PageUp Extendsselectionuponepageofitems ExtendToPreviousPageOfItems('ExtendToPreviousPageOfItemsField'intheon-linedocumentation)

Shift+PageUp Extendsselectionuponepageofrows ExtendToPreviousPageOfRows('ExtendToPreviousPageOfRowsField'intheon-linedocumentation)

Shift+UpArroworCtrl+Shift+UpArrow

Extendsselectionuponerow ExtendToPreviousRow('ExtendToPreviousRowField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 488

Copyright © GrapeCity, inc. All rights reserved.

Page 490: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Ctrl+Home Movesactivecelltofirstrow,firstcolumn MoveToFirstCell('MoveToFirstCellField'intheon-linedocumentation)

Home Movesactivecelltothefirstcellintherow MoveToFirstColumn('MoveToFirstColumnField'intheon-linedocumentation)

Home Movesactivecelltothefirstiteminthelist MoveToFirstItem('MoveToFirstItemField'intheon-linedocumentation)

Ctrl+End Movesactivecelltolastrow,lastcolumn MoveToLastCell('MoveToLastCellField'intheon-linedocumentation)

End Movesactivecelltothelastcellintherow MoveToLastColumn('MoveToLastColumnField'intheon-linedocumentation)

End Movesactivecelltothelastiteminthelist MoveToLastItem('MoveToLastItemField'intheon-linedocumentation)

RightArroworCtrl+RightArrow

Movesactivecellrightonecolumnbyindex MoveToNextColumn('MoveToNextColumnField'intheon-linedocumentation)

RightArroworCtrl+RightArrow

Movesactivecellrightonecolumn MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-linedocumentation)

Tab Movestheactivecelltothenextcolumnandwrapsattheendoftherow.(TheTabkeyskipshiddencolumnsautomatically.)

MoveToNextColumnWrap('MoveToNextColumnWrapField'intheon-linedocumentation)

DownArrow Movestothenextiteminthelist. MoveToNextItem('MoveToNextItemField'intheon-linedocumentation)

Ctrl+PageDown

Movesactivecellrightonepageofcolumns MoveToNextPageOfColumns('MoveToNextPageOfColumnsField'intheon-linedocumentation)

PageDown Movesdownonepageofitems MoveToNextPageOfItems('MoveToNextPageOfItemsField'intheon-linedocumentation)

PageDown Movesactivecelldownonepageofrows MoveToNextPageOfRows('MoveToNextPageOfRowsField'intheon-linedocumentation)

DownArrow Movesactivecelldownonerow MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

DownArroworCtrl+DownArrow

Movesactivecelldownonerow MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

LeftroworCtrl+LeftArrow

Movesactivecellleftonecolumnbyindex MoveToPreviousColumn('MoveToPreviousColumnField'intheon-linedocumentation)

LeftArroworCtrl+LeftArrow

Movesactivecellleftonecolumnbyvisual MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Shift+Tab Movestheactivecelltothepreviouscolumnandwrapsattheendoftherow.(TheTabkeyskipshiddencolumnsautomatically).

MoveToPreviousColumnWrap('MoveToPreviousColumnWrapField'intheon-linedocumentation)

Ctrl+Left Movestopreviousiteminthelist MoveToPreviousItem('MoveToPreviousItem

Spread Windows Forms Developer’s Guide 489

Copyright © GrapeCity, inc. All rights reserved.

Page 491: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Arrow Field'intheon-linedocumentation)

Ctrl+PageUp Movesactivecellleftonepageofcolumns MoveToPreviousPageOfColumns('MoveToPreviousPageOfColumnsField'intheon-linedocumentation)

PageUp Movesuponepageofitems MoveToPreviousPageOfItems('MoveToPreviousPageOfItemsField'intheon-linedocumentation)

PageUp Movesactivecelluponepageofrows MoveToPreviousPageOfRows('MoveToPreviousPageOfRowsField'intheon-linedocumentation)

UpArroworCtrl+UpArrow

Movesactivecelluponerow MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

Ctrl+Y Movesactivecelluponerow Redo('RedoField'intheon-linedocumentation)

Ctrl+Home Scrollstodisplaythefirstcell ScrollToFirstCell('ScrollToFirstCellField'intheon-linedocumentation)

Home Scrollstodisplaythefirstcolumn ScrollToFirstColumn('ScrollToFirstColumnField'intheon-linedocumentation)

Ctrl+End Scrollstodisplaythelastcell ScrollToLastCell('ScrollToLastCellField'intheon-linedocumentation)

End Scrollstodisplaythelastcolumn ScrollToLastColumn('ScrollToLastColumnField'intheon-linedocumentation)

Right Scrollstodisplaythenextcolumnbyindex ScrollToNextColumn('ScrollToNextColumnField'intheon-linedocumentation)

Right Scrollstodisplaythenextcolumnbyvisual ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-linedocumentation)

Ctrl+PageDown

Scrollstodisplaythenextpageofcolumns ScrollToNextPageOfColumns('ScrollToNextPageOfColumnsField'intheon-linedocumentation)

PageDown Scrollstodisplaythenextpageofrows ScrollToNextPageOfRows('ScrollToNextPageOfRowsField'intheon-linedocumentation)

Down Scrollstodisplaythenextrow ScrollToNextRow('ScrollToNextRowField'intheon-linedocumentation)

Left Scrollstodisplaythepreviouscolumnbyindex

ScrollToPreviousColumn('ScrollToPreviousColumnField'intheon-linedocumentation)

Left Scrollstodisplaythepreviouscolumnbyvisual

ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+PageUp Scrollstodisplaythepreviouspageofcolumns

ScrollToPreviousPageOfColumns('ScrollToPreviousPageOfColumnsField'intheon-linedocumentation)

PageUp Scrollstodisplaythepreviouspageofrows ScrollToPreviousPageOfRows('ScrollToPreviousPageOfRowsField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 490

Copyright © GrapeCity, inc. All rights reserved.

Page 492: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UpArrow Scrollstodisplaythepreviousrow ScrollToPreviousRow('ScrollToPreviousRowField'intheon-linedocumentation)

Ctrl+spacebar Selectsthecolumncontainingtheactivecell SelectColumn('SelectColumnField'intheon-linedocumentation)

Home Selectsthefirstiteminthelist SelectFirstItem('SelectFirstItemField'intheon-linedocumentation)

End Selectsthelastiteminthelist SelectLastItem('SelectLastItemField'intheon-linedocumentation)

Down Selectsthenextiteminthelist SelectNextItem('SelectNextItemField'intheon-linedocumentation)

PageDown Selectsthenextpageofitemsinthelist SelectNextPageOfItems('SelectNextPageOfItemsField'intheon-linedocumentation)

UpArrow Selectsthepreviousiteminthelist SelectPreviousItem('SelectPreviousItemField'intheon-linedocumentation)

PageUp Selectsthepreviouspageofitemsinthelist SelectPreviousPageOfItems('SelectPreviousPageOfItemsField'intheon-linedocumentation)

Shift+spacebar Selectstherowcontainingtheactivecell SelectRow('SelectRowField'intheon-linedocumentation)

Ctrl+Shift+spacebar

Selectsthecurrentsheet SelectSheet('SelectSheetField'intheon-linedocumentation)

F4 Ifeditmodeisoninadatecell,spreadsheetdisplaysapop-upcalendartoletyouchooseadate

ShowSubEditor('ShowSubEditorField'intheon-linedocumentation)

EnterorBackspace

Beginsediting;stopseditingifeditmodeison.

StartEditing('StartEditingField'intheon-linedocumentation)orStopEditing('StopEditingField'intheon-linedocumentation)

= Beginseditingformula StartEditingFormula('StartEditingFormulaField'intheon-linedocumentation)

Ctrl+Z Movesactivecelluponerow Undo('UndoField'intheon-linedocumentation)

Keyboardnavigationisdefinedbydefaultmaps,thatmapuserkeyboardactionswithSpreadcomponentactions.Forexample,bydefault,pressingTabmovestheactivecelltothenextcolumn.YoucancustomizeanyorallofthekeyboardactionsbymappingthemtoSpreadcomponentactions.

Thebuilt-inkeyboardactions(forexample,MoveToNextRowWrap)treatacellspanasexistinginbothcolumnsorrows.Youcanenterthespanbynavigatingdowneithercolumnorrow.Whenleavingthespaninabackwardsdirection(forexample,MoveToPreviousRowWrap),thebuilt-inactionusestheupperleftcornerofthespanforcomputingthepreviouscolumnorrow.Whenleavingthespaninaforwardsdirection(forexample,MoveToNextRowWrap),thebuilt-inactionusesthelowerrightcornerofthespanforcomputingthenewcolumnorrow.

FortheCtrl+PageUpandCtrl+PageDownkeys,ifyouwantyourapplicationtomimicthebehaviorfoundinExcel(thatis,moveleftorrightonesheetregardlessofnumberofsheets)thenrebindthekeystrokestotheMoveToPreviousSheetandMoveToNextSheetactions.

Actionsthatextend,move,orscrolltothenextorpreviouscolumnusethevisuallayoutofthescreenbydefault.Thepreviouscolumnisacolumnthatisvisuallyleftoftheactivecolumnandthenextcolumniscolumnthatisvisuallyright

Spread Windows Forms Developer’s Guide 491

Copyright © GrapeCity, inc. All rights reserved.

Page 493: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

oftheactivecolumn.InSpreadWindowsForms2.5,cellcoordinateswereused.Incellcoordinates,thepreviouscolumnistheactivecolumn-1andthenextcolumnistheactivecolumn+1.ThecellcoordinateactionsarestillavailableandarelistedintheSpreadActions('SpreadActionsClass'intheon-linedocumentation)class.

DefaultBehaviorforShapesonaSheet

ThedefaultnavigationkeysforshapesonasheetareusedwithalloperationmodesandcanbechangedwiththeSetInputMapWhenShapeHasFocus('SetInputMapWhenShapeHasFocusMethod'intheon-linedocumentation)method.Thedefaultnavigationkeysforshapesarelistedinthefollowingtable.

KeyCode Action ActionNameTab Movestonextshape ActivateNextShape('ActivateNextShapeField'intheon-line

documentation)

Shift+Tab Movestopreviousshape

ActivatePreviousShape('ActivatePreviousShapeField'intheon-linedocumentation)

Ctrl+CorCtrl+Insert

Copiesshape ClipboardCopyShape('ClipboardCopyShapeField'intheon-linedocumentation)

Ctrl+XorShift+Delete

Cutsshape ClipboardCutShape('ClipboardCutShapeField'intheon-linedocumentation)

Ctrl+VorShift+Insert

Pastesshape ClipboardPasteShape('ClipboardPasteShapeField'intheon-linedocumentation)

N/A Cutsdataonly ClipboardCutDataOnly('ClipboardCutDataOnlyField'intheon-linedocumentation)

Escape Deactivatesshape DeactivateShape('DeactivateShapeField'intheon-linedocumentation)

Ctrl+UpArrow

Decreasesshapeheight

DecreaseShapeHeight('DecreaseShapeHeightField'intheon-linedocumentation)

Ctrl+LeftArrow

Decreasesshapewidth

DecreaseShapeWidth('DecreaseShapeWidthField'intheon-linedocumentation)

Delete Deletesshape DeleteShape('DeleteShapeField'intheon-linedocumentation)

Ctrl+DownArrow

Increasesshapeheight

IncreaseShapeHeight('IncreaseShapeHeightField'intheon-linedocumentation)

Ctrl+RightArrow

Increasesshapewidth

IncreaseShapeWidth('IncreaseShapeWidthField'intheon-linedocumentation)

DownArrow Movesshapedown MoveShapeDown('MoveShapeDownField'intheon-linedocumentation)

LeftArrow Movesshapeleft MoveShapeLeft('MoveShapeLeftField'intheon-linedocumentation)

RightArrow Movesshaperight MoveShapeRight('MoveShapeRightField'intheon-linedocumentation)

UpArrow Movesshapeup MoveShapeUp('MoveShapeUpField'intheon-linedocumentation)

Alt+RightArrow

Rotatesshapeclockwise

RotateShapeClockwise('RotateShapeClockwiseField'intheon-linedocumentation)

Alt+LeftArrow

Rotatesshapecounter-clockwise

RotateShapeCounterClockwise('RotateShapeCounterClockwiseField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 492

Copyright © GrapeCity, inc. All rights reserved.

Page 494: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Formoreinformationaboutshapes,refertoCustomizingDrawing.

DefaultBehaviorforChildControlsonaSheet

ThedefaultnavigationkeysforchildcontrolsonasheetareusedwithalloperationmodesandcanbechangedwiththeSetInputMapWhenChildHasFocus('SetInputMapWhenChildHasFocusMethod'intheon-linedocumentation)method.Thedefaultnavigationkeysforchildcontrolsonasheetarelistedinthefollowingtable.

KeyCode Action ActionNameTab Movestonext

controlActivateNextChild('ActivateNextChildField'intheon-linedocumentation)

Shift+Tab Movestopreviouscontrol

ActivateNextShape('ActivateNextShapeField'intheon-linedocumentation)

Escape Deactivatescontrol DeactivateChild('DeactivateChildField'intheon-linedocumentation)

Ctrl+UpArrow

Decreasescontrolheight

DecreaseChildHeight('DecreaseChildHeightField'intheon-linedocumentation)

Ctrl+LeftArrow

Decreasescontrolwidth

DecreaseShapeWidth('DecreaseShapeWidthField'intheon-linedocumentation)

Delete Deletescontrol DeleteChild('DeleteChildField'intheon-linedocumentation)

Ctrl+DownArrow

Increasescontrolheight

IncreaseChildHeight('IncreaseChildHeightField'intheon-linedocumentation)

Ctrl+RightArrow

Increasescontrolwidth

IncreaseChildWidth('IncreaseChildWidthField'intheon-linedocumentation)

DownArrow Movescontroldown MoveChildDown('MoveChildDownField'intheon-linedocumentation)

LeftArrow Movescontrolleft MoveChildLeft('MoveChildLeftField'intheon-linedocumentation)

RightArrow Movescontrolright MoveChildRight('MoveChildRightField'intheon-linedocumentation)

UpArrow Movescontrolup MoveChildUp('MoveChildUpField'intheon-linedocumentation)

Formoreinformationaboutcontrols,refertoPlacingChildControlsonaSheet.

Default Keyboard Maps

Spreadprovidestwelvedefaultmapsthatmapkeystrokestoactionsforeachfocuslocation(alsoreferredtoasinputmapmode)andoperationmode.Youcancustomizeanyorallofthesemapstochangetheactionassociatedwithakeystrokeortoaddadditionalactionsforotherkeystrokes.

ThefollowingdefaultmapsareprovidedwithSpreadWindowsFormsforeachoperationmodeandinputmapmode.

DefaultMapforExcelCompatibilityDefaultMapforNormalandWhenFocusedDefaultMapforNormalandWhenAncestorOfFocusedDefaultMapforReadOnlyandWhenFocusedDefaultMapforReadOnlyandWhenAncestorOfFocusedDefaultMapforRowModeandWhenFocusedDefaultMapforRowModeandWhenAncestorOfFocused

Spread Windows Forms Developer’s Guide 493

Copyright © GrapeCity, inc. All rights reserved.

Page 495: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DefaultMapforSingleSelectandWhenFocusedDefaultMapforSingleSelectandWhenAncestorOfFocusedDefaultMapforMultiSelectandWhenFocusedDefaultMapforMultiSelectandWhenAncestorOfFocusedDefaultMapforExtendedSelectandWhenFocusedDefaultMapforExtendedSelectandWhenAncestorOfFocused

Default Map for Excel Compatibility

ThedefaultmapforExcelcompatibilitymodeissummarizedinthistable.ThistableapplieswhentheinputmapmodeisWhenAncestorOfFocusedandthestateisnormaloreditmode.

KeyCode ActionNameDelete ClearSelectedCellsData('ClearSelectedCellsDataField'intheon-line

documentation)

Ctrl+UpArrow MoveToPreviousRowWithData('MoveToPreviousRowWithDataField'intheon-linedocumentation)

Ctrl+DownArrow MoveToNextRowWithData('MoveToNextRowWithDataField'intheon-linedocumentation)

Ctrl+LeftArrow MoveToPreviousColumnWithData('MoveToPreviousColumnWithDataField'intheon-linedocumentation)

Ctrl+RightArrow MoveToNextColumnWithData('MoveToNextColumnWithDataField'intheon-linedocumentation)

Ctrl+Shift+UpArrow

ExtendToPreviousRowWithData('ExtendToPreviousRowWithDataField'intheon-linedocumentation)

Ctrl+Shift+DownArrow

ExtendToNextRowWithData('ExtendToNextRowWithDataField'intheon-linedocumentation)

Ctrl+Shift+LeftArrow

ExtendToPreviousColumnWithData('ExtendToPreviousColumnWithDataField'intheon-linedocumentation)

Ctrl+Shift+RightArrow

ExtendToNextColumnWithData('ExtendToNextColumnWithDataField'intheon-linedocumentation)

F2 StartEditing('StartEditingField'intheon-linedocumentation)

F4 Redo('RedoField'intheon-linedocumentation)

Enter MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

Shift+Enter MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

Ctrl+PageUp MoveToPreviousSheet('MoveToPreviousSheetField'intheon-linedocumentation)

Ctrl+PageDown MoveToNextSheet('MoveToNextSheetField'intheon-linedocumentation)

Alt+PageUp MoveToPreviousPageOfColumns('MoveToPreviousPageOfColumnsField'intheon-linedocumentation)

Alt+PageDown MoveToNextPageOfColumns('MoveToNextPageOfColumnsField'intheon-linedocumentation)

Ctrl+; DateTimeNow('DateTimeNowField'intheon-linedocumentation)

Tab MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-line

Spread Windows Forms Developer’s Guide 494

Copyright © GrapeCity, inc. All rights reserved.

Page 496: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

Shift+Tab MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+A SelectSheet('SelectSheetField'intheon-linedocumentation)

Alt+Backspace Undo('UndoField'intheon-linedocumentation)

ThefollowingtableapplieswhentheinputmapmodeisWhenFocusedandthestateisnormal.

KeyCode ActionNameCtrl+C ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+Insert ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+X ClipboardCut('ClipboardCutField'intheon-linedocumentation)

Shift+Delete ClipboardCut('ClipboardCutField'intheon-linedocumentation)

Ctrl+V ClipboardPasteAll('ClipboardPasteAllField'intheon-linedocumentation)

Shift+Insert ClipboardPasteAll('ClipboardPasteAllField'intheon-linedocumentation)

Backspace StartEditing('StartEditingField'intheon-linedocumentation)

= StartEditingFormula('StartEditingFormulaField'intheon-linedocumentation)

Ctrl+Z Undo('UndoField'intheon-linedocumentation)

Ctrl+Y Redo('RedoField'intheon-linedocumentation)

Default Map for Normal and WhenFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameCtrl+C ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+Insert ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+X ClipboardCut('ClipboardCutField'intheon-linedocumentation)

Shift+Delete ClipboardCut('ClipboardCutField'intheon-linedocumentation)

Ctrl+V ClipboardPasteAll('ClipboardPasteAllField'intheon-linedocumentation)

Shift+Insert ClipboardPasteAll('ClipboardPasteAllField'intheon-linedocumentation)

Enter StartEditing('StartEditingField'intheon-linedocumentation)

= StartEditingFormula('StartEditingFormulaField'intheon-linedocumentation)

Default Map for Normal and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameEsc CancelEditing('CancelEditingField'intheon-linedocumentation)

Alt+DownArrow ComboShowList('ComboShowListField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 495

Copyright © GrapeCity, inc. All rights reserved.

Page 497: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Alt+UpArrow ComboShowList('ComboShowListField'intheon-linedocumentation)

F2 ClearCell('ClearCellField'intheon-linedocumentation)

F3 DateTimeNow('DateTimeNowField'intheon-linedocumentation)

Ctrl+Shift+Home ExtendToFirstCell('ExtendToFirstCellField'intheon-linedocumentation)

Shift+Home ExtendToFirstColumn('ExtendToFirstColumnField'intheon-linedocumentation)

Ctrl+Shift+End ExtendToLastCell('ExtendToLastCellField'intheon-linedocumentation)

Shift+End ExtendToLastColumn('ExtendToLastColumnField'intheon-linedocumentation)

Shift+RightArrow ExtendToNextColumnVisual('ExtendToNextColumnVisualField'intheon-linedocumentation)

Ctrl+Shift+RightArrow

ExtendToNextColumnVisual('ExtendToNextColumnVisualField'intheon-linedocumentation)

Ctrl+Shift+PageDown

ExtendToNextPageOfColumns('ExtendToNextPageOfColumnsField'intheon-linedocumentation)

PageDown ExtendToNextPageOfRows('ExtendToNextPageOfRowsField'intheon-linedocumentation)

Shift+PageDown ExtendToNextPageOfRows('ExtendToNextPageOfRowsField'intheon-linedocumentation)

Shift+DownArrow ExtendToNextRow('ExtendToNextRowField'intheon-linedocumentation)

Ctrl+Shift+DownArrow

ExtendToNextRow('ExtendToNextRowField'intheon-linedocumentation)

Shift+LeftArrow ExtendToPreviousColumnVisual('ExtendToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+Shift+LeftArrow

ExtendToPreviousColumnVisual('ExtendToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+Shift+PageUp ExtendToPreviousPageOfColumns('ExtendToPreviousPageOfColumnsField'intheon-linedocumentation)

Shift+UpArrow ExtendToPreviousRow('ExtendToPreviousRowField'intheon-linedocumentation)

Ctrl+Shift+UpArrow

ExtendToPreviousRow('ExtendToPreviousRowField'intheon-linedocumentation)

PageUp ExtendToPreviousPageOfRows('ExtendToPreviousPageOfRowsField'intheon-linedocumentation)

Shift+PageUp ExtendToPreviousPageOfRows('ExtendToPreviousPageOfRowsField'intheon-linedocumentation)

Ctrl+Home MoveToFirstCell('MoveToFirstCellField'intheon-linedocumentation)

Home MoveToFirstColumn('MoveToFirstColumnField'intheon-linedocumentation)

Ctrl+End MoveToLastCell('MoveToLastCellField'intheon-linedocumentation)

End MoveToLastColumn('MoveToLastColumnField'intheon-linedocumentation)

RightArrow MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-linedocumentation)

Ctrl+RightArrow MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-line

Spread Windows Forms Developer’s Guide 496

Copyright © GrapeCity, inc. All rights reserved.

Page 498: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

Tab MoveToNextColumnWrap('MoveToNextColumnWrapField'intheon-linedocumentation)

DownArrow MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

Ctrl+DownArrow MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

LeftArrow MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+LeftArrow MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Shift+Tab MoveToPreviousColumnWrap('MoveToPreviousColumnWrapField'intheon-linedocumentation)

Ctrl+PageUp MoveToPreviousPageOfRows('MoveToPreviousPageOfRowsField'intheon-linedocumentation)

Ctrl+PageDown MoveToPreviousPageOfColumns('MoveToPreviousPageOfColumnsField'intheon-linedocumentation)

Ctrl+UpArrow MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

UpArrow MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

Ctrl+spacebar SelectColumn('SelectColumnField'intheon-linedocumentation)

Shift+spacebar SelectRow('SelectRowField'intheon-linedocumentation)

Enter SelectRow('SelectRowField'intheon-linedocumentation)

Ctrl+Shift+spacebar SelectSheet('SelectSheetField'intheon-linedocumentation)

F4 ShowSubEditor('ShowSubEditorField'intheon-linedocumentation)

Default Map for ReadOnly and WhenFocused

Nodefaultactionsaredefinedforthisoperationmodeandinputmapmode.

Default Map for ReadOnly and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameCtrl+Home ScrollToFirstCell('ScrollToFirstCellField'intheon-linedocumentation)

Home ScrollToFirstColumn('ScrollToFirstColumnField'intheon-linedocumentation)

Ctrl+End ScrollToLastCell('ScrollToLastCellField'intheon-linedocumentation)

End ScrollToLastColumn('ScrollToLastColumnField'intheon-linedocumentation)

RightArrow ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-linedocumentation)

Ctrl+PageDown

ScrollToNextPageOfColumns('ScrollToNextPageOfColumnsField'intheon-linedocumentation)

PageDown ScrollToNextPageOfRows('ScrollToNextPageOfRowsField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 497

Copyright © GrapeCity, inc. All rights reserved.

Page 499: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DownArrow ScrollToNextRow('ScrollToNextRowField'intheon-linedocumentation)

LeftArrow ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+PageUp

ScrollToPreviousPageOfColumns('ScrollToPreviousPageOfColumnsField'intheon-linedocumentation)

PageUp ScrollToPreviousPageOfRows('ScrollToPreviousPageOfRowsField'intheon-linedocumentation)

UpArrow ScrollToPreviousRow('ScrollToPreviousRowField'intheon-linedocumentation)

Default Map for RowMode and WhenFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameF2 ClearCell('ClearCellField'intheon-linedocumentation)

Alt+UpArrow ComboShowList('ComboShowListField'intheon-linedocumentation)

Alt+DownArrow ComboShowList('ComboShowListField'intheon-linedocumentation)

F3 DateTimeNow('DateTimeNowField'intheon-linedocumentation)

F4 ShowSubEditor('ShowSubEditorField'intheon-linedocumentation)

Enter StartEditing('StartEditingField'intheon-linedocumentation)

= StartEditingFormula('StartEditingFormulaField'intheon-linedocumentation)

Default Map for RowMode and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameEsc CancelEditing('CancelEditingField'intheon-linedocumentation)

Ctrl+Home MoveToFirstCell('MoveToFirstCellField'intheon-linedocumentation)

Home MoveToFirstColumn('MoveToFirstColumnField'intheon-linedocumentation)

Ctrl+End MoveToLastCell('MoveToLastCellField'intheon-linedocumentation)

End MoveToLastColumn('MoveToLastColumnField'intheon-linedocumentation)

RightArrow MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-linedocumentation)

Ctrl+RightArrow

MoveToNextColumnVisual('MoveToNextColumnVisualField'intheon-linedocumentation)

Tab MoveToNextColumnWrap('MoveToNextColumnWrapField'intheon-linedocumentation)

Ctrl+PageDown

MoveToNextPageOfColumns('MoveToNextPageOfColumnsField'intheon-linedocumentation)

PageDown MoveToNextPageOfRows('MoveToNextPageOfRowsField'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 498

Copyright © GrapeCity, inc. All rights reserved.

Page 500: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DownArrow MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

Ctrl+DownArrow

MoveToNextRow('MoveToNextRowField'intheon-linedocumentation)

LeftArrow MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Ctrl+LeftArrow

MoveToPreviousColumnVisual('MoveToPreviousColumnVisualField'intheon-linedocumentation)

Shift+Tab MoveToPreviousColumnWrap('MoveToPreviousColumnWrapField'intheon-linedocumentation)

Ctrl+PageUp MoveToPreviousPageOfColumns('MoveToPreviousPageOfColumnsField'intheon-linedocumentation)

PageUp MoveToPreviousPageOfRows('MoveToPreviousPageOfRowsField'intheon-linedocumentation)

UpArrow MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

Ctrl+UpArrow

MoveToPreviousRow('MoveToPreviousRowField'intheon-linedocumentation)

Enter StopEditing('StopEditingField'intheon-linedocumentation)

Default Map for SingleSelect and WhenFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameCtrl+C ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+Insert ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Default Map for SingleSelect and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode

ActionName

RightArrow

ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-linedocumentation)

LeftArrow ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

Home SelectFirstItem('SelectFirstItemField'intheon-linedocumentation)

End SelectLastItem('SelectLastItemField'intheon-linedocumentation)

DownArrow

SelectNextItem('SelectNextItemField'intheon-linedocumentation)

PageDown SelectNextPageOfItems('SelectNextPageOfItemsField'intheon-linedocumentation)

UpArrow SelectPreviousItem('SelectPreviousItemField'intheon-linedocumentation)

PageUp SelectPreviousPageOfItems('SelectPreviousPageOfItemsField'intheon-line

Spread Windows Forms Developer’s Guide 499

Copyright © GrapeCity, inc. All rights reserved.

Page 501: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation)

Default Map for MultiSelect and WhenFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameCtrl+C ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+Insert ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Default Map for MultiSelect and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode

ActionName

Home MoveToFirstItem('MoveToFirstItemField'intheon-linedocumentation)

End MoveToLastItem('MoveToLastItemField'intheon-linedocumentation)

DownArrow

MoveToNextItem('MoveToNextItemField'intheon-linedocumentation)

PageDown MoveToNextPageOfItems('MoveToNextPageOfItemsField'intheon-linedocumentation)

UpArrow MoveToPreviousItem('MoveToPreviousItemField'intheon-linedocumentation)

PageUp MoveToPreviousPageOfItems('MoveToPreviousPageOfItemsField'intheon-linedocumentation)

RightArrow

ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-linedocumentation)

LeftArrow ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

spacebar ToggleItem('ToggleItemField'intheon-linedocumentation)

Default Map for ExtendedSelect and WhenFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

KeyCode ActionNameCtrl+C ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Ctrl+Insert ClipboardCopy('ClipboardCopyField'intheon-linedocumentation)

Default Map for ExtendedSelect and WhenAncestorOfFocused

Thedefaultmapforthisoperationmodeandinputmapmodeissummarizedinthistable.

Key ActionName

Spread Windows Forms Developer’s Guide 500

Copyright © GrapeCity, inc. All rights reserved.

Page 502: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CodeRight ScrollToNextColumnVisual('ScrollToNextColumnVisualField'intheon-line

documentation)

LeftArrow ScrollToPreviousColumnVisual('ScrollToPreviousColumnVisualField'intheon-linedocumentation)

Home SelectFirstItem('SelectFirstItemField'intheon-linedocumentation)

End SelectLastItem('SelectLastItemField'intheon-linedocumentation)

DownArrow

SelectNextItem('SelectNextItemField'intheon-linedocumentation)

PageDown SelectNextPageOfItems('SelectNextPageOfItemsField'intheon-linedocumentation)

PageUp SelectPreviousPageOfItems('SelectPreviousPageOfItemsField'intheon-linedocumentation)

UpArrow SelectPreviousItem('SelectPreviousItemField'intheon-linedocumentation)

Deactivating the Default Keyboard Map

Youcandeactivateorturnoffthedefaultinputmap.

UsingCode

1. CreateanInputMap('InputMapClass'intheon-linedocumentation)object.2. UsetheGetInputMap('GetInputMapMethod'intheon-linedocumentation)method.

Example

ThisexampledeactivatestheF2key.

C#private void Form1_Load(object sender, System.EventArgs e){ FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap(); // Deactivate F2 key in cells not being edited. im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None); // Deactivate F2 key in cells being edited. im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None);}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim im As New FarPoint.Win.Spread.InputMap ' Deactivate F2 key in cells not being edited. im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None)

Spread Windows Forms Developer’s Guide 501

Copyright © GrapeCity, inc. All rights reserved.

Page 503: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

' Deactivate F2 key in cells being edited. im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None)End Sub

Changing the Default Keyboard Map

Thedefaultinputmapdefinesthebehaviorofthecomponentforenduserinteractionwiththekeyboard.Forexample,bydefault,whentheenduserpressestheEnterkeyinanactivecell,theeditmodeturnsonforthatcell.Youcanchangethisdefaultbehavior,bychangingthedefaultinputmap.

UsingCode

1. CreateanInputMap('InputMapClass'intheon-linedocumentation)object.2. UsetheGetInputMap('GetInputMapMethod'intheon-linedocumentation)method.

Example

ThisexamplechangesthebehaviorsothatpressingtheEnterkeymovestheactivecelltothenextrow.

C#private void Form1_Load(object sender, System.EventArgs e){ FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap(); // Define the operation of pressing Enter key in cells not being edited as "Move to the next row". im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow); // Define the operation of pressing Enter key in cells being edited as "Move to the next row". im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim im As New FarPoint.Win.Spread.InputMap ' Define the operation of pressing Enter key in cells not being edited as "Move to the next row". im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow) ' Define the operation of pressing Enter key in cells being edited as "Move to the next row".im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)

Spread Windows Forms Developer’s Guide 502

Copyright © GrapeCity, inc. All rights reserved.

Page 504: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)End Sub

Example

ThisexampledeactivatestheF2key.

C#private void Form1_Load(object sender, System.EventArgs e){ FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap(); // Deactivate F2 key in cells not being edited. im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None); // Deactivate F2 key in cells being edited. im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);im.Put(new FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None);}

VBPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim im As New FarPoint.Win.Spread.InputMap ' Deactivate F2 key in cells not being edited. im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None) ' Deactivate F2 key in cells being edited. im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.F2, Keys.None), FarPoint.Win.Spread.SpreadActions.None)End Sub

Using Input Maps with Action Maps

Internally,theSpreadViewobjectusesaninputmappairedwithanactionmaptoprocessakeystroke.Aninputmap(InputMap('InputMapClass'intheon-linedocumentation)object)isusedtoconvertakeystroke(KeyStroke('KeystrokeStructure'intheon-linedocumentation)object)toanobjectthatidentifiestheaction.Anactionmap(ActionMap('ActionMapClass'intheon-linedocumentation)object)isusedtoconverttheobjecttoanaction.

UsingCode

1. CreateanewInputMap('InputMapClass'intheon-linedocumentation)objectforwhichtomapkeysandactions.

2. SetanexistinginputmapequaltotheInputMap('InputMapClass'intheon-linedocumentation)objectyoucreated.

3. UsetheInputMap('InputMapClass'intheon-linedocumentation)classPutmethodtomapspecifickeystospecificactions.

Spread Windows Forms Developer’s Guide 503

Copyright © GrapeCity, inc. All rights reserved.

Page 505: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Forexample,theinternalcodethathandlesKeyDowneventslookssomethinglikethis:

C#object actionMapKey = GetInputMap(InputMapMode.WhenFocused).Get(newKeystroke(e.KeyCode, e.Modifiers));if (actionMapKey != null){ Action action = GetActionMap().Get(actionMapKey); if (action != null) { action.PerformAction(this); e.Handled = true; }}

VBDim actionMapKey As Object = GetInputMap(InputMapMode.WhenFocused).Get(New Keystroke(e.KeyCode, e.Modifiers))If Not (actionMapKey Is Nothing) Then Dim action As Action = GetActionMap().Get(actionMapKey) If Not (action Is Nothing) Then action.PerformAction(Me) e.Handled = True End IfEnd If

ExcelusesCtl+9andCtl+Shift+9tohideandunhiderows.SupposeyouwanttoimplementthisfeatureinSpread.Youcouldcreatethefollowingclassestodefinethehideandunhideactions.

C#private class HideRowAction : Action{ public override void PerformAction(object source) { if (source is SpreadView) { SpreadView spread = (SpreadView)source; SheetView sheet = spread.Sheets[spread.ActiveSheetIndex]; if (sheet.SelectionCount > 0) { for (int i = 0; i < sheet.SelectionCount; i++) { CellRange range = sheet.GetSelection(i); if (range.Row == -1) sheet.Rows[0, sheet.RowCount - 1].Visible = false; else sheet.Rows[range.Row, range.Row + range.RowCount - 1].Visible = false; } } else { sheet.Rows[sheet.ActiveRowIndex].Visible = false;

Spread Windows Forms Developer’s Guide 504

Copyright © GrapeCity, inc. All rights reserved.

Page 506: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

} } }} private class UnhideRowAction : Action{ public override void PerformAction(object source) { if (source is SpreadView) { SpreadView spread = (SpreadView)source; SheetView sheet = spread.Sheets[spread.ActiveSheetIndex]; if (sheet.SelectionCount > 0) { for (int i = 0; i < sheet.SelectionCount; i++) { CellRange range = sheet.GetSelection(i); if (range.Row == -1) sheet.Rows[0, sheet.RowCount - 1].Visible = true; else sheet.Rows[range.Row, range.Row + range.RowCount - 1].Visible = true; } } else { sheet.Rows[sheet.ActiveRowIndex].Visible = true; } } }}

VBPrivate Class HideRowAction Inherits Action Public Overrides Sub PerformAction([source] As Object) If TypeOf [source] Is SpreadView Then Dim spread As SpreadView = CType([source], SpreadView) Dim sheet As SheetView = spread.Sheets(spread.ActiveSheetIndex) If sheet.SelectionCount > 0 Then Dim i As Integer For i = 0 To sheet.SelectionCount - 1 Dim range As CellRange = sheet.GetSelection(i) If range.Row = - 1 Then sheet.Rows(0, sheet.RowCount - 1).Visible = False Else sheet.Rows(range.Row, range.Row + range.RowCount - 1).Visible = False End If Next i Else sheet.Rows(sheet.ActiveRowIndex).Visible = False End If End If End Sub 'PerformActionEnd Class 'HideRowAction

Spread Windows Forms Developer’s Guide 505

Copyright © GrapeCity, inc. All rights reserved.

Page 507: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Private Class UnhideRowAction Inherits Action Public Overrides Sub PerformAction([source] As Object) If TypeOf [source] Is SpreadView Then Dim spread As SpreadView = CType([source], SpreadView) Dim sheet As SheetView = spread.Sheets(spread.ActiveSheetIndex) If sheet.SelectionCount > 0 Then Dim i As Integer For i = 0 To sheet.SelectionCount - 1 Dim range As CellRange = sheet.GetSelection(i) If range.Row = - 1 Then sheet.Rows(0, sheet.RowCount - 1).Visible = True Else sheet.Rows(range.Row, range.Row + range.RowCount - 1).Visible = True End If Next i Else sheet.Rows(sheet.ActiveRowIndex).Visible = True End If End If End Sub 'PerformActionEnd Class 'UnhideRowAction

Youcouldthenaddthekeystrokesandactionstothemapsasfollows.

C#InputMap im = spread.GetInputMap(InputMapMode.WhenFocused);ActionMap am = spread.GetActionMap();im.Put(new Keystroke(Keys.D9, Keys.Control), "HideRow");im.Put(new Keystroke(Keys.D9, Keys.Control | Keys.Shift), "UnhideRow");am.Put("HideRow", new HideRowAction());am.Put("UnhideRow", new UnhideRowAction());

VBDim im As InputMap = spread.GetInputMap(InputMapMode.WhenFocused)Dim am As ActionMap = spread.GetActionMap()im.Put(New Keystroke(Keys.D9, Keys.Control), "HideRow")im.Put(New Keystroke(Keys.D9, Keys.Control Or Keys.Shift), "UnhideRow")am.Put("HideRow", New HideRowAction())am.Put("UnhideRow", New UnhideRowAction())

Formoreinformation,refertothemethodsinActionMap('ActionMapClass'intheon-linedocumentation)andInputMap('InputMapClass'intheon-linedocumentation)classes.

C#public class FpSpread : ...{ ... public ActionMap GetActionMap(); public void SetActionMap(ActionMap value);} public class SpreadView : ...{ ... public ActionMap GetActionMap();

Spread Windows Forms Developer’s Guide 506

Copyright © GrapeCity, inc. All rights reserved.

Page 508: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

public void SetActionMap(ActionMap value);} public class ActionMap{ public ActionMap(); public object[] AllKeys(); public object[] Keys(); public ActionMap Parent { get; set; } public int Size { get; } public void Clear(); public Action Get(object key); public void Put(object key, Action action); public void Remove(object key);} public abstract class Action{ public abstract void PerformAction(object source);}

VBPublic Class FpSpread ......Public Function GetActionMap() As ActionMap

Public Sub SetActionMap(value As ActionMap)

End Class 'FpSpread

Public Class SpreadView ......Public Function GetActionMap() As ActionMap

Public Sub SetActionMap(value As ActionMap)

End Class 'SpreadView

Public Class ActionMap

Public Sub ActionMap()Public object AllKeys()Public object Keys()Public ActionMap ParentPublic Size As IntegerPublic Sub Clear()Public Action Get(By key As object)Public Sub Put(By key As object, By action As Action)Public Sub Remove(By key As object)}

Public MustOverride Class Action{Public Sub PerformAction(By source As object)}

Customizing the Input Maps

YoucanusethedefaultnavigationkeysthataremappedtoSpreadactions.YoucanalsocustomizetheseinputmapssothatanykeyorkeycombinationcanmaptoanySpreadcomponentaction.

Spread Windows Forms Developer’s Guide 507

Copyright © GrapeCity, inc. All rights reserved.

Page 509: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

BesuretoreadFactorsofKeyboardMapUsage.

TheavailableactionstowhichyoucanmapkeysorkeycombinationsareprovidedintheSpreadActions('SpreadActionsClass'intheon-linedocumentation)class.

ThedefaultmapscreatethedefaultnavigationandactionkeyslistedinDefaultKeyboardMaps.Thesemapsareforthedefaultoperationmode,Normal.Othermapsareprovidedforotheroperationmodes.Besuretosetthemapfortheoperationmodeinwhichyourcomponentisworkingwhencustomizinginputmaps.Formoreinformationaboutdefaultvaluesofthevariousmodes,refertoDefaultKeyboardMaps.Inputmapsworkdifferentlydependingonthecurrentfocus.

Formoredetaileddescriptionsofinputmaps,refertotheInputMap('InputMapClass'intheon-linedocumentation)class.

ThePropertieswindowdoesnothaveoptionstocustomizeinputmaps.

UsingCode

1. CreateanewInputMap('InputMapClass'intheon-linedocumentation)objectforwhichtomapkeysandactions.

2. SetanexistinginputmapequaltotheInputMap('InputMapClass'intheon-linedocumentation)objectyoucreated.

3. UsetheInputMap('InputMapClass'intheon-linedocumentation)classPutmethodtomapspecifickeystospecificactions.

Example

ThisexamplecodesetstheinputmapforoperationmodeNormalforboththeobjectwithfocusanditsancestor.ThisexamplesetstheEnterkeytoalwaysmovetothenextrow.

C#// Create an InputMap object.FarPoint.Win.Spread.InputMap inputmap1;// Assign the InputMap object to the existing map.inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);// Map the Enter key.inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);// Create another InputMap object.FarPoint.Win.Spread.InputMap inputmap2;// Assign this InputMap object to the existing map.inputmap2 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);// Map the Enter key.inputmap2.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

VB' Create an InputMap object.Dim inputmap1 As New FarPoint.Win.Spread.InputMap()' Assign the InputMap object to the existing map.inputmap1 = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)' Map the Enter key.inputmap1.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

Spread Windows Forms Developer’s Guide 508

Copyright © GrapeCity, inc. All rights reserved.

Page 510: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

' Create another InputMap object.Dim inputmap2 As New FarPoint.Win.Spread.InputMap()' Assign this InputMap object to the existing map.inputmap2 = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)' Map the Enter key.inputmap2.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow)

UsingtheSpreadDesigner

1. IntheSettingsmenu,clicktheInputMapiconundertheOtherSettingssection.

2. Selecttheinputmap,key,andaction.

3. Addthenewkeyandaction.

4. SelectOK.

5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Changing an Input Map for a Child View

Normally,whenyouchangeaninputmapdefinition,itappliesonlytoinputsintheactivesheet.Forahierarchicaldisplay,thisonlyappliestotheparentsheetandnottoanyexpandedchildsheetsofthehierarchy.Spreadtreatstheparentandeachchildasdifferentworkbooks.Ifyouwanttochangeinputmapsforchildpartsofahierarchy,youneedtoimplementtheChildWorkbookCreated('ChildWorkbookCreatedEvent'intheon-linedocumentation)eventwhichoccurswhenthechildworkbooksarecreated.Thenyoucanchangetheinputmapsforthosechildworkbooks.

UsingCode

1. CreateanInputMap('InputMapClass'intheon-linedocumentation)object.2. UsetheGetInputMap('GetInputMapMethod'intheon-linedocumentation)method.3. UsethePut('PutMethod'intheon-linedocumentation)method.4. Createadataset.

Example

Thisexampleshowshowtochangeaninputmapforaparent,thenexpandahierarchicaldisplayandchangetheinput

Spread Windows Forms Developer’s Guide 509

Copyright © GrapeCity, inc. All rights reserved.

Page 511: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

mapforachildofthathierarchy.

C# private void Form1_Load(object sender, System.EventArgs e) { // Change input maps for Enter key in parent hierarchies. FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap(); im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow); im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow); DataSet ds = new DataSet(); DataTable fpParent = new DataTable(); DataTable fpChild1 = new DataTable(); fpParent = ds.Tables.Add("SAMPLE"); fpParent.Columns.AddRange(new DataColumn[] {new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32"))}); fpParent.Rows.Add(new object[] {"Parent1", 0}); fpParent.Rows.Add(new object[] {"Parent2", 1}); fpChild1 = ds.Tables.Add("Child1"); fpChild1.Columns.AddRange(new DataColumn[] {new DataColumn("Column1", Type.GetType("System.String")), new DataColumn("Column2", Type.GetType("System.Int32"))}); fpChild1.Rows.Add(new object[] {"Child1-1", 0}); fpChild1.Rows.Add(new object[] {"Child1-2", 0}); fpChild1.Rows.Add(new object[] {"Child1-3", 0}); fpChild1.Rows.Add(new object[] {"Child2-1", 1}); fpChild1.Rows.Add(new object[] {"Child2-2", 1}); fpChild1.Rows.Add(new object[] {"Child2-3", 1}); ds.Relations.Add("Relation1", fpParent.Columns["Column2"], fpChild1.Columns["Column2"]); fpSpread1.ActiveSheet.DataSource = ds; // Expand child hierarchies. fpSpread1.ActiveSheet.ExpandRow(0, true); fpSpread1.ActiveSheet.ExpandRow(1, true); } private void fpSpread1_ChildWorkbookCreated(object sender, FarPoint.Win.Spread.ChildWorkbookCreatedEventArgs e) { // Change its input map for Enter key in child hierarchies (e.Workbook: the target is child SpreadView). FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap(); im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow); im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused); im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

Spread Windows Forms Developer’s Guide 510

Copyright © GrapeCity, inc. All rights reserved.

Page 512: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

}

VB Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Change input maps for Enter key in parent hierarchies. Dim im As New FarPoint.Win.Spread.InputMap im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow) im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow) Dim ds As New DataSet Dim fpParent As DataTable Dim fpChild1 As DataTable fpParent = ds.Tables.Add("SAMPLE") fpParent.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))}) fpParent.Rows.Add(New Object() {"Parent1", 0}) fpParent.Rows.Add(New Object() {"Parent2", 1}) fpChild1 = ds.Tables.Add("Child1") fpChild1.Columns.AddRange(New DataColumn() {New DataColumn("Column1", Type.GetType("System.String")), New DataColumn("Column2", Type.GetType("System.Int32"))}) fpChild1.Rows.Add(New Object() {"Child1-1", 0}) fpChild1.Rows.Add(New Object() {"Child1-2", 0}) fpChild1.Rows.Add(New Object() {"Child1-3", 0}) fpChild1.Rows.Add(New Object() {"Child2-1", 1}) fpChild1.Rows.Add(New Object() {"Child2-2", 1}) fpChild1.Rows.Add(New Object() {"Child2-3", 1}) ds.Relations.Add("Relation1", fpParent.Columns("Column2"), fpChild1.Columns("Column2"))FpSpread1.ActiveSheet.DataSource = ds ' Expand child hierarchies. FpSpread1.ActiveSheet.ExpandRow(0, True) FpSpread1.ActiveSheet.ExpandRow(1, True) End Sub

Private Sub FpSpread1_ChildWorkbookCreated(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.ChildWorkbookCreatedEventArgs) Handles FpSpread1.ChildWorkbookCreated ' Change its input map for Enter key in child hierarchies (e.Workbook: the target is child SpreadView). Dim im As New FarPoint.Win.Spread.InputMap im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow) im = e.Workbook.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None),

Spread Windows Forms Developer’s Guide 511

Copyright © GrapeCity, inc. All rights reserved.

Page 513: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.SpreadActions.MoveToNextRow) End Sub

Using the Excel Compatibility Input Maps

YoucanspecifywhethertousethedefaultSpreadinputmapsortheExcelcompatibilityinputmaps.Youcanalsospecifytheinputmapmodeandtheoperationmode.Someactionsmaynotapplytocertainmodessuchasstartingcelleditingwithread-onlymode.

UsetheLoadXmlInputMapFile('LoadXmlInputMapFileMethod'intheon-linedocumentation)methodtoloadtheExcelcompatibilityfileorotherinputmapfile.SpreadinstallsadefaultExcelcompatibilityfiletotheproductbinfolder.

UsingCode

SettheoptionsintheLoadXmlInputMapFile('LoadXmlInputMapFileMethod'intheon-linedocumentation)method.

Example

ThisexamplespecifiestheExcelcompatibilityoption.

C#fpSpread1.LoadXmlInputMapFile("ExcelCompatibility.imp");//fpSpread1.LoadXmlInputMapFile("ExcelCompatibility.imp",FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused,FarPoint.Win.Spread.OperationMode.Normal);

VBFpSpread1.LoadXmlInputMapFile("ExcelCompatibility.imp")'FpSpread1.LoadXmlInputMapFile("ExcelCompatibility.imp",FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused,FarPoint.Win.Spread.OperationMode.Normal)

UsingtheSpreadDesigner

1. SelecttheSettingsmenuandthenselecttheInputMapiconlocatedundertheOtherSettingssection.2. ClicktheLoadInputMapsbuttontoloadtheExcelcompatibilityfile.3. SelectOK.4. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Saving and Loading Map Files

YoucanloadorsavetheinputmapstoanXMLfile.UsetheSaveXmlInputMapFile('SaveXmlInputMapFileMethod'intheon-linedocumentation)methodtosavetoafileandtheLoadXmlInputMapFile('LoadXmlInputMapFileMethod'intheon-linedocumentation)toloadfromaninputmapfile.

SpreadinstallsadefaultExcelcompatibilityXMLfiletotheinputmapfolder.

UsingCode

1. Createaninputmap.

Spread Windows Forms Developer’s Guide 512

Copyright © GrapeCity, inc. All rights reserved.

Page 514: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Savetheinputmaptoafile.

Example

ThisexamplesavesaninputmaptoanXMLfile.

C#FarPoint.Win.Spread.SpreadView sv = fpSpread1.GetRootWorkbook();FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None),FarPoint.Win.Spread.SpreadActions.MoveToNextRow);sv.SetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused, im);fpSpread1.SaveXmlInputMapFile("file.xml",FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused,FarPoint.Win.Spread.OperationMode.Normal);

VBDim sv As FarPoint.Win.Spread.SpreadView = FpSpread1.GetRootWorkbookDim im As New FarPoint.Win.Spread.InputMap()im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None),FarPoint.Win.Spread.SpreadActions.MoveToNextRow)sv.SetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused, im)FpSpread1.SaveXmlInputMapFile("file.xml",FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused,FarPoint.Win.Spread.OperationMode.Normal)

UsingtheSpreadDesigner

1. SelecttheSettingsmenuandthenselecttheInputMapiconlocatedundertheOtherSettingssection.2. FromtheSelectInputMapsection,selectthemodeoptions.3. Specifytheshortcutkeyandaction.4. ClickAddtoaddthenewinputmap.5. UsetheSavebuttontosavetheinputmaptoafile.UsetheLoadInputMapsbuttontoloadaninputmapfileinstead.

6. SelectOKtoapplytheinputmap.7. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Spread Windows Forms Developer’s Guide 513

Copyright © GrapeCity, inc. All rights reserved.

Page 515: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing Events from User Actions

ThistopicsummarizeswhicheventsareraisedforeachuseractionontheSpreadcomponent.Whileitisnotacomprehensivelistofeveryactionthattheusercouldpossiblyperform,itdetailstheeventsformostofthecommonactionsperformedbytheuser.

Thetypesofuseractionsareorganizedasfollows:

ClickingActionsSelectingActionsEnteringDataActionsSheet-LevelActionsInteractivityActionsShapeActionsPrintActions

Thelistsprovidedinthesesectionsareanattempttoillustratethesequenceofeventsthatareraisedfortypicalactions.Sincesomeactionsoccurallthetimeorrepeatedlyforanyoftheseactions,wehaveleftoffsomeoftheseactionsfromthelists.Forexample,theselistsdonotincludeMouseMove,MouseHover,MouseEnter,MouseLeave,Invalidated,andCursorChangedevents.

Ingeneral,ifyouarelookingforawaytointercepteachchangethatoccursinacell,theEditChangeeventisraisedforeachkeystroketheusermakesastheyaretypingdataintoacell.

Clicking Actions

Clicking,double-clicking,andright-clickingactionsinSpreadresultintheseevents:

UserAction ListofEventsClickonageneralcell MouseDown

EnterGotFocusCellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)PaintMouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'intheon-linedocumentation)Paint

Clickonacomboboxcellandselectanitem

ComboDropDown('ComboDropDownEvent'intheon-linedocumentation)ComboSelChange('ComboSelChangeEvent'intheon-linedocumentation)EditChange('EditChangeEvent'intheon-linedocumentation)ComboCloseUp('ComboCloseUpEvent'intheon-linedocumentation)Paint

Clickonamultipleoptioncell MouseDown

Spread Windows Forms Developer’s Guide 514

Copyright © GrapeCity, inc. All rights reserved.

Page 516: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

andselectanoption CellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)EditModeStarting('EditModeStartingEvent'intheon-linedocumentation)MouseCaptureChangedControlAddedEditModeOn('EditModeOnEvent'intheon-linedocumentation)LostFocusPaintButtonClicked('ButtonClickedEvent'intheon-linedocumentation)

Double-clickageneralcell(gointoeditmode)

MouseDownCellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)PaintMouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'intheon-linedocumentation)PaintMouseDownCellDoubleClick('CellDoubleClickEvent'intheon-linedocumentation)EditModeStarting('EditModeStartingEvent'intheon-linedocumentation)MouseCaptureChangedLayoutControlAddedEditModeOn('EditModeOnEvent'intheon-linedocumentation)LostFocusPaint

Expandingahierarchy(thefirsttime)

MouseDownCellClick('CellClickEvent'intheon-linedocumentation)Expand('ExpandEvent'intheon-linedocumentation)LayoutControlAddedLayoutDataColumnConfigure('DataColumnConfigureEvent'intheon-linedocumentation)...DataColumnConfigure('DataColumnConfigureEvent'intheon-linedocumentation)(repeatforeachcolumninexpandedrow)LayoutControlAdded

Spread Windows Forms Developer’s Guide 515

Copyright © GrapeCity, inc. All rights reserved.

Page 517: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Layout...Layout(repeatforeachcolumninexpandedrow)ControlAddedLayout...Layout(repeatforeachexpandedrow)ChildWorkbookCreated('ChildWorkbookCreatedEvent'intheon-linedocumentation)ChildViewCreated('ChildViewCreatedEvent'intheon-linedocumentation)LayoutControlRemovedLayoutControlRemovedLayoutControlAddedLayout...Layout(repeatforeachexpandedcolumn)ControlAddedLayoutPaintMouseUpMouseCaptureChangedPaint

Expandingahierarchy(subsequenttimes)

MouseDownCellClick('CellClickEvent'intheon-linedocumentation)Expand('ExpandEvent'intheon-linedocumentation)LayoutControlAddedLayout...Layout(repeated)ControlAddedLayoutPaintMouseUpMouseCaptureChangedPaint

Collapsingahierarchy(thefirsttimeorsubsequenttimes)

MouseDownCellClick('CellClickEvent'intheon-linedocumentation)Expand('ExpandEvent'intheon-linedocumentation)LayoutControlRemovedLayoutControlRemovedPaintMouseUpMouseUp

Spread Windows Forms Developer’s Guide 516

Copyright © GrapeCity, inc. All rights reserved.

Page 518: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Paint

Selecting Actions

ActionssuchasselectingcellsandworkingwithselectionsinSpreadresultintheseevents:

UserAction ListofEventsSelectacell-clickageneral(default)cell MouseDown

EnterGotFocusCellClick('CellClickEvent'intheon-linedocumentation)MouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'intheon-linedocumentation)Paint

Selectrangeofcells-clickageneral(default)cellanddragtoanothercell

MouseDownCellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)PaintSelectionChanging('SelectionChangingEvent'intheon-linedocumentation)Paint...(repeatingPainteverytimeyoudragovertoacellinanotherroworcolumn)MouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'intheon-linedocumentation)Paint

Selectarow(orcolumn)-clickonheadercell MouseDownEnterGotFocusCellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)MouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'in

Spread Windows Forms Developer’s Guide 517

Copyright © GrapeCity, inc. All rights reserved.

Page 519: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theon-linedocumentation)Paint

Entering Data Actions

ActionsinvolvedwithenteringdatainSpreadresultintheseevents.Thesearejustafew.Youcanalsoseewhateventsoccurwhenaformulaisentered.Herearetheeventsforenteringavalue:

UserAction ListofEventsEnteravalueinacell

(seeeventsforclickinacell)EditChange('EditChangeEvent'intheon-linedocumentation)(repeatEditChangeforeachkeypressed)MouseDownEditModeOff('EditModeOffEvent'intheon-linedocumentation)LayoutControlRemovedChange('ChangeEvent'intheon-linedocumentation)GotFocusCellClick('CellClickEvent'intheon-linedocumentation)LeaveCell('LeaveCellEvent'intheon-linedocumentation)EnterCell('EnterCellEvent'intheon-linedocumentation)PaintMouseUpMouseCaptureChangedSelectionChanged('SelectionChangedEvent'intheon-linedocumentation)PaintLostFocusLeaveValidatingValidated

Sheet-Level Actions

Sheet-levelactionsinSpreadresultintheseevents:

Action ListofEventsClickontabofnewsheet MouseDown

EnterGotFocusSheetTabClick('SheetTabClickEvent'intheon-linedocumentation)ActiveSheetChanging('ActiveSheetChangingEvent'intheon-linedocumentation)ActiveSheetChanged('ActiveSheetChangedEvent'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 518

Copyright © GrapeCity, inc. All rights reserved.

Page 520: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

PaintMouseUpMouseCaptureChangedPaint

Clickonthetaboftheactivesheet

Paint

Removeasheet Paint

Interactivity Actions

ThistableliststheeventsforthevariousactionsinvolvedwithuserinteractivityinSpread.Youcanalsoseewhateventsoccurforsorting,filtering,grouping,andsearching.Orcreatinganewviewportormovingascrollbarbyclickingthescrollbarbutton.

Action ListofEventsResizeacolumn-dragthecolumnresizecursor

MouseDownEnterGotFocusMouseUpMouseCaptureChangedColumnWidthChanged('ColumnWidthChangedEvent'intheon-linedocumentation)Paint

Shape Actions

ThistableliststheeventsforthevariousshapeactionsinSpread.Youcanalsoseewhateventsoccurwhenashapeisdeleted.

Action ListofEventsMoveShape MouseDown

ShapeActivated('ShapeActivatedEvent'intheon-linedocumentation)Paint...Paint(repeatedforeachcellmovedthrough)MouseUpMouseCaptureChanged

RotateShape MouseDownPaint...Paint(repeatedforeachcellmovedthrough)MouseUpMouseCaptureChanged

Print Actions

Spread Windows Forms Developer’s Guide 519

Copyright © GrapeCity, inc. All rights reserved.

Page 521: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThistableliststheeventsforthevariousprintingactionsinSpread:

Action ListofEventsPrintPreview

PrintMessageBox('PrintMessageBoxEvent'intheon-linedocumentation)PrintPreviewShowing('PrintPreviewShowingEvent'intheon-linedocumentation)LostFocusPrintBackground('PrintBackgroundEvent'intheon-linedocumentation)PrintAbort('PrintAbortEvent'intheon-linedocumentation)PrintMessageBox('PrintMessageBoxEvent'intheon-linedocumentation)

Printasheet PrintMessageBox('PrintMessageBoxEvent'intheon-linedocumentation)PrintMessageBox('PrintMessageBoxEvent'intheon-linedocumentation)PrintBackground('PrintBackgroundEvent'intheon-linedocumentation)PrintAbort('PrintAbortEvent'intheon-linedocumentation)PrintMessageBox('PrintMessageBoxEvent'intheon-linedocumentation)GotFocusPaint

Spread Windows Forms Developer’s Guide 520

Copyright © GrapeCity, inc. All rights reserved.

Page 522: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing File Operations

YoucansavedatafromSpreadintoseveraldifferentfiletypesandopendatafilesfromseveraldifferentfiletypesintoSpread.Atdesigntime,youcanusetheSpreadDesignertosavetheSpreadtoanyofvariousfiletypesoropenpreviouslysavedfiles.Withcode,youcansavethewholecomponent,aparticularsheet,ordatafromaparticularrangeofcellstoseveraldifferentfiletypesorstreams.Similarly,youcanallowyouruserstohandlefileoperationsforarangeoffiletypes.

Theproceduresformanagingfileoperationsinclude:

SavingDatatoaFileOpeningExistingFilesUsingSerializationSavingandLoadingaSkin

ForinformationaboutsavingandopeningfilesinSpreadDesigner,refertoSavingandOpeningDesignFiles(on-linedocumentation)intheSpreadDesignerGuide.

Saving Data to a File

Youcansavethedata,andforsometypesoffilesthedataandformatting,inthecomponenttoafileorstream.SpreadprovidesmethodsforsavingfromaSpreadfiletoseveralfiletypes.Consultthefollowingtopicsforinstructionsandmoreinformationregardingsavingtoafile.

SavingtoaSpreadXMLFileSavingtoanExcelFileSavingtoaTextFileSavingtoanHTMLTableSavingSpreadsheetDatatoSimpleXML

Saving to a Spread XML File

YoucansavethedataorthedataandformattinginaSpreadcomponenttoaSpreadXMLfileortoastream.AllsheetsinthecomponentaresavedtothefileorstreamifyouusetheSave('SaveMethod'intheon-linedocumentation)methodintheFpSpreadclass.Ifyouchoosetosavetheformatting,thesaveddataincludesformattingcharacters,suchascurrencysymbols,andotherinformationsuchascelltypes.

Formoredetailsonthemethodsused,refertotheSave('SaveMethod'intheon-linedocumentation)methodsintheFpSpread('FpSpreadClass'intheon-linedocumentation)classortheSaveXml('SaveXmlMethod'intheon-linedocumentation)methodsintheSheetView('SheetViewClass'intheon-linedocumentation)class.

ForinstructionsforopeningSpread-compatibleXMLfiles,seeOpeningaSpreadXMLFile.

UsingCode

UsetheSave('SaveMethod'intheon-linedocumentation)methodoftheFpSpread('FpSpreadClass'intheon-linedocumentation)componenttospecifythepathandfilenameoftheSpreadXMLfileortheStreamobject,andwhethertosavedataonly.

Example

ThisexamplecodesavesthedataandformattinginaSpreadcomponenttoaSpreadXMLfile.

Spread Windows Forms Developer’s Guide 521

Copyright © GrapeCity, inc. All rights reserved.

Page 523: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

C#// Save the data and formatting to an XML file.fpSpread1.Save("C:\\SpWinFile1.xml", false);

VB' Save the data and formatting to an XML file.FpSpread1.Save("C:\SpWinFile1.xml", False)

UsingtheSpreadDesigner

1. FromtheFilemenu,chooseSave.TheSaveAsdialogappears.

2. ChangetheSaveastypeboxtoXMLfiles(*.xml).3. Specifythepathandfilenametowhichtosavethefile,andthenclickSave.

Ifthefileissavedsuccessfully,amessageappearsstatingthefilehasbeensaved.

4. ClickOKtoclosetheSpreadDesigner.

Saving to an Excel File

YoucansavedatatoanExcel-formattedfile(BIFF8format)ortheExcel2007XMLformat(xlsx)usingtheUseOOXMLFormatoptionoftheExcelSaveFlags('ExcelSaveFlagsEnumeration'intheon-linedocumentation)enumeration.BydefaultwhenyousavetoExcel,whateverisstoredinthedatamodeloftheSpreadiswrittenouttoafileorstreaminBIFF8format.

IfyouputanumberordateinanExcelcellandthewidthofthecolumnisnotlargeenoughtodisplaythedata,thenExcelshowsthecellfilledwith###.MakesurethewidthofthecolumnissetwideenoughtodisplaythedataintheexportedExcel-formattedfile.

Formoredetailsonthemethodsused,refertoSaveExcel('SaveExcelMethod'intheon-linedocumentation)methodsoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.TherearemanydifferentSaveExcel('SaveExcelMethod'intheon-linedocumentation)methods.SomeofthemethodshaveasaveFlagsoption.Thisallowsyoutospecifyheadersandotheroptions.Headersareexportedasfrozencolumnsandrows.

TheDocumentcachingoptionintheExcelOpenFlags('ExcelOpenFlagsEnumeration'intheon-linedocumentation)orExcelSaveFlags('ExcelSaveFlagsEnumeration'intheon-linedocumentation)enumerationallowsuserstoopen,edit,andsavewithoutthelossofadvanceddocumentcontentandformatting.Thecontentcanbelosslessonlyiftheopeningfileformatissimilartothesavingfileformat.Iftheadvanceddocumentcontentusesfilesbesidesthexls(x)file,thentheadditionalfilesneedtobeinthesamefolderwiththexls(x)file.Advancedcontentcouldbemacros,ActiveXcontrols,dataconnections,andsoon.

FormoreinformationabouthowthedataissavedtoanExcel-formattedfile,seetheImportandExportReference(on-linedocumentation).

UsingCode

UseoneoftheSaveExcel('SaveExcelMethod'intheon-linedocumentation)methodsoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class,providingthepathandfilenameforthefiletosave,andanyadditionalparametersdependingontheparticularmethod.

Example

ThisexamplecodesavesthedatainaSpreadcomponenttoanExcel-formattedfileandspecifiesthatbothrowand

Spread Windows Forms Developer’s Guide 522

Copyright © GrapeCity, inc. All rights reserved.

Page 524: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

columnheadersareincludedintheoutput.

C#// Save the data to an Excel-formatted file, including headers.fpSpread1.SaveExcel("C:\\excelfile.xls", FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly);

VB' Save the data to an Excel-formatted file, including headers.FpSpread1.SaveExcel("C:\excelfile.xls", FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly)

UsingtheSpreadDesigner

1. FromtheFilemenu,chooseSave.TheSaveAsdialogappears.

2. ChangetheSaveastypeboxtoExcelfiles(*.xls).3. Specifythepathandfilenametowhichtosavethefile,andthenclickSave.

Ifthefileissavedsuccessfully,amessageappearsstatingthefilehasbeensaved.

4. ClickOKtoclosetheSpreadDesigner.

Saving to a Text File

Youcansavethedataorthedataandformattinginasheettoatextfile,usingeitherdefaulttabdelimitersorcustomdelimiters(suchasacommaforacsvfile).Inaddition,youcanspecifywhetherheadersaresavedwiththedata.

Savingtoatextfileisdoneforindividualsheets.Ifyouwanttosaveallthesheetsinthecomponent,youmustsaveeachsheettoatextfile.

Tab-delimitedfilessavedfromthecomponentcontaindataseparatedbytabsandcarriagereturns.Tab-delimitedfilescanbeopened,modified,andsavedusinganystandardtexteditor.Delimitedfilescontaindataseparatedbyuser-defineddelimiters,suchascommas,quotationmarks,orotherdelimiters.

Youcansavetheentiresheetoraportionofthesheetdatafromthecomponenttotab-delimitedanddelimitedfiles.

Ifyouupgradedfromaversionpriortoversion5,thenyoumaywishtoreplaceanyobsoleteparametersintheSaveTextFile('SaveTextFileMethod'intheon-linedocumentation)andSaveTextFileRange('SaveTextFileRangeMethod'intheon-linedocumentation)methods.

Formoredetailsonthemethodsandcurrentparameters,refertotheSaveTextFile('SaveTextFileMethod'intheon-linedocumentation)andSaveTextFileRange('SaveTextFileRangeMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

Forinstructionsforopeningtextfiles,seeOpeningaCustomTextFile.

UsingCode

1. Tosavetheentiresheet,useoneoftheSheetView('SheetViewClass'intheon-linedocumentation)classSaveTextFile('SaveTextFileMethod'intheon-linedocumentation)methods,specifyingthepathandfilenameorstream,whetherdataordataandformattingissaved,whetherheadersaresaved,andthecustomdelimiters,dependingonthemethodyouchoose.

2. Tosaveaportionofasheet,useoneoftheSheetView('SheetViewClass'intheon-linedocumentation)classSaveTextFileRange('SaveTextFileRangeMethod'intheon-linedocumentation)methods,specifyingthestartingrowandcolumn,thenumberofrowsandcolumnstosave,thepathandfilenameorstream,whetherdataordataandformattingissaved,whetherheadersaresaved,andthecustomdelimiters,

Spread Windows Forms Developer’s Guide 523

Copyright © GrapeCity, inc. All rights reserved.

Page 525: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

dependingonthemethodyouchoose.

Example

Thisexamplecodesavesarangeofdataandformattingtoatextfile,includingheadersandusingcustomdelimiters.

C#// Save a range of data and formatting to a text file.fpSpread1.Sheets[0].SaveTextFileRange(1, 1, 1, 2, "C:\\filerange.txt", FarPoint.Win.Spread.TextFileFlags.Unformatted, FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly, "#", "%", "^");

VB' Save a range of data and formatting to a text file.FpSpread1.Sheets(0).SaveTextFileRange(1, 1, 1, 2, "C:\filerange.txt", FarPoint.Win.Spread.TextFileFlags.Unformatted, FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly, "#", "%", "^")

Saving to an HTML Table

YoucansaveanindividualsheetorarangeofcellsinasheettoanHTMLtableinafileorstreamifyouneedtodisplaythesheetinaWebbrowser.Thisdoesnotsavetheentirespreadsheet,onlyanindividualsheet.

TheHTMLexportsavesasmuchoftheformattinginformationorpresentation-relatedsettingsaspossible,dependingonwhetherthatinformationcanbetranslatedtoanHTMLelementorattribute.TheheadercellsarenotsavedouttoXML;onlythedataareacells.Ifyouhavegroupingturnedon,onlythedataareaofthesheet(notthegroupingbaratthetop,andnotthegroupheadingrows)issaved.

TosavethesheettoanHTMLtable,usetheSaveHtml('SaveHtmlMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

TheHTMLexportmethodswillnotworkwithclientprofiling.

TosavearangeofcellsonasheettoanHTMLtable,usetheSaveHtmlRange('SaveHtmlRangeMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

Intheexamplebelow,noticethattheentirefileisinasingle<TABLE>elementandthateachofthecells,bothheadingsanddataarea,aretranslatedtotablecells.Headingcellsareoutputas<TH>elements(tableheadingcells)anddataareacellsareoutputas<TD>elements(tabledatacells).Alloftheformattinginformationispreservedandkeptasattributesinthetablecellattributes.Asetof<COLGROUP>elements(columngroups)definethewidthofthecolumnsinthetable.TheappearanceofthespreadsheetisreproducedascloselyaspossibleinHTMLinthisfairlysimpleorganization.

FordetailedspecificationsoftheHTMLelementsandtheirattributes,refertotheWorldWideWebConsortium(W3C)(http://www.w3.org)HTML4.01referencesite(http://www.w3.org/TR/html4).

UsingCode

UsetheSaveHtml('SaveHtmlMethod'intheon-linedocumentation)method.

Example

ThisexampleusestheSaveHtml('SaveHtmlMethod'intheon-linedocumentation)method.

C#fpSpread1.ActiveSheet.SaveHtml("C:\\testfiles\\FPSpread-SheetToHTML.html");

VBFpSpread1.ActiveSheet.SaveHtml("C:\testfiles\FPSpread-SheetToHTML.html")

Thisgivesthefollowingresult:

<table cellspacing="0" cellpadding="0"rules="all" border="1" style="border-width:1px;border-style:solid;width:548px;border-collapse:collapse;">

<COLGROUP>

<col width=49px>

<col width=150px>

<col width=300px> <col width=49px>

</COLGROUP>

<tr style="height:20px;">

<th style="background-color:#A9A9A9;"></th>

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Artist</th>

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Website</th>

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">id</th>

</tr>

<tr style="height:20px;"> <th align="center"valign="middle"

style="color:White;background-color:#A9A9A9;"></th>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Aerosmith</td>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">http://www.aerosmith.com/detect.html</td>

<td align="right" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">0</td>

</tr>

<tr style="height:20px;">

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;"></th>

<td align="left" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Foreigner</td>

<td align="left" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">http://www.foreigneronline.com/</td>

<td align="right" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">1</td>

</tr>

<tr style="height:20px;">

Spread Windows Forms Developer’s Guide 524

Copyright © GrapeCity, inc. All rights reserved.

Page 526: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;"></th>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Jimi Hendrix</td>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">http://www.jimi-hendrix.com/</td>

<td align="right" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">2</td>

</tr>

<tr style="height:20px;">

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;"></th>

<td align="left" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">Pink Floyd</td>

<td align="left" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">http://www.pinkfloyd.com</td>

<td align="right" valign="top" style="color:Gray;background-color:#DCDCDC;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">3</td>

</tr>

<tr style="height:20px;">

<th align="center" valign="middle" style="color:White;background-color:#A9A9A9;"></th>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">TheWho</td>

<td align="left" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">http://www.thewho.net/</td>

<td align="right" valign="top" style="color:Gray;background-color:#F8F8FF;font-family:Arial;font-size:12pt;font-weight:normal;font-style:normal;text-decoration:none;">4</td>

</tr>

</table>

Saving Spreadsheet Data to Simple XML

YoucansavethedatafromasheettoanXMLfileorstreamifyouneedtoprocessthedatafurtherandwantthedatainastructuredformat.Thisdoesnotsavetheentirespreadsheetnordoesitsavetheformattinginformationorpresentation-relatedsettings.OnlythevaluesinthecellsaresavedtoXML.TheheadercellsarenotsavedouttoXML;onlythedataareacells.

TosavethedatatoXML,usetheSaveXml('SaveXmlMethod'intheon-linedocumentation)methodsoftheSheetViewclass.

Youcansavethedatatoonefile(orstream)andtheXMLschematoanotherfile(orstream).Anexampleoutputisshownbelow.Thetoplevel(orroot)elementisthesheet(SheetName)andwithinthesheetelementarerowelements(Row1,Row2,andsoon)andwithineachrowarethecolumnelements(Column1,Column2,andsoon)andwithineachcolumnelementisthedata.Thesheetelementusesthenameofthesheet.Therowsareallgenericrowsandarenotgivenuniquenames.Thecolumnsareeachgivenauniquenameandcolumnswithoutdataareignored.

TheSaveXml('SaveXmlMethod'intheon-linedocumentation)methodonlysavesthedataforanindividualsheet,notforanentirehierarchythatconsistsofseveralsheets.

Thismethodonlysavesthedata.Forcelltypedata,seeUnderstandingHowCellTypesDisplayandFormatData.

UsingCode

UsetheSaveXml('SaveXmlMethod'intheon-linedocumentation)methodtosavedatatoanXMLfile.

Example

Thisexamplesavesthedataforasheetnamed"EastCoastSales"toanXMLfileandtheschematoanotherfile.

C#fpSpread1.ActiveSheet.SaveXml("C:\\testfiles\\FPSpread-SheetToXML2.xml", "C:\\testfiles\\FPSpread-SchemaForXML2.xml");

VBFpSpread1.ActiveSheet.SaveXml("C:\testfiles\FPSpread-SheetToXML2.xml", "C:\testfiles\FPSpread-SchemaForXML2.xml")

Thisgivesthefollowingresult:

<EastCoastSales>

<Row>

<Column1>Aerosmith</Column1>

<Column2>http://www.aerosmith.com/detect.html</Column2>

<Column3>0</Column3>

</Row>

<Row>

<Column1>Foreigner</Column1>

<Column2>http://www.foreigneronline.com/</Column2>

<Column3>1</Column3>

</Row>

.

.

.

<Row>

<Column1>The Who</Column1>

<Column2>http://www.thewho.net/</Column2>

<Column3>4</Column3>

</Row>

</EastCoastSales>

Thecorrespondingschemawouldbesomethinglikethis:

Spread Windows Forms Developer’s Guide 525

Copyright © GrapeCity, inc. All rights reserved.

Page 527: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

<?xml version="1.0" encoding="utf-16"?><xs:schemaid="Sheet1" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:elementname="EastCoastSales" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choiceminOccurs="0" maxOccurs="unbounded"> <xs:element name="Row"> <xs:complexType> <xs:sequence> <xs:elementname="Column1" type="xs:string" minOccurs="0" /> <xs:elementname="Column2" type="xs:string" minOccurs="0" /> <xs:elementname="Column3" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element></xs:schema>

Opening Existing Files

SpreadcanopenXMLfilesorstreamobjectsthatwerecreatedbySpread,aswellastextandExcelfiles.TextfilesmustusedelimitersthatSpreadcanprocesstoplacedataintotheappropriatecells.Spreadprovidesmethodsforopeningseveralfiletypes.Consultthefollowingtopicsforinstructionsandmoreinformationregardingsavingtoafile.

OpeningaSpreadXMLFileOpeninganExcelFileOpeningaSpreadCOMFile.OpeningaCustomTextFile

IfyouopenorloadafileorStreamobjectthatcontainsmorerowsorcolumnsthanthesheetorsheetsintowhichyouareopeningthefileorstream,thecomponentaddsrowsorcolumnsasneededtothesheetorsheets.IfyouopenorloadafileorStreamobjectwithfewerrowsorcolumnsthanthesheetorsheetsintowhichyouareopeningthefileorstream,thecomponentopensthefileandloadsthedata,anddoesnotremovetheadditionalrowsorcolumnsinthesheetorsheets.

OpeningexistingfilesusingSpreadDesignerplacesthedatafromthefileintothedesignstringusedtocreatethecomponent.Longerdesignstringsnegativelyimpactresponsiveness,includingmakingpageloadsslowerandincreasingresponsetimetoediting.KeepthisinmindwhenusingSpreadDesignertoopenandloadfiles.

Opening a Spread XML File

SpreadcanopendataordataandformattingfromaSpread-compatibleXMLfileorastreamintotheSpreadcomponent.

FormoredetailsonopeningaSpreadXMLfile,refertotheOpen('OpenMethod'intheon-linedocumentation)methodsoftheFpSpread('FpSpreadClass'intheon-linedocumentation)classortheOpen('OpenMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class.

ForinstructionsforsavingSpreadXMLfiles,seeSavingtoaSpreadXMLFile.

UsingCode

UsetheFpSpread('FpSpreadClass'intheon-linedocumentation)classOpen('OpenMethod'intheon-linedocumentation)method,specifyingthepathandfilenameoftheSpreadXMLfiletoopenortheStreamobjecttoopen.

Example

ThisexamplecodeopensanexistingSpread-compatibleXMLfileinthecomponent.

C#// Open a Spread-compatible XML file.fpSpread1.Open("C:\\spreadfile.xml");

VB' Open a Spread-compatible XML file.

Spread Windows Forms Developer’s Guide 526

Copyright © GrapeCity, inc. All rights reserved.

Page 528: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Open("C:\spreadfile.xml")

UsingtheSpreadDesigner

1. FromtheFilemenu,selectOpen.2. Adialogappearswarningyouthatthisoverwritesyourexistingsettingsifyouopenafile.ClickYestocontinue

withthefileopen.TheOpendialogappears.

3. ChangetheFilesoftypeboxtoXMLfiles(*.xml).4. Specifythepathandfilenameofthefiletoopen,andthenclickOpen.

Ifthefileisopenedsuccessfully,amessageappearsstatingthefilehasbeenopened.

5. ClickOKtoclosetheSpreadDesigner.

Opening an Excel File

YoucanopenanexistingExcel-formattedfile(BIFF8formatorxlsx)inSpread.Youcanopentheentiremultiple-sheetfileintotheSpreadcomponentorspecifyaparticularsheet(eitherbynameornumber)andopenitintoaspecificsheet.

Spreadcanbeusedinbothboundandunboundmodes.WhenopeninganExcelfile,SpreadisbeingusedintheunboundmodeandthustheDataSourcepropertyreturnsnull(orNothinginVisualBasic).

UseoneoftheOpenExcel('OpenExcelMethod'intheon-linedocumentation)methodsoftheFpSpread('FpSpreadClass'intheon-linedocumentation)classtoopenallthesheetsintheExcelfile,providingthepathandfilenameforthefiletoopenandanyadditionalinformation.YoucanspecifyadditionalopenoptionswiththeExcelOpenFlags('ExcelOpenFlagsEnumeration'intheon-linedocumentation)enumeration.Thisenumerationallowsyoutodeterminehowfrozencolumnsandrowsareimported,ifdataonlyisimported,andotheroptions.ToopenaspecificsheetoftheExcelfile,useoneoftheOpenExcel('OpenExcelMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class,specifyingthesheetbynameornumber.

TheDocumentcachingoptionintheExcelOpenFlagsorExcelSaveFlagsenumerationallowsuserstoopen,edit,andsavewithoutthelossofadvanceddocumentcontentandformatting.Thecontentcanbelosslessonlyiftheopeningfileformatissimilartothesavingfileformat.Iftheadvanceddocumentcontentusesfilesbesidesthexls(x)file,thentheadditionalfilesneedtobeinthesamefolderwiththexls(x)file.Advancedcontentcouldbemacros,ActiveXcontrols,dataconnections,andsoon.

NotethatthesheetindexreferringtosheetsintheExcelfileiszero-based,sothefirstsheetintheExcelfileis0,thesecondis1,andsoon.

IftheExcelfileisopeninanotherapplication(openinExcelforexample)whenyouaretryingtoopenitinSpread,nothingisimported,andtheSpreadopenswithoutanyimporteddata.

FormoreinformationabouthowthedataisimportedfromanExcel-formattedfile,seetheImportandExportReference(on-linedocumentation).

UsingCode

UseoneoftheOpenExcel('OpenExcelMethod'intheon-linedocumentation)methodsoftheFpSpread('FpSpreadClass'intheon-linedocumentation)classtoanExcelfile.ToopenaspecificsheetoftheExcelfile,useoneoftheOpenExcel('OpenExcelMethod'intheon-linedocumentation)methodsoftheSheetView('SheetViewClass'intheon-linedocumentation)class(usingtheSheetsorActiveSheetshortcut).

Example

ThisexamplecodeopensanentireExcel-formattedfileusingthemethodintheFpSpread('FpSpreadClass'intheon-linedocumentation)class,andloadsthedatafromthespecifiedExcelsheetintothespecifiedsheetoftheSpread

Spread Windows Forms Developer’s Guide 527

Copyright © GrapeCity, inc. All rights reserved.

Page 529: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

component.

C#// Open the fourth sheet of the Excel file.fpSpread1.ActiveSheet.OpenExcel("C:\\excelfile.xls", 3);

VB' Open the fourth sheet of the Excel file.FpSpread1.ActiveSheet.OpenExcel("C:\excelfile.xls", 3)

UsingtheSpreadDesigner

1. FromtheFilemenu,selectOpen.2. Adialogappearswarningyouthatthisoverwritesyourexistingsettingsifyouopenafile.ClickYestocontinue

withthefileopen.TheOpendialogappears.

3. ChangetheFilesoftypeboxtoExcelfiles(*.xls).Toopenacomma-delimitedfile,changetheFilesoftypeboxtoComma-delimitedfiles(*.csv).

4. Specifythepathandfilenameofthefiletoopen,andthenclickOpen.Ifthefileisopenedsuccessfully,amessageappearsstatingthefilehasbeenopened.

5. ClickOKtoclosetheSpreadDesigner.

Opening a Spread COM File

YoucanopenanexistingfilefromtheCOMversionofSpread(SpreadCOM7.0orlater).FordetailsonopeningaSpreadCOMfile,refertotheOpenSpreadFile('OpenSpreadFileMethod'intheon-linedocumentation)methodsoftheFpSpreadclass.

Sincethe.NETplatformiscompletelydifferentfromtheCOMenvironment,therearemanydifferencesbetweentheSpreadfilefortheproductsinthesetwoenvironments.FormoreinformationaboutimportingSpreadCOMfilesandunderstandingcompatibilitywithSpreadWindowsForms,refertotheVersionComparisonReference(on-linedocumentation).

UsingCode

UsetheOpenSpreadFile('OpenSpreadFileMethod'intheon-linedocumentation)methodoftheFpSpreadclass,providingthepathandfilenameforthefiletoopen,orusetheOpenSpreadFile('OpenSpreadFileMethod'intheon-linedocumentation)methodoftheSheetView('SheetViewClass'intheon-linedocumentation)class(intheActiveSheetorSheetsshortcutobject).

Example

ThisexamplecodeopensaSpreadCOM7fileintheactivesheet.

C#// Open an old Spread 7 file into the active sheet.fpSpread1.ActiveSheet.OpenSpreadFile("C:\\oldfile.ss7");

VB' Open an old Spread 7 file into the active sheet.FpSpread1.ActiveSheet.OpenSpreadFile("C:\oldfile.ss7")

Spread Windows Forms Developer’s Guide 528

Copyright © GrapeCity, inc. All rights reserved.

Page 530: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheSpreadDesigner

1. FromtheFilemenu,selectOpen.2. Adialogappearswarningyouthatthisoverwritesyourexistingsettingsifyouopenafile.ClickYestocontinue

withthefileopen.TheOpendialogappears.

3. ChangetheFilesoftypeboxtoSpread7files(*.ss7or*.ss8).4. Specifythepathandfilenameofthefiletoopen,andthenclickOpen.

Ifthefileisopenedsuccessfully,amessageappearsstatingthefilehasbeenopened.

5. ClickOKtoclosetheSpreadDesigner.

Opening a Custom Text File

Youcanopenexistingtextfilesthataredelimited,eitherfilessavedfromSpreadordelimitedtextfilesfromothersources.Thedatafromthefileyouopenisplacedinthesheetforwhichyoucallthemethod.

Ifthefileusescustomdelimiters(suchascommasincsvfiles),youmustspecifythedelimiterssothecomponentcancorrectlyplacethedatawithinthesheet.Ifyourfileusesstandardtab-delimitedformat,youneednotuseamethodthatletsyouspecifydelimiters.

Ifyouupgradedfromaversionpriortoversion5,thenyoumaywishtoreplaceanyobsoleteparametersintheLoadTextFilemethods.

Formoredetailsandcurrentparameters,refertotheLoadTextFile('LoadTextFileMethod'intheon-linedocumentation)orLoadTextFileRange('LoadTextFileRangeMethod'intheon-linedocumentation)methodsintheSheetView('SheetViewClass'intheon-linedocumentation)class.

Forinstructionsforsavingtotextfiles,seeSavingtoaTextFile.

UsingCode

UseanyoftheLoadTextFile('LoadTextFileMethod'intheon-linedocumentation)methodsintheSheetView('SheetViewClass'intheon-linedocumentation)class(fortheActiveSheetorSheetsobject).

Example

Thisexampleopensatextfileandhandlestheheadersandspecifiesthedelimiters.

C#fpSpread1.ActiveSheet.LoadTextFile("C:\\textfile.txt", FarPoint.Win.Spread.TextFileFlags.Unformatted, FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly, "\n", ",", "");

VBFpSpread1.ActiveSheet.LoadTextFile("C:\textfile.txt", FarPoint.Win.Spread.TextFileFlags.Unformatted, FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly, Chr(10), ",", "")

UsingtheSpreadDesigner

1. FromtheFilemenu,selectOpen.

Spread Windows Forms Developer’s Guide 529

Copyright © GrapeCity, inc. All rights reserved.

Page 531: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. Adialogappearswarningyouthatthisoverwritesyourexistingsettingsifyouopenafile.ClickYestocontinuewiththefileopen.TheOpendialogappears.

3. ChangetheFilesoftypeboxtoCustomtextfiles(*.txt).Toopenacomma-delimitedfile,changetheFilesoftypeboxtoComma-delimitedfiles(*.csv).

4. Specifythepathandfilenameofthefiletoopen,andthenclickOpen.Ifthefileisopenedsuccessfully,amessageappearsstatingthefilehasbeenopened.

5. ClickOKtoclosetheSpreadDesigner.

Using Serialization

InSpread,youcanserializeobjectsinthespreadsheetortheentirespreadsheetcomponentusingseveralmethods.BesureyouunderstandthedifferencebetweensavingwiththemethodsinFarPoint.Win.Serializer('SerializerClass'intheon-linedocumentation)asopposedtotheonesinthemodelnamespaceFarPoint.Win.Spread.Model.SpreadSerializer('SpreadSerializerClass'intheon-linedocumentation).TheSpreadSerializer('SpreadSerializerClass'intheon-linedocumentation)isintendedforsavingandloadingentireSpreadcomponentobjectsortextfilesfromasheet,whiletheSerializer('SerializerClass'intheon-linedocumentation)containsmethodsforsavingandloadinganyserializableobjectusingourXMLserializationimplementation.Formoredetailsonserializinganddeserializing,refertothesetasks.

ImplementingaSerializerClassParsingFormulasinCustomXMLDeserialization

ThemethodtouseforsimplysavinganobjecttoafileisSaveObject('SaveObjectMethod'intheon-linedocumentation);themethodforloadingtheobjectbackfromthefileisLoadObject('LoadObjectMethod'intheon-linedocumentation).ThemethodsareoverloadedsoyoucansaveorloadtoastreamoruseaparticularXMLserializationinterface.FormanypurposestheoverloadforSaveObject('SaveObjectMethod'intheon-linedocumentation)withonlytheobject,filename,androotelementnamearguments,andtheoverloadforLoadObject('LoadObjectMethod'intheon-linedocumentation)withonlythetype,filename,andelementnameshouldwork.TheSaveObject('SaveObjectMethod'intheon-linedocumentation)methodcheckstoseeiftheobjectisintheFarPointSpreadDLLortheFarPointWinDLL,andifnot,thenitsavestheassemblynameintheXMLnodeattributesandusesthatnametoloadtheassemblyintheCreateObjectInstanceAndDeserialize('CreateObjectInstanceAndDeserializeMethod'intheon-linedocumentation)method.

Design-timeserializationiscomplicated,andSpreadusesseveralcustomCodeDomSerializerobjectstoserializeatdesigntime.ThoseserializersarecodedtoexpecttheFpSpreadandtheSheetViewtobefieldsintheobjectbeingserialized,andiftheobjectisinsteadreturnedbyapropertyaccessor,thecodeprobablyisnotgetgeneratedcorrectly.ForthisreasonexposingapropertyoftypeFpSpreadorSheetViewatdesigntimeisnotrecommended.

Implementing a Serializer Class

WhenusingtheSerializer('SerializerClass'intheon-linedocumentation)class,rememberthesetips:

YoumusthaveaparameterlessconstructordefinedinorderforSerializer.CreateObjectInstanceAndDeserialize('CreateObjectInstanceAndDeserializeMethod'intheon-linedocumentation)tocreateanewinstanceofyourclasstodeserialize.Itisagoodideatoinitializethefieldsintheclasswithsomedefaultordummyvalues,butitisnotnecessaryifyoualwayssaveeachfieldtotheXMLregardlessofwhetheritissettoitsdefault(whichisrequiredtomakeGetObjectXml('GetObjectXmlMethod'intheon-linedocumentation)andSetObjectXml('SetObjectXmlMethod'intheon-linedocumentation)workproperly).TheSerializerCanSerializeObject('CanSerializeObjectMethod'intheon-linedocumentation)methoddetermineswhetherthespecifiedobjectcanbeserializedwithSerializeObject.ThismethodcheckswhethertheobjectimplementsICanSerializeXml(inwhichcaseitreturnsthevalueoftheobject'sCanSerializeXmlproperty),orwhethertheobjectimplementsISerializeSupport,orisasimpletype,orif

Spread Windows Forms Developer’s Guide 530

Copyright © GrapeCity, inc. All rights reserved.

Page 532: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thetype'sIsSerializablepropertyreturnstrue.Savingtheobjectusingelements(seethefirstsubclassexamplebelow)requiresmorecoding,butresultsinmorereadableXMLwhenthenumberofpropertiesbeingsavedishigh(asinthisexampleoftheLineBorderclassbelow).Savingtheobjectusingattributes(thesecondsubclassexamplebelow)requireslesscoding,andresultsinmorereadableXMLwhenthenumberofpropertiesbeingsavedislow(asinthisexampleoftheGradientLineBorderclassbelow),sothelattersubclassexampleisbetter.IfyouimplementISerializeSupport('ISerializeSupportInterface'intheon-linedocumentation)usingelements,thenyoushouldcallthebaseclassimplementationfirst(ifthereisone),thensaveandloadyourproperties.Youshouldalsoreturnafterreadingthelastendelementthatyouserialize,sothatsubclassescanalsouseelementstoserializetheirproperties.IfyouimplementISerializeSupport('ISerializeSupportInterface'intheon-linedocumentation)usingattributes,thenyoushouldreadyourattributesfirst,thencallthebaseclassimplementation(ifthereisone).Youcanusebothattributesandelementstoserializeyourobject;therearesomeSpreadobjects(mostlythemodels)whichdothis.Inthatcaseyoushoulddotheattributesfirst,thencallthebaseclass,thensaveandloadyourelements,returningfromDeserializeafteryoureachthelastendelement.

Theexamplesbelowshowsavingsimplethingslikeintegersandcolors,butsavingothertypesisnodifferent.TherearemethodsinSerializerforsavingandloadingColor,DateTime,DateTimeFormatInfo,Enumtypes,Font,Image,Int32array,NumberFormatInfo,PointFarray,Stringarray,andObject.Itisbest(thoughnotrequired)tousethemostspecificmethodavailable.Forexample,itwouldworktouseSerializeObjecttosaveasimpletypeoraColorvalue,butitislessefficientandmaynotresultinthesameXML.

Ingeneral,thereisareasoneachofthemethodswascreatedforitsspecifictype.DateTimeFormatInfoandNumberFormatInfomustbesavedusingtheirrespectivemethodsbecauseSerializeObjectwoulddefaulttousingbinaryserialization,whichdoesnotworkacrossversionsoftheframework(soaDateTimeFormatInfosavedusing.NET1.0doesnotloadusing.NET1.1or2.0).

Forsimpletypes(Int32,String,Boolean,etc.)itisbesttouseToString()toconvertthemtoastringforsaving(passingCultureInfo.InvariantCultureifpossible)andthenuseXmlConverttoconvertthestringsbackintovalues.

SaveObjectisintendedforsavingobjectswhichimplementISerializeSupport('ISerializeSupportInterface'intheon-linedocumentation),orforcertainspecifictypes(intrinsicdatatypesandDataSet),orforgenericobjectswhichareserializablebutdonotimplementISerializeSupport(suchobjectsgetsavedusingEncodeObject,whichusesaBinaryFormattertosavetheobjecttoaMemoryStreamandthenusesConverttoencodethebytesintoabase-64string).

DebugversusReleaseBuild

Togetfilessavedwithadebugbuildtoloadintoareleasebuildthatisstrongnamed,youmusteliminateorupdatetheassemblyattributeinthenodewheretheobjectissaved.SerializeObjectwillwriteanassemblyattributeiftheassemblyinwhichtheobject'stypeisdefinedisdifferentfromthecallingassemblyanddifferentfromtheexecutingassembly(FarPoint.Win.dll).

ThecallingassemblyisusuallyFarPoint.Win.Spread.dllbutispossiblytheuser'sassemblyiftheyaredefiningtheirownobjectswhichimplementISerializeSupportandsavingchildobjectsusingSerializeObject.Thetrickycaseis,unfortunately,likelythemostcommonone:ausercreatesacustomobjecttoplugintotheSpread'sobjectmodel(forexample,acustomdatamodel)andtheywanttosaveandloadtheSpreadusingthesaveandloadmethodsinFpSpreadandusedifferentbuildsoftheirassembly.

Inthatcase,theassemblyattributeisrequiredtoloadthecorrectassemblycontainingtheobject'stypedefinition,butthecorrectattributeforthedebugandreleasebuildsisdifferent.Inthatcase,theuserwouldneedtoeditthevalueintheXMLtochangetheassemblyreference(usingsomethinglikeString.Replace).

ThelesscommoncasesinvolveuserswhoareusingISerializeSupportandSerializertosaveandloadtheirownfilescontainingobjectsthattheydefine,perhapsinthesameassemblyorinadifferentassemblythattheyarewritinginparallel.Iftheobjectsaredefinedinthesameassembly,thentheassemblytabwillnotbewrittenout,andifitisadifferentassembly,thedevelopercancalltheoverloadsforSerializeObjectand

Spread Windows Forms Developer’s Guide 531

Copyright © GrapeCity, inc. All rights reserved.

Page 533: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreateObjectInstanceAndDeserializewhichtakethecallingAssemblyargumentandpasstheassemblycontainingtheobject(evenifthatisnotreallytheassemblycallingintoSerializer).Thatwillpreventtheassemblyattributefrombeingwrittenout,butitisimportantthatthisbedoneonbothends(thecalltosaveandload)sothatthetypereferencecanberesolvedandaninstanceoftheobjectcreated.

HerearesomeexamplesofhowyoumightimplementISerializeSupport.

UsingCode

Thisexampleusesthebaseclass.

Example

ThefollowingcodeprovidestheimplementationofISerializeSupportinFarPoint.Win.LineBorder:

C#// A constructor with no arguments is required for ISerializeSupport.// It does not need to be public though. internal LineBorder() { color = SystemColors.WindowFrame; thickness = 1; left = top = right = bottom = true; inset = new Inset(1); } /// <summary>/// Saves the object to XML./// </summary>/// <param name="w">XmlTextWriter object to which to save the object</param>/// <returns>true if successful; false otherwise</returns> public virtual bool Serialize(XmlTextWriter w) { w.WriteStartElement("Inset"); w.WriteElementString("Bottom",inset.Bottom.ToString()); w.WriteElementString("Left", inset.Left.ToString()); w.WriteElementString("Right", inset.Right.ToString()); w.WriteElementString("Top", inset.Top.ToString()); w.WriteEndElement(); Serializer.SerializeColor(color, "Color", w); w.WriteStartElement("Sides"); w.WriteElementString("Bottom", bottom.ToString()); w.WriteElementString("Left", left.ToString()); w.WriteElementString("Right", right.ToString()); w.WriteElementString("Top", top.ToString()); w.WriteEndElement(); w.WriteElementString("Thickness", thickness.ToString(CultureInfo.InvariantCulture)); return true; } /// <summary>/// Loads the object from XML./// </summary>/// <param name="r">XmlNodeReader from which to load the object</param>/// <returns>true if successful; false otherwise</returns> public virtual bool Deserialize(XmlNodeReader r)

Spread Windows Forms Developer’s Guide 532

Copyright © GrapeCity, inc. All rights reserved.

Page 534: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

{ bool inInset = false; bool inBottom = false; bool inLeft = false; bool inRight = false; bool inTop = false; bool inColor = false; bool inSides = false; bool inThickness = false; int bottom = inset.Bottom; int left = inset.Left; int right = inset.Right; if( r.IsEmptyElement ) return true; while( r.Read() ) { switch( r.NodeType ) { case XmlNodeType.Element: if( r.Name.Equals("Inset") ) inInset = true; else if( r.Name.Equals("Color") ) inColor = true; else if( r.Name.Equals("Sides") ) inSides = true; else if( inInset || inSides ) { if( r.Name.Equals("Bottom") ) inBottom = true; else if( r.Name.Equals("Left") ) inLeft = true; else if( r.Name.Equals("Right") ) inRight = true; else if( r.Name.Equals("Top") ) inTop = true; } else if( r.Name.Equals("Thickness") ) inThickness = true; break; case XmlNodeType.Text: if( inInset ){if( inBottom )bottom = XmlConvert.ToInt32(r.Value);else if( inLeft )left = XmlConvert.ToInt32(r.Value);else if( inRight )right = XmlConvert.ToInt32(r.Value);else if( inTop )inset = new Inset(left, XmlConvert.ToInt32(r.Value), right, bottom);}else if( inSides ){if( inBottom )this.bottom = XmlConvert.ToBoolean(r.Value.ToLower(CultureInfo.InvariantCulture));else if( inLeft )this.left = XmlConvert.ToBoolean(r.Value.ToLower(CultureInfo.InvariantCulture));

Spread Windows Forms Developer’s Guide 533

Copyright © GrapeCity, inc. All rights reserved.

Page 535: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

else if( inRight )this.right = XmlConvert.ToBoolean(r.Value.ToLower(CultureInfo.InvariantCulture));else if( inTop )this.top = XmlConvert.ToBoolean(r.Value.ToLower(CultureInfo.InvariantCulture));}else if( inColor )color = Serializer.DeserializeColorValue(r.Value);else if( inThickness )thickness = XmlConvert.ToInt32(r.Value);break;case XmlNodeType.EndElement:if( inInset && r.Name.Equals("Inset") )inInset = false;else if( inColor && r.Name.Equals("Color") )inColor = false;else if( inSides && r.Name.Equals("Sides") )inSides = false;else if( inInset || inSides ){if( inBottom && r.Name.Equals("Bottom") )inBottom = false;else if( inLeft && r.Name.Equals("Left") )inLeft = false;else if( inRight && r.Name.Equals("Right") )inRight = false;else if( inTop && r.Name.Equals("Top") )inTop = false;}else if( inThickness && r.Name.Equals("Thickness") )// return here so that subclasses can deserializereturn true;break;}}return true;}

Example

Thisisanexampleofwhataderivedclassmightdoinoverridesforthosemethods:

C#// A constructor with no arguments is required for ISerializeSupport.// It does not need to be public though.protected GradientLineBorder() : LineBorder(SystemColors.WindowFrame, 1, true, true, true, true){startColor = Color.Blue;endColor = Color.Green;}/// <summary>/// Saves the object to XML./// </summary>/// <param name="w">XmlTextWriter object to which to save the object</param>/// <returns>true if successful; false otherwise</returns>public override bool Serialize(XmlTextWriter w)

Spread Windows Forms Developer’s Guide 534

Copyright © GrapeCity, inc. All rights reserved.

Page 536: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

{if( !base.Serialize(w) )return false;Serializer.SerializeColor(startColor, "StartColor", w);Serailizer.SerializeColor(endColor, "EndColor", w);return true;}/// <summary>/// Loads the object from XML./// </summary>/// <param name="r">XmlNodeReader from which to load the object</param>/// <returns>true if successful; false otherwise</returns>public override bool Deserialize(XmlNodeReader r){bool inStartColor = false;bool inEndColor = false;

if( r.IsEmptyElement )return true;if( !base.Deserialize(r) )return false;while( r.Read() ){switch( r.NodeType ){case XmlNodeType.Element:if( r.Name.Equals("StartColor") )inStartColor = true;else if( r.Name.Equals("EndColor") )inEndColor = true;case XmlNodeType.Text:if( inStartColor )startColor = Serializer.DeserializeColorValue(r.Value);else if( inEndColor )endColor = Serializer.DeserializeColorValue(r.Value);break;case XmlNodeType.EndElement:if( inStartColor && r.Name.Equals("StartColor") )inStartColor = false;else if( inEndColor && r.Name.Equals("EndColor") )// return here so that subclasses can deserializereturn true;break;}}return true;}

Example

Another(somewhateasier)waytoimplementitwouldbethisway:

C#/// <summary>/// Saves the object to XML./// </summary>

Spread Windows Forms Developer’s Guide 535

Copyright © GrapeCity, inc. All rights reserved.

Page 537: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

/// <param name="w">XmlTextWriter object to which to save the object</param>/// <returns>true if successful; false otherwise</returns>public override bool Serialize(XmlTextWriter w){ w.WriteAttributeString("startColor", Serializer.SerializeColorValue(startColor));w.WriteAttributeString("endColor", Serializer.SerializeColorValue(endColor));return base.Serialize(w);}/// <summary>/// Loads the object from XML./// </summary>/// <param name="r">XmlNodeReader from which to load the object</param>/// <returns>true if successful; false otherwise</returns>public override bool Deserialize(XmlNodeReader r){

if( r.MoveToAttribute("startColor") )startColor = Serializer.DeserializeColorValue(r.Value);if( r.MoveToAttribute("endColor") )endColor = Serializer.DeserializeColorValue(r.Value);return base.Deserialize(r); }

Parsing Formulas in Custom XML Deserialization

Withtheimplementationofcross-sheetreferencesinSpread,formulascancontainreferencestoothersheets.Ifsuchformulasareloadedfromafile,theSpreadcomponentmustloadsheetsandformulasinaspecificsequenceforthecross-sheetreferencestowork.Theparsingofformulasloadedfromafilemustbedelayeduntilallthesheetsintheworkbookhavebeenloaded.TheOpenmethodsinFpSpreadhandlethisautomatically,loadingtheXMLandparsinginthecorrectorder.

Ifyouhavecreatedcustomdeserializationcode,thenyouhavetobecareful.Ifyourcustomcodeloadsindividualsheetsandaddsthemtoaworkbook,thenyouwillneedtoaddcodetoparsetheformulasafterthesheethasbeenaddedtotheworkbook.ThiscanbedonewiththeLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)method,availableintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.ThismethodisimplementedintheDefaultSheetDataModel('DefaultSheetDataModelClass'intheon-linedocumentation)andSheetView('SheetViewClass'intheon-linedocumentation)classesaswellastheFpSpread('FpSpreadClass'intheon-linedocumentation)class.UsingtheLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)methodatthesheetlevelcallsthemethodonallthedatamodelsforaparticularsheet;usingtheLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)methodattheFpSpreadlevelcallsthemethodonallthesheets.

Forexample,thefollowingcode(inVisualBasic):

FpSpread.Sheets.Add(FarPoint.Win.Serializer.LoadObject(GetType (FarPoint.Win.Spread.SheetView), "C:\SavedSheet.xml", "RootNode"))

shouldbechangedto:

FpSpread.Sheets.Add(FarPoint.Win.Serializer.LoadObject(GetType (FarPoint.Win.Spread.SheetView), "C:\SavedSheet.xml", "RootNode")) FpSpread.LoadFormulas()

Thiscodeshouldbecalledafterthecodethatloadsthesheetandaddsittotheworkbook.

Formoredetails,refertothesemethods:

FpSpreadLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)methodSheetViewLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)methodDefaultSheetDataModelLoadFormulas('LoadFormulasMethod'intheon-linedocumentation)methodDefaultSheetDataModelParseFormula('ParseFormulaMethod'intheon-linedocumentation)method

Formoreinformationaboutformulasandcross-sheetreferencing,refertotheFormulaReference.

Saving and Loading a Skin

Youcansaveskinsettingsforasheetortheentirecontroltoafile(.SKN)andthenloaditintoanotherprojectoruseitasatemplateforotherprojects.TheSheetSkin('SheetSkinClass'intheon-linedocumentation)classhasLoadandSavemethodsforasheet.TheSpreadSkin('SpreadSkinClass'intheon-linedocumentation)classhasLoadandSavemethodsfortheentirecontrol.Ifyouwanttohaveacertainlookfortheentirecontrol,useaspreadskin.Ifyouwanteachsheettohaveadifferentlook,useasheetskin.

SavingaSkinLoadingaSkin

Formoreinformationoncreatingaskinforasheet,refertoCreatingaCustomSkinforaSheet.

Formoreinformationoncreatingaskinfortheentirecontrol,refertoCreatingaCustomSkinforaComponent.

Formoreinformationonapplyingaskin,refertoApplyingaSkintoaSheetorApplyingaSkintotheComponent.

Spread Windows Forms Developer’s Guide 536

Copyright © GrapeCity, inc. All rights reserved.

Page 538: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ForinformationoncustomizingaskinintheSpreadDesigner,refertotheexplanationoftheSheetSkinEditor(on-linedocumentation)ortheSpreadSkinEditor(on-linedocumentation)intheSpreadDesignerGuide.

Formoredetailsaboutskins,refertotheSheetSkin('SheetSkinClass'intheon-linedocumentation)classortheSpreadSkin('SpreadSkinClass'intheon-linedocumentation)class.

Saving a Skin

Youcansavetheskintoafileorastream.

Ifyoudonotspecifyapath,thefileissavedintheVisualStudioprojectbinfolderinaDebugsubfolder.Ifyouspecifyapaththatincludesafolderthatdoesnotexist,anerrormessageappearsduringcodecompile.

UsetheSave('SaveMethod'intheon-linedocumentation)methodsintheSheetSkin('SheetSkinClass'intheon-linedocumentation)orSpreadSkin('SpreadSkinClass'intheon-linedocumentation)class.

UsingCode

UsetheSave(SheetSkin,String)methodintheSheetSkin('SheetSkinClass'intheon-linedocumentation)classforsavingtoafile;usetheSave(SheetSkin,Stream)methodforsavingtoastream.

Example

Thisexamplecodesavesaskintoafile.

C#// define a skin and save itFarPoint.Win.Spread.SheetSkin sk = new FarPoint.Win.Spread.SheetSkin("BlueSkin", Color.White, Color.DarkGray, Color.Black, Color.Blue, FarPoint.Win.Spread.GridLines.Both, Color.Blue, Color.Red, Color.White, Color.Black, Color.LightGray, Color.Gray, false, false, true, true, true);FarPoint.Win.Spread.SheetSkin.Save(sk,"C:\\BlueSkinTemplate.skn");// FarPoint.Win.Spread.SpreadSkin.Save for a SpreadSkin

VB' define a skin and save itDim sk As New FarPoint.Win.Spread.SheetSkin("BlueSkin", Color.White, Color.DarkGray, Color.Black, Color.Blue, FarPoint.Win.Spread.GridLines.Both, Color.Blue, Color.Red, Color.White, Color.Black, Color.LightGray, Color.Gray, False, False, True, True, True)FarPoint.Win.Spread.SheetSkin.Save(sk,"C:\BlueSkinTemplate.skn")' FarPoint.Win.Spread.SpreadSkin.Save for a SpreadSkin

Loading a Skin

Youcanloadaskinfromafileorastream.

UsetheLoad('LoadMethod'intheon-linedocumentation)methodsintheSheetSkin('SheetSkinClass'intheon-linedocumentation)orSpreadSkin('SpreadSkinClass'intheon-linedocumentation)class.

UsingCode

UsetheLoad(String)methodintheSheetSkin('SheetSkinClass'intheon-linedocumentation)class(orSpreadSkin('SpreadSkinClass'intheon-linedocumentation)class)forloadingfromafile;usetheLoad(Stream)methodforloadingfromastream.

Spread Windows Forms Developer’s Guide 537

Copyright © GrapeCity, inc. All rights reserved.

Page 539: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecodeloadsaskinfromafile.

C#// load a sheet skinFarPoint.Win.Spread.SheetSkin.Load("C:\\BlueSkinTemplate.skn").Apply(FpSpread1.Sheets[0];// load a spread Skin// FarPoint.Win.Spread.SpreadSkin.Load("C:\\farpoint.skn").Apply (FpSpread1);

VB' load a sheet skinFarPoint.Win.Spread.SheetSkin.Load("C:\BlueSkinTemplate.skn").Apply(FpSpread1.Sheets(0))' load a Spread Skin'FarPoint.Win.Spread.SpreadSkin.Load("C:\farpoint.skn").Apply(FpSpread1)

Spread Windows Forms Developer’s Guide 538

Copyright © GrapeCity, inc. All rights reserved.

Page 540: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Managing Printing

Youcanprintaspreadsheet,orpartsofaspreadsheet,anduseavarietyofoptionstocustomizeprinting.Spreadallowsyouseveralwaystohandletheprintingandprovidessomedefaulthandlingifyouwanttokeepitsimple.Youcanprintvariouspartsofthesheet,youcansetoptionsfortheappearanceofwhatisprinted,youcanpreviewtheprinting,andyoucanprovidetheprintingoperationtotheenduser.

MuchoftheprintingworkusesthePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodintheFpSpread('FpSpreadClass'intheon-linedocumentation)class.ManyoftheoptionsavailableforcustomizingtheprintingareinthePrintInfo('PrintInfoProperty'intheon-linedocumentation)class.ForeachsheetinSpreadyouassignaPrintInfoobject.Moreinformationonthetasksinvolvedwiththemanagementofprintingaregiveninthesetopics:

SpecifyingWhattoPrintCustomizingtheAppearanceofthePrintingOptimizingthePrintingDisplayingDialogsforUsers

YoucanalsohandleprintingwithintheSpreadDesigner.FormoreinformationonprintingandpreviewinginSpreadDesigner,refertoPrintingaSheetfromSpreadDesigner(on-linedocumentation).

SheetsareprintedonthecurrentdefaultprinterinyourWindowsenvironmentunlessyouspecifyotherwise.YoucanprintsheetsonanyWindows-supportedprinter.

Specifying What to Print

Youcanprintanysheetintheworkbookorprinttheentiresetofsheets.Youcanalsoprintanyofseveralpartsofthespreadsheet.

PrintinganEntireSheetPrintingtoPDFPrintingaChildViewofaHierarchicalDisplayPrintingParticularPagesPrintingthePortionoftheSheetwithDataPrintingaRangeofCellsonaSheetPrintinganAreaoftheSheetPrintingaSheetwithCellNotesPrintingaSheetwithShapes

Printing an Entire Sheet

YoucanprintasheetinthecomponentwiththeFpSpread.PrintSheet('PrintSheetMethod'intheon-linedocumentation)method.Usethismethodtoprintthesheetorsheets,usingthePrintInfo('PrintInfoProperty'intheon-linedocumentation)settingsforeachsheet.Youcanonlyprintonesheetinthecomponentatatime;eachsheetcanhaveitsownPrintInfoobject,butyoucancallthePrintSheetmethodoncetodooneorallofthesheets.Ifthesheetparameterissetto-1,allthesheetsintheSpreadcomponentprint,witheachsheet(withitsindividualPrintInfosettings)asaseparateprintjob.ThePrintDocument('PrintDocumentEvent'intheon-linedocumentation)eventoccurswhenprintingasheet.

Thedefaultsettingprintsinblackandwhiteandautomaticallydeterminesthebestorderinwhichtoprintpages.Withthedefaultsettings,thefollowingitemsprintusingtheprinter’scurrentorientationsetting:

allthecolumnsandrowsinthesheet(butonlythecellsthathavedatainthem)thesheet’sborder

Spread Windows Forms Developer’s Guide 539

Copyright © GrapeCity, inc. All rights reserved.

Page 541: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

thecolumnandrowheaderstheheadershadowsthegridlines

Tocustomizethesesettings,refertoUnderstandingthePrintingOptionsandCustomizingthePrintedPageHeaderorFooter.ToallowSpreadtodeterminethebestprintsettings,refertoOptimizingthePrintingUsingRules.

YoucancallPrintSheetwithdifferentsheetparametersoneaftertheotherbutcallingPrintSheetonthesamesheetwithoutwaitingfortheinitialprinttoconcludecouldproduceincorrectresults.Beforecallingthenextprintforagivensheet,youneedtowaitforthepreviousonetobefinished.YoucandothisbycatchingthePrintMessageBoxeventandqueryingtheBeginPrintingparametertoseeifitisFalse.

YoucanalsousetheSpreadDesignertosetpropertiesforprinting,andyoucanprintdirectlyfromtheSpreadDesigner.Formoreinformation,refertoPrintingaSheetfromSpreadDesigner(on-linedocumentation).

UsingCode

UsethePrintSheetmethodintheFpSpread('FpSpreadClass'intheon-linedocumentation)classtoprintthespecifiedsheet.

Example

Thisexamplecodeprintsthesecondsheetinthecomponent.

C#fpSpread1.PrintSheet(1);

VBFpSpread1.PrintSheet(1)

Printing to PDF

YoucanprintasheettoaPortableDocumentFormat(PDF,version1.4)fileusingthePrintToPdf('PrintToPdfProperty'intheon-linedocumentation)methodinthePrintInfo('PrintInfoClass'intheon-linedocumentation)class.UsethePdfFileName('PdfFileNameProperty'intheon-linedocumentation)propertytospecifythefilenameandlocationtowhichtosavethefile.SincePrintInfoobjectsareassignedtoindividualsheets,thismethodprintsanindividualsheet.

YoucansetapasswordwiththePdfSecurity('PdfSecurityProperty'intheon-linedocumentation)property.

ThefollowingcelltypeitemsarenotprintedtoPDF:

CellType DescriptionGcTextBoxCellType('GcTextBoxCellTypeClass'intheon-linedocumentation)

LineSpace('LineSpaceProperty'intheon-linedocumentation),Ellipsis('EllipsisProperty'intheon-linedocumentation),orDisplayAlignment('DisplayAlignmentProperty'intheon-linedocumentation)

AnyGccelltype Sidebuttonappearance

GcDateTimeCellType('GcDateTimeCellTypeClass'intheon-linedocumentation)

Fieldappearance

Spread Windows Forms Developer’s Guide 540

Copyright © GrapeCity, inc. All rights reserved.

Page 542: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

GcNumberCellType('GcNumberCellTypeClass'intheon-linedocumentation)

Fieldappearance

GcTimeSpanCellType('GcTimeSpanCellTypeClass'intheon-linedocumentation)

Fieldappearance

GcMaskCellType('GcMaskCellTypeClass'intheon-linedocumentation)

Fieldappearance

GcCharMaskCellType('GcCharMaskCellTypeClass'intheon-linedocumentation)

Characterboxappearance

GcComboBoxCellType('GcComboBoxCellTypeClass'intheon-linedocumentation)

Imageappearanceorellipsis

Tocustomizeprintsettings,refertoUnderstandingthePrintingOptionsandCustomizingthePrintedPageHeaderorFooter.ToallowSpreadtodeterminethebestprintsettings,refertoOptimizingthePrintingUsingRules.

UsingCode

CallthePrintToPdf('PrintToPdfProperty'intheon-linedocumentation)propertyinthePrintInfo('PrintInfoClass'intheon-linedocumentation)classtoprintthespecifiedsheet.

Example

ThisexamplecodesavesthesheettoaPDFfile.

C#FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.PrintToPdf = true;printset.PdfFileName = "D:\\results.pdf";// Assign the printer settings and printfpSpread1.Sheets[0].PrintInfo = printset;fpSpread1.PrintSheet(0);

VBDim printset As New FarPoint.Win.Spread.PrintInfo()printset.PrintToPdf = Trueprintset.PdfFileName = "D:\results.pdf"' Assign the printer settings and printFpSpread1.Sheets(0).PrintInfo = printsetFpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. SelecttheFilemenu.

Spread Windows Forms Developer’s Guide 541

Copyright © GrapeCity, inc. All rights reserved.

Page 543: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. SelectPrint.3. SelectPrintPDF.4. UsetheSavedialogtopickalocationandspecifyafilename.

Printing a Child View of a Hierarchical Display

Youcanprintchildsheetsofahierarchyandmanagehowtheyareprinted.Todothis,youspecifythespecificchildviewandthenusethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodasdescribedinPrintinganEntireSheet.

Formoreinformationaboutahierarchicaldisplay,refertoWorkingwithHierarchicalDataDisplay.

UsingCode

UsethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodtoprintchildsheets.

Example

Thisexampleprintsachildsheet.

C#// Add print code to a command button in a hierarchy example.FarPoint.Win.Spread.SheetView ss;ss = fpSpread1.Sheets[0].GetChildView(0, 0);if (ss != null){ fpSpread1.PrintSheet(ss);};

VB' Add print code to a command button in a hierarchy example.Dim ss As FarPoint.Win.Spread.SheetViewss = FpSpread1.Sheets(0).GetChildView(0, 0)If Not ss Is Nothing Then FpSpread1.PrintSheet(ss)End If

Printing Particular Pages

Youcanprintallorsomeofthepagesforthesheet.SpecifythepagestoprintbysettingthePrintType('PrintTypeProperty'intheon-linedocumentation),PageStart('PageStartProperty'intheon-linedocumentation),andPageEnd('PageEndProperty'intheon-linedocumentation)propertiesofthePrintInfo('PrintInfoClass'intheon-linedocumentation)object.

YoucancalculatethenumberofprintedpagesforthesheetusingtheGetPrintPageCount('GetPrintPageCountMethod'intheon-linedocumentation)method.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.

Spread Windows Forms Developer’s Guide 542

Copyright © GrapeCity, inc. All rights reserved.

Page 544: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. IntheMemberslist,selectthesheetforwhichtosettheprintthepagerange.5. Inthepropertieslist,double-clickthePrintInfopropertytodisplaythesettingsforthePrintInfoclass.6. SetthePrintTypepropertytoPageRange.7. SetthePageStartandPageEndpropertiestodesignatethepagerangetoprint.8. ClickOKtoclosetheeditor.

UsingaShortcut

1. CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. SetthePrintInfo('PrintInfoClass'intheon-linedocumentation)objectPrintType('PrintTypeProperty'intheon-linedocumentation)propertytoPrintType.PageRange.Ifyoujustwanttoprintthecurrentpage,setthePrintType('PrintTypeProperty'intheon-linedocumentation)propertytoPrintType.CurrentPage,andgoontostep4.

3. SetthePrintInfoobjectPageStart('PageStartProperty'intheon-linedocumentation)andPageEnd('PageEndProperty'intheon-linedocumentation)propertiestodesignatethepagerangetoprint.

4. SettheSheetshortcutobjectPrintInfopropertytothePrintInfoobjectyoujustcreated.

Example

Thisexamplecodeprintspages5through10.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.PrintType = FarPoint.Win.Spread.PrintType.PageRange;printset.PageStart = 5;printset.PageEnd = 10;// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0].PrintInfo = printset;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.PrintType = FarPoint.Win.Spread.PrintType.PageRangeprintset.PageStart = 5printset.PageEnd = 10' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingCode

1. CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. SetthePrintInfo('PrintInfoClass'intheon-linedocumentation)objectPrintType('PrintTypeProperty'intheon-linedocumentation)propertytoPrintType.PageRange.Ifyoujustwanttoprintthecurrentpage,setthePrintType('PrintTypeProperty'intheon-linedocumentation)propertytoPrintType.CurrentPage,andgoontostep4.

3. SetthePrintInfoobjectPageStart('PageStartProperty'intheon-linedocumentation)andPageEnd('PageEndProperty'intheon-linedocumentation)propertiestodesignatethepagerangetoprint.

Spread Windows Forms Developer’s Guide 543

Copyright © GrapeCity, inc. All rights reserved.

Page 545: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. SettheSheetViewobjectPrintInfopropertytothePrintInfoobjectyoujustcreated.

Example

Thisexamplecodeprintspages5through10.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.PrintType = FarPoint.Win.Spread.PrintType.PageRange;printset.PageStart = 5;printset.PageEnd = 10;// Create SheetView object and assign it to the first sheet.FarPoint.Win.Spread.SheetView SheetToPrint = new FarPoint.Win.Spread.SheetView();SheetToPrint.PrintInfo = printset;fpSpread1.Sheets[0] = SheetToPrint;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.PrintType = FarPoint.Win.Spread.PrintType.PageRangeprintset.PageStart = 5printset.PageEnd = 10' Create SheetView object and assign it to the first sheet.Dim SheetToPrint As New FarPoint.Win.Spread.SheetView()SheetToPrint.PrintInfo = printsetFpSpread1.Sheets(0) = SheetToPrint' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetyouwanttoprint.2. FromthePropertywindow,choosePrintInfo.3. SetPrintTypetoPageRange.4. SetPageEndandPageStart.5. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Printing the Portion of the Sheet with Data

Youmaynotwanttoprinttheentiresheetbutonlytheportionofthesheetthathasdata.UsetheUseMax('UseMaxProperty'intheon-linedocumentation)methodofthePrintInfo('PrintInfoClass'intheon-linedocumentation)classtospecifywhethertoprintonlyrowsandcolumnscontainingdataorwhethertoprintallthewaytotheendofthedefinedsheet,eveniftherowsandcolumnsareempty.

Ifyouwanttoprintallofthecolumns(evenifitdoesnothavedatainit)butonlytherowswithdata,youwouldneedtosetUseMaxtoTruetokeepfromprintingrowswithoutdata.Then,youwouldneedtoprogrammaticallyputdatainthelastcolumnandthelastrowwithdata,sotheSpreadprintsallthecolumns.YoucouldaddalineofcodesimilartothefollowingbeforecallingthePrintSheet('PrintSheetMethod'intheon-linedocumentation)method.

C#FpSpread1.Sheets(0).Cells(FpSpread1.Sheets(0).GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data),

Spread Windows Forms Developer’s Guide 544

Copyright © GrapeCity, inc. All rights reserved.

Page 546: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

(FpSpread1.Sheets(0).ColumnCount - 1)).Value = ""

VBfpSpread1.Sheets[0].Cells[fpSpread1.Sheets[0].GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data), fpSpread1.Sheets[0].ColumnCount - 1].Value = "";

Formoreinformationaboutmethodsinvolvedwithfindingdata,refertoFindingRowsorColumnsThatHaveData.

Printing a Range of Cells on a Sheet

Youmaynotwanttoprinttheentiresheetbutonlyaspecifiedrangeofcellsonasheet.Youcanspecifythatonlyarangeofcellswithinasheetprints,ratherthantheentiresheet.AfterspecifyingtherangeofcellswiththePrintInfo('PrintInfoClass'intheon-linedocumentation)object,usethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodasdescribedinPrintinganEntireSheet.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosettheprintthecellrange.5. Inthepropertieslist,double-clickthePrintInfopropertytodisplaythesettingsforthePrintInfoclass.6. SetthePrintTypepropertytoPageRange.7. SettheColStart,RowStart,ColEnd,andRowEndpropertiestodesignatethecellrangetoprint.8. ClickOKtoclosetheeditor.

UsingaShortcut

CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.SetthePrintInfoobjectPrintType('PrintTypeProperty'intheon-linedocumentation)propertytoPrintType.CellRange.SetthePrintInfoobjectColStart('ColStartProperty'intheon-linedocumentation),RowStart('RowStartProperty'intheon-linedocumentation),ColEnd('ColEndProperty'intheon-linedocumentation),andRowEnd('RowEndProperty'intheon-linedocumentation)propertiestodesignatethecellrangetoprint.SettheSheetshortcutobjectPrintInfopropertytothePrintInfoobjectyoujustcreated.

Example

ThisexamplecodeprintscellsB2throughD4.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.PrintType = FarPoint.Win.Spread.PrintType.CellRange;printset.ColStart = 1;printset.ColEnd = 3;printset.RowStart = 1;printset.RowEnd = 3;// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0].PrintInfo = printset;// Print the sheet.fpSpread1.PrintSheet(0);

Spread Windows Forms Developer’s Guide 545

Copyright © GrapeCity, inc. All rights reserved.

Page 547: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.PrintType = FarPoint.Win.Spread.PrintType.CellRangeprintset.ColStart = 1printset.ColEnd = 3printset.RowStart = 1printset.RowEnd = 3' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingCode

1. CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. SetthePrintInfoobjectPrintType('PrintTypeProperty'intheon-linedocumentation)propertyto

PrintType.CellRange.3. SetthePrintInfoobjectColStart('ColStartProperty'intheon-linedocumentation),RowStart('RowStartProperty'intheon-linedocumentation),ColEnd('ColEndProperty'intheon-linedocumentation),andRowEnd('RowEndProperty'intheon-linedocumentation)propertiestodesignatethecellrangetoprint.

4. SettheSheetViewobjectPrintInfopropertytothePrintInfoobjectyoujustcreated.

Example

ThisexamplecodeprintscellsB2throughD4.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.PrintType = FarPoint.Win.Spread.PrintType.CellRange;printset.ColStart = 1;printset.ColEnd = 3;printset.RowStart = 1;printset.RowEnd = 3;// Create SheetView object and assign it to the first sheet.FarPoint.Win.Spread.SheetView SheetToPrint = new FarPoint.Win.Spread.SheetView();SheetToPrint.PrintInfo = printset;fpSpread1.Sheets[0] = SheetToPrint;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.PrintType = FarPoint.Win.Spread.PrintType.CellRangeprintset.ColStart = 1printset.ColEnd = 3printset.RowStart = 1printset.RowEnd = 3' Create SheetView object and assign it to the first sheet.Dim SheetToPrint As New FarPoint.Win.Spread.SheetView()

Spread Windows Forms Developer’s Guide 546

Copyright © GrapeCity, inc. All rights reserved.

Page 548: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

SheetToPrint.PrintInfo = printsetFpSpread1.Sheets(0) = SheetToPrint' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetyouwanttoprint.2. SelectthePageLayoutoption.3. SelectthePrintTitlesicon,chooseGeneral.

TheSheetPrintOptionsdialogappears.

4. ClicktheOutputtab.5. FromtheOutputTypedrop-downlistbox,chooseCellRange.6. ClickOKtoclosetheSheetPrintOptionsdialog.7. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.8. Tospecifytherangeofcells,9. Toprinttherangeofcells,followtheinstructionsinPrintinganEntireSheet.

Printing an Area of the Sheet

Youmaynotwanttoprinttheentiresheetbutonlyaspecifiedareaofthesheet.YoucanspecifyanareaofthesheetwiththePrintType('PrintTypeProperty'intheon-linedocumentation)propertyofthePrintInfoobjectorusetheOwnerPrintDraw('OwnerPrintDrawMethod'intheon-linedocumentation)methodforthecontrol.Aswiththeotherprintingtasks,suchasPrintinganEntireSheet,thisinvolvesthePrintSheet('PrintSheetMethod'intheon-linedocumentation)method.

UsingCode

SetthePrintType('PrintTypeProperty'intheon-linedocumentation)propertyandusethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodtoprint.

Example

Thisexamplespecifiesanareatoprint.

C#// Create the printer settings objectFarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();// Allow printing of only 20 columns and 20 rows of cellsprintset.ColStart = 1;printset.ColEnd = 20;printset.RowStart = 1;printset.RowEnd = 20;printset.PrintType = FarPoint.Win.Spread.PrintType.CellRange;// Assign the printer settings to the sheet and print itfpSpread1.Sheets[0].PrintInfo = printset;fpSpread1.PrintSheet(0);

VB

Spread Windows Forms Developer’s Guide 547

Copyright © GrapeCity, inc. All rights reserved.

Page 549: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim printset As New FarPoint.Win.Spread.PrintInfo' Allow printing of only 20 columns and 20 rows of cellsprintset.ColEnd = 20printset.ColStart = 1printset.RowStart = 1printset.RowEnd = 20printset.PrintType = FarPoint.Win.Spread.PrintType.CellRange' Assign the printer settings to the sheet and print itFpSpread1.Sheets(0).PrintInfo = printsetFpSpread1.PrintSheet(0)

Printing a Sheet with Cell Notes

Youcanprintcellnotesaswellasthedata.UsethePrintNotes('PrintNotesProperty'intheon-linedocumentation)propertyinthePrintInfo('PrintInfoClass'intheon-linedocumentation)objecttoprintnotes.Thenotescanbeprintedonapageeitherafterthedataisprintedorasdisplayedonthesheet.

Thefollowingfigureshowshowprintingastickynoteasdisplayedmightlook.

Forinformationaboutaddingcellnotes,refertoAddingaNotetoaCell.

UsingCode

1. UsethePrintNotes('PrintNotesProperty'intheon-linedocumentation)propertytoprintnotes.2. UsethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodtoprint.

Example

Thisexampleprintsnotes.

C#private void Form1_Load(object sender, System.EventArgs e){ fpSpread1.Sheets[0].RowCount = 20; fpSpread1.Sheets[0].ColumnCount = 5; fpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Fixed; FpSpread1.Sheets[0].Cells[0, 0].NoteStyle = FarPoint.Win.Spread.NoteStyle.StickyNote; fpSpread1.Sheets[0].Cells[0, 0].Note = "test";} private void button1_Click(object sender, System.EventArgs e){ FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo(); pi.PrintNotes =FarPoint.Win.Spread.PrintNotes.AsDisplayed;

Spread Windows Forms Developer’s Guide 548

Copyright © GrapeCity, inc. All rights reserved.

Page 550: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].PrintInfo = pi; fpSpread1.PrintSheet(-1);}

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load FpSpread1.Sheets(0).RowCount = 20 FpSpread1.Sheets(0).ColumnCount = 5 FpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Fixed FpSpread1.Sheets(0).Cells(0, 0).NoteStyle = FarPoint.Win.Spread.NoteStyle.StickyNote FpSpread1.Sheets(0).Cells(0, 0).Note = "test"End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim pi As New FarPoint.Win.Spread.PrintInfo() pi.PrintNotes = FarPoint.Win.Spread.PrintNotes.AsDisplayed FpSpread1.Sheets(0).PrintInfo = pi FpSpread1.PrintSheet(-1)End Sub

Printing a Sheet with Shapes

Youcanprintshapesaswellasthedata.UsethePrintShapes('PrintShapesProperty'intheon-linedocumentation)propertyinthePrintInfo('PrintInfoClass'intheon-linedocumentation)objecttoincludeprintingtheshapeswhenprintingasheet.

Formoreinformationonshapes,refertoCustomizingDrawing.

UsingCode

UsethePrintShapes('PrintShapesProperty'intheon-linedocumentation)propertytoprintshapes.

Example

Thisexampleprintsshapes.

C#private void button1_Click(object sender, System.EventArgs e){FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();pi.PrintShapes =true;fpSpread1.Sheets[0].PrintInfo = pi;fpSpread1.PrintSheet(0);}private void Form1_Load(object sender, System.EventArgs e){FarPoint.Win.Spread.DrawingSpace.ArrowShape arrow = new FarPoint.Win.Spread.DrawingSpace.ArrowShape();arrow.BackColor = Color.Plum;arrow.ForeColor = Color.Pink;arrow.SetBounds(0,0,200,100);

Spread Windows Forms Developer’s Guide 549

Copyright © GrapeCity, inc. All rights reserved.

Page 551: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].AddShape(arrow);}

VBPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim pi as New FarPoint.Win.Spread.PrintInfo()pi.PrintShapes = TruefpSpread1.Sheets(0).PrintInfo = piFpSpread1.PrintSheet(0)End SubPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim arrow As New FarPoint.Win.Spread.DrawingSpace.ArrowShape()arrow.BackColor = Color.Plumarrow.ForeColor = Color.Pinkarrow.SetBounds(0, 0, 200, 100)FpSpread1.ActiveSheet.AddShape(arrow)End Sub

Customizing the Appearance of the Printing

TherearevariousaspectsoftheprintingofthespreadsheetthatcanbecustomizedandmostofthemresideinthePrintInfo('PrintInfoClass'intheon-linedocumentation)object.ForanoverviewofthePrintInfoobject,refertoUnderstandingthePrintingOptions.

Thetasksinvolvedwithcustomizingtheprintinginclude:

UnderstandingthePrintingOptionsCustomizingthePrintJobSettingsCustomizingthePrintedPageLayoutCustomizingthePrintedPageHeaderorFooterRepeatingRowsorColumnsonPrintedPagesAddingaPageBreakAddingaWatermarktoaPrintedPage

MostprintoptionsaresetonthePrintInfoobjectandapplyatthesheetlevel.Whenyouprint,youaresendingaspecifiedsheettotheprinter,whichusesthosesettings.Ifyouwantdifferentprintsettingsfordifferentsheets,youmaywanttoresetthePrintInfoobjectandthenmakethenecessarychangesbetweentheprintingofthesheets.

Understanding the Printing Options

YoucancustomizetheprintingbysettingthepropertiesofaPrintInfo('PrintInfoClass'intheon-linedocumentation)objectandsettingthePrintInfo('PrintInfoProperty'intheon-linedocumentation)propertyofasheettothatobject.ThePrintInfo('PrintInfoClass'intheon-linedocumentation)objecthasthesettingsforcustomizingtheprintingofasheet.

ThePrintInfo('PrintInfoClass'intheon-linedocumentation)objectprovidesthefollowingpropertiesforcustomizingtheprinting:

Property DescriptionAbortMessage('AbortMessageProperty'intheon-linedocumentation)

Getsorsetsthemessagetodisplayfortheabortdialog.SeeDisplayinganAbortMessageforthe

Spread Windows Forms Developer’s Guide 550

Copyright © GrapeCity, inc. All rights reserved.

Page 552: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

User.

BestFitCols('BestFitColsProperty'intheon-linedocumentation)

Getsorsetswhethercolumnwidthsareadjustedtofitthelongeststringwidthforprinting.SeeOptimizingthePrintingUsingSize.

BestFitRows('BestFitRowsProperty'intheon-linedocumentation)

Getsorsetswhetherrowheightsareadjustedtofitthetalleststringheightforprinting.SeeOptimizingthePrintingUsingSize.

Centering('CenteringProperty'intheon-linedocumentation)

Getsorsetswhethertocentertheprintout.SeeCustomizingthePrintedPageLayout.

Colors('ColorsProperty'intheon-linedocumentation)

Getsorsetsthelistofcolorsthatcanbeusedinacustomheaderorfootertext.SeeCustomizingthePrintedPageHeaderorFooter.

ColStart('ColStartProperty'intheon-linedocumentation)andColEnd('ColEndProperty'intheon-linedocumentation)

Usedforprintingaportionofthesheet.SeePrintingaRangeofCellsonaSheet.

FirstPageNumber('FirstPageNumberProperty'intheon-linedocumentation)

Getsorsetsthepagenumbertoprintonthefirstpage.SeeCustomizingthePrintedPageLayout.

Footer('FooterProperty'intheon-linedocumentation)

Usedforprovidingfootersonprintedpages.SeeCustomizingthePrintedPageHeaderorFooter.

Header('HeaderProperty'intheon-linedocumentation)

Usedforprovidingheadersonprintedpages.SeeCustomizingthePrintedPageHeaderorFooter.

Images('ImagesProperty'intheon-linedocumentation)

Getsorsetsthelistofimagesthatcanbeusedinacustomheadersorfooters.SeeCustomizingthePrintedPageHeaderorFooter.

JobName('JobNameProperty'intheon-linedocumentation)

Getsorsetsthenameoftheprintjob.SeeCustomizingthePrintJobSettings.

Margin('MarginProperty'intheon-linedocumentation)

Getsorsetsthemarginsforprinting.SeeCustomizingthePrintedPageLayout.

Opacity('OpacityProperty'intheon-linedocumentation)

Getsorsetstheopacityusedwhenprintingthissheet;thisisusedtoprintawatermarkfirstandthenthesheetcontents.SeeCustomizingthePrintedPageLayout.

Orientation('OrientationProperty'intheon-linedocumentation)

Getsorsetsthepageorientationusedforprinting.SeeCustomizingthePrintJobSettings.

PageStart('PageStartProperty'intheon-linedocumentation)andPageEnd('PageEndProperty'intheon-linedocumentation)

Usedforprintingapagerange.SeePrintingParticularPages.

PageOrder('PageOrderProperty'intheon-linedocumentation)

Getsorsetstheorderinwhichpagesprint.SeeCustomizingthePrintJobSettings.

PaperSize('PaperSizeProperty'intheon-linedocumentation)

Getsorsetsthepapersizetouse.SeeCustomizingthePrintJobSettings.

PaperSource('PaperSourceProperty'intheon-linedocumentation)

Getsorsetsthepapersourcetouse.SeeCustomizingthePrintJobSettings.

Preview('PreviewProperty'intheon-linedocumentation)

Usedtoprovideprintpreview.SeeProvidingaPreviewofthePrinting.

Spread Windows Forms Developer’s Guide 551

Copyright © GrapeCity, inc. All rights reserved.

Page 553: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Printer('PrinterProperty'intheon-linedocumentation)

Getsorsetsthenameoftheprintertouseforprinting.SeeCustomizingthePrintJobSettings.

PrintNotes('PrintNotesProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthecellnotes.SeePrintingaSheetwithCellNotes.

PrintShapes('PrintShapesProperty'intheon-linedocumentation)

Getsorsetswhethertoprintfloatingobjects.SeePrintingaSheetwithShapes.

PrintType('PrintTypeProperty'intheon-linedocumentation)

Getsorsetswhatistobeprinted.SeePrintingParticularPages.

RepeatColStart('RepeatColStartProperty'intheon-linedocumentation)andRepeatColEnd('RepeatColEndProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthesamesetofcolumnsoneachpage.SeeCustomizingthePrintedPageHeaderorFooter.

RepeatRowStart('RepeatRowStartProperty'intheon-linedocumentation)andRepeatRowEnd('RepeatRowEndProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthesamesetofrowsoneachpage.SeeCustomizingthePrintedPageHeaderorFooter.

RowStart('RowStartProperty'intheon-linedocumentation)andRowEnd('RowEndProperty'intheon-linedocumentation)

Usedforprintingaportionofthesheet.SeePrintingaRangeofCellsonaSheet.

ShowBorder('ShowBorderProperty'intheon-linedocumentation)

Getsorsetswhethertoprintaborderaroundthesheet.SeeCustomizingthePrintedPageLayout.

ShowColor('ShowColorProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthecolorsastheyappearonthescreen.SeeCustomizingthePrintedPageLayout.

ShowColumnHeader('ShowColumnHeaderProperty'intheon-linedocumentation)andShowRowHeader('ShowRowHeaderProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthecolumnheadersandrowheaders.SeeCustomizingthePrintedPageLayout.

ShowGrid('ShowGridProperty'intheon-linedocumentation)

Getsorsetswhethertoprintthesheetgridlines.SeeCustomizingthePrintedPageLayout.

ShowPrintDialog('ShowPrintDialogProperty'intheon-linedocumentation)

Getsorsetswhethertodisplayaprintdialogbeforeprinting.SeeDisplayingaPrintDialogfortheUser.

ShowShadows('ShowShadowsProperty'intheon-linedocumentation)

Getsorsetswhethertoprinttheheadershadows.SeeCustomizingthePrintedPageLayout.

SmartPrintPagesTall('SmartPrintPagesTallProperty'intheon-linedocumentation)

Getsorsetshowmanypagestalltoprint.SeeOptimizingthePrintingUsingRules.

SmartPrintPagesWide('SmartPrintPagesWideProperty'intheon-linedocumentation)

Getsorsetshowmanypageswidetoprint.SeeOptimizingthePrintingUsingRules.

SmartPrintRules('SmartPrintRulesProperty'intheon-linedocumentation)

Usedforsettinguptherulesforoptimizingtheprinting.SeeOptimizingthePrintingUsingRules.

UseMax('UseMaxProperty'intheon-linedocumentation)

Getsorsetswhethertoprintonlyrowscontainingdata.SeePrintinganAreaoftheSheet.

UseSmartPrint('UseSmartPrintProperty'intheon- Usedforturningontherulesforoptimizingthe

Spread Windows Forms Developer’s Guide 552

Copyright © GrapeCity, inc. All rights reserved.

Page 554: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

linedocumentation) printing.SeeOptimizingthePrintingUsingRules.

ZoomFactor('ZoomFactorProperty'intheon-linedocumentation)

Getsorsetsthezoomfactorusedforprintingthissheet.SeeCustomizingthePrintedPageLayout.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosettheprintoptions.5. Inthepropertieslist,double-clickthePrintInfopropertytodisplaythesettingsforthePrintInfoclass.6. Setthepropertieslistedaboveasneededtosetyourprintoptions.7. ClickOKtoclosetheeditor.

UsingaShortcut

1. CreateandsetpropertiesforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. SettheSheetshortcutobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertyto

thePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

ThisexamplecodecreatesaPrintInfo('PrintInfoClass'intheon-linedocumentation)object,setspropertiestospecifytonotprintgridlinesorrowheaders,andtoprintonlycellswithdatainthem.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.ShowGrid = false;printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;printset.UseMax = true;// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0].PrintInfo = printset;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.ShowGrid = Falseprintset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hideprintset.UseMax = True' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingCode

1. CreateandsetpropertiesforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.

Spread Windows Forms Developer’s Guide 553

Copyright © GrapeCity, inc. All rights reserved.

Page 555: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2. SettheSheetViewobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

ThisexamplecodecreatesaPrintInfo('PrintInfoClass'intheon-linedocumentation)object,setspropertiestospecifytonotprintgridlinesorrowheaders,andtoprintonlycellswithdatainthem.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.ShowGrid = false;printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;printset.UseMax = true;// Create SheetView object and assign it to the first sheet.FarPoint.Win.Spread.SheetView SheetToPrint = new FarPoint.Win.Spread.SheetView();SheetToPrint.PrintInfo = printset;fpSpread1.Sheets[0] = SheetToPrint;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.ShowGrid = Falseprintset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hideprintset.UseMax = True' Create SheetView object and assign it to the first sheet.Dim SheetToPrint As New FarPoint.Win.Spread.SheetView()SheetToPrint.PrintInfo = printsetFpSpread1.Sheets(0) = SheetToPrint' Print the sheet.FpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetprintsettings.2. SelectthePageLayoutoption.3. SelectthePrintTitlesicon,chooseGeneral.

TheSheetPrintdialogappears.

4. SettheprintoptionsusingtheGeneral,Output,Header/Footer,SmartPrint,Pagination,andMarginstaboptions.

5. ClickOKtoclosetheSheetPrintOptionsdialog.6. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Customizing the Print Job Settings

SheetsareprintedonthecurrentdefaultprinterinyourWindowsenvironmentunlessyouspecifyotherwise.YoucanprintsheetsonanyWindows-supportedprinter.

Theprintjobsettingsthatyoucancustomizeinclude:printer,source,andpagesize.SetthePrinter('PrinterProperty'intheon-linedocumentation),PaperSource('PaperSourceProperty'intheon-line

Spread Windows Forms Developer’s Guide 554

Copyright © GrapeCity, inc. All rights reserved.

Page 556: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

documentation),orPaperSize('PaperSizeProperty'intheon-linedocumentation)onthePrintInfoobject.

UsingCode

1. Setvariousprintjobsettings.2. Printthesheet.

Example

Thisexamplecodesetsthepapersourcebasedonaselectionfromacomboboxandsetsthepapersizebeforeprintingallthesheets.

C#private void Form1_Load(object sender, System.EventArgs e){ int i; System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings(); for (i = 0; i <= ps.PaperSources.Count - 1; i++) { comboBox1.Items.Add(ps.PaperSources[i].SourceName); } comboBox1.Text = ps.PaperSources[0].SourceName;}

private void button1_Click(object sender, System.EventArgs e{ FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo(); System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings(); pi.PaperSize = new System.Drawing.Printing.PaperSize("Letter", 600, 300); pi.PaperSource = ps.PaperSources[comboBox1.SelectedIndex]; fpSpread1.Sheets[0].PrintInfo = pi; fpSpread1.PrintSheet(-1);}

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ps As New System.Drawing.Printing.PrinterSettings() Dim i As Integer For i = 0 To ps.PaperSources.Count - 1 ComboBox1.Items.Add(ps.PaperSources.Item(i).SourceName) Next ComboBox1.Text = ps.PaperSources.Item(0).SourceNameEnd Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim pi As New FarPoint.Win.Spread.PrintInfo() Dim ps As New System.Drawing.Printing.PrinterSettings() pi.PaperSize = New System.Drawing.Printing.PaperSize("Letter", 600, 300) pi.PaperSource = ps.PaperSources(ComboBox1.SelectedIndex)

Spread Windows Forms Developer’s Guide 555

Copyright © GrapeCity, inc. All rights reserved.

Page 557: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FpSpread1.Sheets(0).PrintInfo = pi FpSpread1.PrintSheet(-1)End Sub

Customizing the Printed Page Layout

Youcancustomizethelayoutoftheprintedpageinanyofseveralways.Thelayoutsettingsthatyoucancustomizeinclude:color,borders,gridlinesandopacity,centeringandmargins,orientation,shadows,andzooming.ThesecustomizationsarepossiblewithpropertiesofthePrintInfoobject.

SettingthePrintedPageColor,Border,andGrid

Thereareseveralappearancecustomizationsthatcanbesetfortheprintedpage,includingsettingthecolor,theborder,andthegrid.

YoucansetthePrintInfoShowColor('ShowColorProperty'intheon-linedocumentation),ShowBorder('ShowBorderProperty'intheon-linedocumentation),andShowGrid('ShowGridProperty'intheon-linedocumentation)properties.

SettingthePrintedPageOrientation

Thereareseveralwaystocontroltheorientation(landscapeorportrait)ofthepagewhenprinting.

YoucansetthePrintInfoOrientation('OrientationProperty'intheon-linedocumentation)property.

YoucanuseLandscapeRule,whichisaSmartPrintrule.Formoreinformation,refertoOptimizingthePrintingUsingRules.

SettingthePrintedPageWhiteSpace

Youcancustomizethemarginsoftheprintedpageandyoucancentertheprintedpage.

RefertothefollowingfigurefordefinitionsofthepropertiesofthePrintMargin('PrintMarginClass'intheon-linedocumentation)object.

Spread Windows Forms Developer’s Guide 556

Copyright © GrapeCity, inc. All rights reserved.

Page 558: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThePrintInfoMargin('MarginProperty'intheon-linedocumentation)propertyusesaPrintMargin('PrintMarginClass'intheon-linedocumentation)object.Whenyouusethisobjectincode,theunitsofmeasureare100-thsofaninch,so3/4ofaninchwouldbe75.

WhenyouusetheSpreadDesignerandsetthemarginsintheSheet>PrintSettings>Marginstab,theunitsofmeasureareinches,so3/4ofaninchwouldbe0.75.

Thereareseveralwaystocontrolthejustificationofcontentsonthepagewhenprinting.

YoucansetthePrintInfoCentering('CenteringProperty'intheon-linedocumentation)property.

CreatingaShadowforthePrintedPage

Oneofthecustomizationsofthepagelayoutistheabilitytoprintshadows.

YoucansetthePrintInfoShowShadows('ShowShadowsProperty'intheon-linedocumentation)property.

ScalingthePrinting

Thereareseveralwaystocontrolthescalingoftheprinting.

YoucansetthePrintInfoZoomFactor('ZoomFactorProperty'intheon-linedocumentation)property.

TheZoomFactorandthezoomwithinthepreviewaredifferentscalingmechanisms.TheZoomFactorintheprintlayouteffectsthesizeoftheactualdisplayandtheprintoutsize.Thezoomwithintheprintpreviewdialogissimplyatemporaryzoominthedisplaybutisnotsavedforanyprinting.

Currentlythereisnomeansofadjustingthedefaultzoominthepreview.

YoucanuseScaleRule,whichisaSmartPrintrule.Formoreinformation,refertoOptimizingthePrintingUsingRules.

Spread Windows Forms Developer’s Guide 557

Copyright © GrapeCity, inc. All rights reserved.

Page 559: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Customizing the Printed Page Header or Footer

Youcanprovideheaderandfootersthatappearsontheprintedpages.UsingtheHeader('HeaderProperty'intheon-linedocumentation)propertyandFooter('FooterProperty'intheon-linedocumentation)propertyofthePrintInfo('PrintInfoClass'intheon-linedocumentation)class,whichmayincludespecialcontrolcommands,youcanspecifytextandvariables,suchaspagenumbers,aswellasspecifythefontsettings.Thefontrelatedcommandsbeginwith"f".

Thecontrolcommandsthatcanbeinsertedinheadersandfootersarelistedinthistable:

ControlCharacter

FullCommand

ActioninPrintedPageHeaderorFooter

/ / Insertsaliteralforwardslashcharacter(/)

/c /c Centerjustifiestheitem

/cl /cl"n" Setsthefontcolorfortext,withthezero-basedindexofthecolor,n,inquotes(ncanbe0ormore);seetheColors('ColorsProperty'intheon-linedocumentation)property

/dl /dl Insertsthedate,usingthelongform

/ds /ds Insertsthedate,usingtheshortform

/f /f"n" Recallsthepreviouslysavedfontsettings(see/fsinthistable),withthezero-basedindex,n,inquotes(ncanbe0ormore)

/fb /fb0 Turnsoffboldfonttype

/fb1 Turnsonboldfonttype

/fi /fi0 Turnsoffitalicsfonttype

/fi1 Turnsonitalicsfonttype

/fk /fk0 Turnsoffstrikethrough

/fk1 Turnsonstrikethrough

/fn /fn"name" Setsthenameofthefontface,withthenameofthefontinquotes

/fs /fs"n" Savesthefontsettingsforre-use,withthezero-basedindexofthefontsettings,n,inquotes(see/finthistable)

/fu /fu0 Turnsoffunderline

/fu1 Turnsonunderline

/fz /fz"n" Setthesizeofthefont

/g /g"n" Insertsagraphic(image),withthezero-basedindexoftheimage,n,inquotes(ncanbezeroormore);seetheImages('ImagesProperty'intheon-linedocumentation)property

/l /l Leftjustifiestheitem(thatistheletterlorL,asinLeft)

/n /n Insertsanewline

/p /p Insertsapagenumber

/pc /pc Insertsapagecount(thetotalnumberofpagesintheprintjob)

/r /r Rightjustifiestheitem

/sn /sn Insertsthesheetname

Spread Windows Forms Developer’s Guide 558

Copyright © GrapeCity, inc. All rights reserved.

Page 560: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

/tl /tl Insertsthetime,usingthelongform

/ts /ts Insertsthetime,usingtheshortform

Ifyouusemultiplecontrolcharacters,donotputspacesbetweenthem.Theletterscanbeloweroruppercase;allcommandsandexamplesareshownhereinlowercaseforsimplicity.

Definetheheadersandfooters(settheHeader('HeaderProperty'intheon-linedocumentation)andFooter('FooterProperty'intheon-linedocumentation)properties)beforeprintingthesheet(runningthePrintSheet('PrintSheetMethod'intheon-linedocumentation)method).

YoucanspecifyacolorforthetextfromalistofcolorsifthecolorispreviouslydefinedintheColorsproperty.

YoucanspecifyanimageiftheimageispreviouslydefinedintheImagesproperty.

Youcanaddtextincludingthepagenumberandthetotalnumberofpagesprinted.

Youcansavethefontsettingstore-usethemlaterintheheaderorfooter.

Hereistheresultoftheexamplecodegivenbelow.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtosettheheaderandfootertext.5. Inthepropertieslist,double-clickthePrintInfopropertytodisplaythesettingsforthePrintInfoclass.6. SettheHeaderandFooterpropertiestosettheheaderandfootertext.7. ClickOKtoclosetheeditor.

UsingaShortcut

1. CreateandsettheHeader('HeaderProperty'intheon-linedocumentation)andFooter('FooterProperty'intheon-linedocumentation)propertiesforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.

2. SettheSheetshortcutobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Spread Windows Forms Developer’s Guide 559

Copyright © GrapeCity, inc. All rights reserved.

Page 561: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

Thisexamplecodeprintsthesheetwiththespecifiedheaderandfootertext.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.Colors = new Color[] {Color.Green, Color.Yellow, Color.Gold, Color.Indigo, Color.Brown};printset.Images = new Image[] {Image.FromFile("C:\\images\\point.jpg"), Image.FromFile("C:\\images\\logo.gif"), Image.FromFile("C:\\images\\icon.jpg")};printset.Header = "/fn\"Book Antiqua\" /fz\"14\" Print job for FarPoint Inc./n ";printset.Footer = "/g\"1\"/r/cl\"4\"This is page /p of /pc";// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0].PrintInfo = printset;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.Colors = New Color() {Color.Green, Color.Yellow, Color.Gold, Color.Indigo, Color.Brown}printset.Images = New Image() {Image.FromFile("D:\images\point.jpg"), Image.FromFile("D:\images\logo.gif"), Image.FromFile("C:\images\icon.jpg")}printset.Header = "/fn""Book Antiqua"" /fz""14"" Print job for FarPoint Inc./n "printset.Footer = "/g""1""/r/cl""4""This is page /p of /pc"' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingCode

1. CreateandsettheHeader('HeaderProperty'intheon-linedocumentation)andFooter('FooterProperty'intheon-linedocumentation)propertiesforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.

2. SettheSheetViewobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplecodeprintsthesheetwiththespecifiedheaderandfootercolorsandimages.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();pi.Footer = "This is Page /p/nof /pc Pages";pi.Header = "Print Job For /nFPT Inc.";pi.Colors = new Color[] {Color.Red, Color.Blue};pi.Images = new Image[] {Image.FromFile("D:\Corporate.jpg"), Image.FromFile("D:\Building.jpg")};pi.RepeatColEnd = 25;

Spread Windows Forms Developer’s Guide 560

Copyright © GrapeCity, inc. All rights reserved.

Page 562: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

pi.RepeatColStart = 1;pi.RepeatRowEnd = 25;pi.RepeatRowStart = 1;fpSpread1.ActiveSheet.PrintInfo = pi;

VB' Create PrintInfo object and set properties.Dim pi As New FarPoint.Win.Spread.PrintInfopi.Footer = "This is Page /p/nof /pc Pages"pi.Header = "Print Job For /nFPT Inc."pi.Colors = New Color() {Color.Red, Color.Blue}pi.Images = New Image() {Image.FromFile("D:\Corporate.jpg"), Image.FromFile("D:\Building.jpg")}pi.RepeatColEnd = 25pi.RepeatColStart = 1pi.RepeatRowEnd = 25pi.RepeatRowStart = 1FpSpread1.ActiveSheet.PrintInfo = pi

UsingCode

1. CreateandsettheHeader('HeaderProperty'intheon-linedocumentation)andFooter('FooterProperty'intheon-linedocumentation)propertiesforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.

2. SettheSheetViewobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplecodeprintsthesheetwiththespecifiedheaderandfootertext.

C#// Create PrintInfo object and set properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.Header = "/lJobName";printset.Footer = "/r/p of /pc";// Create SheetView object and assign it to the first sheet.FarPoint.Win.Spread.SheetView SheetToPrint = new FarPoint.Win.Spread.SheetView();SheetToPrint.PrintInfo = printset;// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0] = SheetToPrint;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create PrintInfo object and set properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.Header = "/lJobName"printset.Footer = "/r/p of /pc"' Create SheetView object and assign it to the first sheet.Dim SheetToPrint As New FarPoint.Win.Spread.SheetView()SheetToPrint.PrintInfo = printsetFpSpread1.Sheets(0) = SheetToPrint

Spread Windows Forms Developer’s Guide 561

Copyright © GrapeCity, inc. All rights reserved.

Page 563: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetprintsettings.2. SelectthePageLayoutoption.3. ChoosePrintTitles.

TheSheetPrintdialogappears.

4. ClicktheHeader/Footertab.5. SelecttheHeaderorFooterradiobuttontoindicatewhetheryouaresettingtheheaderorfootertext.6. Typethetextforyourheaderorfooterinthetextbox.

YoucaninsertcontrolcharactersinyourtextbyselectingthemfromtheControlCharactersdrop-downlistboxbelowthetextboxandthenclickingtheAddbutton.

7. ClickOKtoclosetheSheetPrintOptionsdialog.8. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Repeating Rows or Columns on Printed Pages

Youcanspecifythatrowsappearatthetopofeveryprintedpageorspecifythatcolumnsappearontheleftsideofeveryprintedpage.UsetheRepeatRowStart('RepeatRowStartProperty'intheon-linedocumentation),RepeatRowEnd('RepeatRowEndProperty'intheon-linedocumentation),RepeatColStart('RepeatColStartProperty'intheon-linedocumentation),andRepeatColEnd('RepeatColEndProperty'intheon-linedocumentation)propertiesofthePrintInfo('PrintInfoClass'intheon-linedocumentation)object.

UsingCode

1. UsetherepeatpropertiesofthePrintInfoobject.2. UsethePrintSheet('PrintSheetMethod'intheon-linedocumentation)methodtoprintthesheet.

Example

Thisexamplesetstherepeatoptionsandusesapreviewdialog.

C#FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.RepeatColStart = 0;printset.RepeatColEnd = 2;printset.RepeatRowStart = 0;printset.RepeatRowEnd = 2;printset.Preview = true;fpSpread1.Sheets[0].PrintInfo = printset;fpSpread1.PrintSheet(0);

VBDim printset As New FarPoint.Win.Spread.PrintInfoprintset.RepeatColStart = 0printset.RepeatColEnd = 2

Spread Windows Forms Developer’s Guide 562

Copyright © GrapeCity, inc. All rights reserved.

Page 564: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

printset.RepeatRowStart = 0printset.RepeatRowEnd = 2printset.Preview = TrueFpSpread1.Sheets(0).PrintInfo = printsetFpSpread1.PrintSheet(0)

Adding a Page Break

Youcanaddaforcepagebreakbeforeaspecifiedcolumnorrow.Pagebreaksarenotdisplayedonthescreenbutforcepagebreakswhenthesheetisprinted.Acolumnpagebreakoccurstotheleftofthespecifiedcolumn.Arowpagebreakoccursabovethespecifiedrow.Toaddorsetthepagebreaks,usetheSetRowPageBreak('SetRowPageBreakMethod'intheon-linedocumentation)andSetColumnPageBreak('SetColumnPageBreakMethod'intheon-linedocumentation)methods.

Youcanalsoretrievethenumberofthenextcolumnorrowinthesheetwhereapagebreakoccurs.Tofindthepagebreaksthatarealreadyset,usetheGetRowPageBreaks('GetRowPageBreaksMethod'intheon-linedocumentation)methodtoreturnthenumberofrowpagebreaksandusetheGetColumnPageBreaks('GetColumnPageBreaksMethod'intheon-linedocumentation)methodtoreturnthenumberofcolumnpagebreaks.

YoucancalculatethenumberofprintedpagesforthesheetusingtheGetPrintPageCount('GetPrintPageCountMethod'intheon-linedocumentation)method.

UsingCode

1. UsetheSetRowPageBreak('SetRowPageBreakMethod'intheon-linedocumentation)methodonthesheettosettherowpagebreak.

2. UsetheGetRowPageBreaks('GetRowPageBreaksMethod'intheon-linedocumentation)methodtogetthepagebreaks.

Example

Thisexamplesetsarowpagebreakandgetstherownumbersfortherowpagebreaks.

C#// Add this code to the form load.FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();pi.UseMax =false;fpSpread1.Sheets[0].PrintInfo = pi;fpSpread1.Sheets[0].SetRowPageBreak(5,true);// Add this code to a button click event.int []i;i = fpSpread1.GetRowPageBreaks(0);foreach (object o in i){ listBox1.Items.Add(o);}

VB' Add this code to the form load event.Dim pi As New FarPoint.Win.Spread.PrintInfo()pi.UseMax = FalseFpSpread1.Sheets(0).PrintInfo = piFpSpread1.Sheets(0).SetRowPageBreak(5, True)

Spread Windows Forms Developer’s Guide 563

Copyright © GrapeCity, inc. All rights reserved.

Page 565: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

' Add this code to a button click event.Dim i() As IntegerDim o As Objecti = FpSpread1.GetRowPageBreaks(0)For Each o In i ListBox1.Items.Add(o)Next

Adding a Watermark to a Printed Page

Youcanprintabackgroundimageorawatermarkwhenthespreadsheetisprinted.

SetthePrintBackground('PrintBackgroundEvent'intheon-linedocumentation)eventtofirewhenprinting,andspecifythegraphicwiththePrintBackgroundevent,andtheopacitywiththePrintInfo.Opacity('OpacityProperty'intheon-linedocumentation)property,sotheprintingofthespreadsheethasnowatermarkifopacityishighest(transparencyislowest)andshowsthewatermarkthroughthespreadsheetiftheopacityislow(transparencyishigh).

UsingCode

UsethePrintInfo('PrintInfoClass'intheon-linedocumentation)objecttospecifytheopacityforprintingawatermark.

Example

Thisexampleshowshowtoprintawatermark.

C#private void fpSpread1_PrintBackground(object sender, FarPoint.Win.Spread.PrintBackgroundEventArgs e){ FarPoint.Win.Picture pic = new FarPoint.Win.Picture(System.Drawing.Image.FromFile("D:\\Files\\cover.jpg"), FarPoint.Win.RenderStyle.Normal); pic.AlignHorz = FarPoint.Win.HorizontalAlignment.Left; pic.AlignVert = FarPoint.Win.VerticalAlignment.Top; pic.Paint(e.Graphics, e.SheetRectangle);}

private void button1_Click(object sender, System.EventArgs e){ FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo(); pi.Opacity = 100; fpSpread1.ActiveSheet.PrintInfo = pi; fpSpread1.PrintSheet(0);}

VBPrivate Sub FpSpread1_PrintBackground(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.PrintBackgroundEventArgs) Handles FpSpread1.PrintBackground Dim pic As New FarPoint.Win.Picture(Image.FromFile("D:\Files\cover.jpg"), FarPoint.Win.RenderStyle.Normal) pic.AlignHorz = FarPoint.Win.HorizontalAlignment.Left

Spread Windows Forms Developer’s Guide 564

Copyright © GrapeCity, inc. All rights reserved.

Page 566: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

pic.AlignVert = FarPoint.Win.VerticalAlignment.Top pic.Paint(e.Graphics, e.SheetRectangle)End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim pi As New FarPoint.Win.Spread.PrintInfo() pi.Opacity = 100 FpSpread1.ActiveSheet.PrintInfo = pi FpSpread1.PrintSheet(0)End Sub

Optimizing the Printing

ThereareafewwaystoletSpreadhandletheprintingandoptimizetheprintingforyou.YoucanletSpreaddeterminetheoptimumwayusingrules,asetofalgorithmstocalculatethebestwaytoscaleandfityourprinting,orletSpreaddeterminethebiggestcolumnorrowandhandletheprintingbasedonthat.

Thetasksinvolvedwithoptimizingtheprintinginclude:

OptimizingthePrintingUsingRulesOptimizingthePrintingUsingSize

Optimizing the Printing Using Rules

Spreadprovidesawaytoautomaticallydeterminethebestwaytoprintyoursheet.Byusingrulesthatyoucanchoose,itcandecide,forexample,whetheritisbesttoprintyoursheetonlandscape-orportrait-orientedpages.

Therules,thatyoucanturnonoroff,thatoptimizetheprintingcanbecustomizedbysettingthepropertiesoftheseruleobjects:

RuleObject DescriptionLandscapeRule('LandscapeRuleClass'intheon-linedocumentation)

Determineswhethertoprintthesheetinlandscapeorportraitorientation.

ScaleRule('ScaleRuleClass'intheon-linedocumentation)

Determinesthebestscaleatwhichtoprintthesheet,startingwith100%(StartFactor=1),anddecreasingatsetintervalstoaminimumsize(EndFactor).DefaultsettingsareStartFactor=1,EndFactor=0.6,andInterval=0.1.

BestFitColumnRule('BestFitColumnRuleClass'intheon-linedocumentation)

Determineshowbesttofitthecolumnsinthesheetonthepage.

Bydefault,optimizingtheprintingofthesheetusesthefollowinglogic:

IftheinformationcanbeprintedwithoutmakinganychangestothesettingsthatyouhavedefinedinthePrintInfo('PrintInfoClass'intheon-linedocumentation)object,thesheetprintsinportraitmode.Ifthesheetiswiderthanaportraitpage,thesheetprintsinlandscapemode.Iftheinformationdoesnotfitinlandscapemode,butdoesfitinlandscapemodeifthesheetisreducedupto60%ofitsoriginalsize,thesheetisscaledtofitwithinthepage.Iftheinformationcannotbescaledtofit,thesheettriestoreducecolumnwidthstoaccommodatethewideststringwithineachcolumn.Ifallattemptstomakethesheetprintwithinapagefail,printingresumesnormallyinthecurrentprinter

Spread Windows Forms Developer’s Guide 565

Copyright © GrapeCity, inc. All rights reserved.

Page 567: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

orientationwithnoreductions.

Youcancustomizehowthislogicisappliedthroughtheruleobjects.Ifyoucustomizetheruleobject,thedefaultrulesareignoredandonlythecustomrulesareusedforprinting.YoucansetupacollectionoftheseruleswiththeSmartPrintRulesCollection('SmartPrintRulesCollectionClass'intheon-linedocumentation)objectandsetwhethertousetheseruleswiththeUseSmartPrint('UseSmartPrintProperty'intheon-linedocumentation)property.

UsingthePropertiesWindow

1. Atdesigntime,inthePropertieswindow,selecttheSpreadcomponent.2. SelecttheSheetsproperty.3. ClickthebuttontodisplaytheSheetViewCollectionEditor.4. IntheMemberslist,selectthesheetforwhichtouseSmartPrint.5. Inthepropertieslist,double-clickthePrintInfopropertytodisplaythesettingsforthePrintInfoclass.6. SettheUseSmartPrintpropertytotrue.7. IfyouwanttocustomizetheSmartPrintrules,selecttheSmartPrintRulesandclickthebuttontodisplaytheSmartPrintRuleCollectionEditor.Customizetherulesasyouwant,thenclickOKtoclosetheSmartPrintRuleCollectionEditor.

8. ClickOKtoclosetheSheetViewCollectioneditor.

UsingaShortcut

1. CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. IfyouwanttochangehowSmartPrintdetermineshowbesttoprintthesheet,createanewSmartPrintRulesCollection('SmartPrintRulesCollectionClass'intheon-linedocumentation)object.

3. SetthePrintInfo('PrintInfoClass'intheon-linedocumentation)objectUseSmartPrint('UseSmartPrintProperty'intheon-linedocumentation)propertytotrue.

4. SettheSheetsshortcutobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplecodeprintsusingcustomizedprintrules,setupintheSmartPrintRulesCollection('SmartPrintRulesCollectionClass'intheon-linedocumentation)object.Inthisexample,ifthesheetdoesfitonapagebyshrinkingcolumnstothelongesttextstring,itprintswiththecolumnsshrunk.Ifitdoesnotfitwiththecolumnsshrunk,itkeepsthemshrunkandtriestoprintinlandscapeorientation.Ifitdoesnotfitwiththecolumnsshrunkandinlandscapeorientation,itkeepsthesesettingsandtriestoscalethesheet,startingat100%,thendecreasingby20%intervalsdownto40%.

C#// Create the print rules.FarPoint.Win.Spread.SmartPrintRulesCollection printrules = new FarPoint.Win.Spread.SmartPrintRulesCollection();printrules.Add(new FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None));printrules.Add(new FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None));printrules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All, 1.0f, .4f, .2f));// Create a PrintInfo object and set the properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.SmartPrintRules = printrules;

Spread Windows Forms Developer’s Guide 566

Copyright © GrapeCity, inc. All rights reserved.

Page 568: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

printset.UseSmartPrint = true;// Set the PrintInfo property for the first sheet.fpSpread1.Sheets[0].PrintInfo = printset;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create the print rules.Dim printrules As New FarPoint.Win.Spread.SmartPrintRulesCollection()printrules.Add(New FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None))printrules.Add(New FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None))printrules.Add(New FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All, 1.0F, 0.4F, 0.2F))' Create a PrintInfo object and set the properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.SmartPrintRules = printrulesprintset.UseSmartPrint = True' Set the PrintInfo property for the first sheet.FpSpread1.Sheets(0).PrintInfo = printset' Print the sheet.FpSpread1.PrintSheet(0)

UsingCode

1. CreateaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.2. IfyouwanttochangehowSmartPrintdetermineshowbesttoprintthesheet,createanewSmartPrintRulesCollection('SmartPrintRulesCollectionClass'intheon-linedocumentation)object.

3. SetthePrintInfo('PrintInfoClass'intheon-linedocumentation)objectUseSmartPrint('UseSmartPrintProperty'intheon-linedocumentation)propertytotrue.

4. SettheSheetView('SheetViewClass'intheon-linedocumentation)objectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplecodeprintsusingcustomizedprintrules,setupintheSmartPrintRulesCollection('SmartPrintRulesCollectionClass'intheon-linedocumentation)object.Inthisexample,ifthesheetdoesfitonapagebyshrinkingcolumnstothelongesttextstring,itprintswiththecolumnsshrunk.Ifitdoesnotfitwiththecolumnsshrunk,itkeepsthemshrunkandtriestoprintinlandscapeorientation.Ifitdoesnotfitwiththecolumnsshrunkandinlandscapeorientation,itkeepsthesesettingsandtriestoscalethesheet,startingat100%,thendecreasingby20%intervalsdownto40%.

C#// Create the print rules.FarPoint.Win.Spread.SmartPrintRulesCollection printrules = new FarPoint.Win.Spread.SmartPrintRulesCollection();printrules.Add(new FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None));printrules.Add(new FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None));printrules.Add(new FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All,

Spread Windows Forms Developer’s Guide 567

Copyright © GrapeCity, inc. All rights reserved.

Page 569: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1.0f, .4f, .2f));// Create a PrintInfo object and set the properties.FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();printset.SmartPrintRules = printrules;printset.UseSmartPrint = true;// Create a SheetView object and assign it to the first sheet.FarPoint.Win.Spread.SheetView SheetToPrint = new FarPoint.Win.Spread.SheetView();SheetToPrint.PrintInfo = printset;fpSpread1.Sheets[0] = SheetToPrint;// Print the sheet.fpSpread1.PrintSheet(0);

VB' Create the print rules.Dim printrules As New FarPoint.Win.Spread.SmartPrintRulesCollection()printrules.Add(New FarPoint.Win.Spread.BestFitColumnRule(FarPoint.Win.Spread.ResetOption.None))printrules.Add(New FarPoint.Win.Spread.LandscapeRule(FarPoint.Win.Spread.ResetOption.None))printrules.Add(New FarPoint.Win.Spread.ScaleRule(FarPoint.Win.Spread.ResetOption.All, 1.0F, 0.4F, 0.2F))' Create a PrintInfo object and set the properties.Dim printset As New FarPoint.Win.Spread.PrintInfo()printset.SmartPrintRules = printrulesprintset.UseSmartPrint = True' Create a SheetView object and assign it to the first sheet.Dim SheetToPrint As New FarPoint.Win.Spread.SheetView()SheetToPrint.PrintInfo = printsetFpSpread1.Sheets(0) = SheetToPrint' Print the sheet.FpSpread1.PrintSheet(0)

UsingtheSpreadDesigner

1. Selectthesheettabforthesheetforwhichyouwanttosetprintsettings.2. SelectthePageLayoutoption.3. ClicktheSmartPrinttab.4. SelecttheUseSmartPrintcheckboxifyouwanttoprintusingtheSmartPrintfeature.5. ThedefaultprintingrulesforSmartPrintarelistedinthetextbox.Ifyouwanttodoso,deletethoserulesbyclickingtheDeletebutton,thenusethecontrolsbelowthetextboxtoaddrulesandruleoptions.

6. ClickOKtoclosetheSheetPrintOptionsdialog.7. FromtheFilemenuchooseApplyandExittoapplyyourchangestothecomponentandexitSpreadDesigner.

Optimizing the Printing Using Size

Spreadprovidesawaytoautomaticallydeterminethebestwaytoprintyoursheet.Byusingrulesthatyoucanchoose,itcandecide,forexample,whetheritisbesttoprintyoursheetonlandscape-orportrait-orientedpages.SeeOptimizingthePrintingUsingRulesformoreinformation.

YoucansetBestFitCols('BestFitColsProperty'intheon-linedocumentation)andBestFitRows('BestFitRowsProperty'intheon-linedocumentation)properties.

Spread Windows Forms Developer’s Guide 568

Copyright © GrapeCity, inc. All rights reserved.

Page 570: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Displaying Dialogs for Users

Spreadprovidesawayforyoutodisplayaprintdialogandaprintpreviewdialogtoallowyourenduserstosetvariousoptionsforprinting.

DisplayingaPrintDialogfortheUserDisplayinganAbortMessagefortheUserProvidingaPreviewofthePrinting

Displaying a Print Dialog for the User

Spreadprovidesawayforyoutodisplayaprintdialogtoallowyourendusertosetvariousoptionsontheprinting.SettheShowPrintDialog('ShowPrintDialogProperty'intheon-linedocumentation)propertyofthePrintInfo('PrintInfoClass'intheon-linedocumentation)object.

Displaying an Abort Message for the User

Spreadprovidesawayforyoutodisplayanabortmessagetoallowyourenduserachancetocancelorcontinuewiththeprinting.

Formoreinformation,refertothefollowing:

PrintAbortEventArgs('PrintAbortEventArgsClass'intheon-linedocumentation)classPrintMessageBoxEventArgs('PrintMessageBoxEventArgsClass'intheon-linedocumentation)classPrintInfo('PrintInfoClass'intheon-linedocumentation)class,AbortMessagepropertyFpSpread('FpSpreadClass'intheon-linedocumentation)class,PrintMessageBoxevent,PrintAbortEvent,andPrintCancelledEvent

UsingCode

1. CreateandsettheAbortMessagepropertyforaPrintInfo('PrintInfoClass'intheon-linedocumentation)object.

2. SettheSheetViewobjectPrintInfo('PrintInfoProperty'intheon-linedocumentation)propertytothePrintInfo('PrintInfoClass'intheon-linedocumentation)objectyoujustcreated.

Example

Thisexamplebringsupthecanceldialog.

C#FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();pi.AbortMessage = "Do you want to cancel printing??";fpSpread1.ActiveSheet.PrintInfo = pi;fpSpread1.PrintSheet(0);

VBDim pi As New FarPoint.Win.Spread.PrintInfopi.AbortMessage = "Do you want to cancel printing??"FpSpread1.Sheets(0).PrintInfo = pi' Print the sheetFpSpread1.PrintSheet(0)

Spread Windows Forms Developer’s Guide 569

Copyright © GrapeCity, inc. All rights reserved.

Page 571: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Providing a Preview of the Printing

Youcanpreviewwhattheprintedpageswilllooklikeforasheetandyoucanallowyourendusertopreviewtheprinting.

YoucanusethePreview('PreviewProperty'intheon-linedocumentation)propertyinthePrintInfo('PrintInfoClass'intheon-linedocumentation)classtopreviewasheet.

UsetheOwnerPrintDraw('OwnerPrintDrawMethod'intheon-linedocumentation)methodoftheFpSpread('FpSpreadClass'intheon-linedocumentation)classtoprovideaprintpreviewdialogwithoptionsforpreviewingthepagesbeforeprinting.

Twoadditionalprintingfeaturesare:thePrintPreviewShowing('PrintPreviewShowingEvent'intheon-linedocumentation)eventandtheabilitytosetyourownprintpreviewdialogwiththeSetPrintPreview('SetPrintPreviewMethod'intheon-linedocumentation)method(andthecorrespondingGetPrintPreview('GetPrintPreviewMethod'intheon-linedocumentation)method),allmembersoftheFpSpread('FpSpreadClass'intheon-linedocumentation)class.ThePrintPreviewShowing('PrintPreviewShowingEvent'intheon-linedocumentation)eventfirespriortodisplayingthedialogandsuppliesyouwithboththePreviewDialogandthePreviewControlinitseventparameterlistsoyoucanmakeon-the-flymodificationstothePrintPreviewDialogandthePrintPreviewControlobjects.

Theprintpreviewdialogallowsyoutozoominandouttochangethescaleofwhatyouseeinthepreview.Youcansetthepreviewtodisplayone,two,four,orsixpagesofthespreadsheetperprintedpage.Youcanprintfromtheprintpreviewdialogorclosethedialogwhendone.

YoucanalsoprintandpreviewtheprintingwithintheSpreadDesigner.FormoreinformationonprintingandpreviewinginSpreadDesigner,refertoPrintingaSheetfromSpreadDesigner(on-linedocumentation)andPreviewingaSheetinSpreadDesigner(on-linedocumentation).

Spread Windows Forms Developer’s Guide 570

Copyright © GrapeCity, inc. All rights reserved.

Page 572: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Working with the Chart Control

ThefollowingtopicsexplainthebasicsoftheChartcontrolandhowtousethecontrol:

UnderstandingChartsCreatingCharts

Understanding Charts

Thefollowingtopicsexplainthevariouschartelementsandformattingoptions.

ChartUserInterfaceElementsChartObjectModelChartTypesandViewsPlotTypesPlotsandSeriesWallsAxisandOtherLinesFillEffectsChartLineStyleElevationandRotationLighting,Shapes,andBordersSize-Height,Width,andDepthLabelsLegends

Chart User Interface Elements

Hereisabriefsummaryoftheelementsofthecanvas(chartview)ofthechart.

Thisdiagramshowsthepartsofthecanvas:

Spread Windows Forms Developer’s Guide 571

Copyright © GrapeCity, inc. All rights reserved.

Page 573: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Therearethreemainelementsinthechart:

LabelArea('LabelAreaClass'intheon-linedocumentation)-Labelscontaintheplottitleandtheaxislabels.LegendArea('LegendAreaClass'intheon-linedocumentation)-Legendscontainidentifiersforeachoftheseriesofdata.PlotArea('PlotAreaClass'intheon-linedocumentation)-Theplotconsistsofdatadisplayedinoneofseveralplottypes.Formoreinformationaboutplottypes,refertoPlotTypes.Ontheplotareseveralgraphicalelementssuchasgridlines,tickmarks,stripes,andwalls.

Elementsarepositionedusingarelativelocation,where(0,0)istheupperleftcornerofthechartand(1,1)isthelowerrightcornerofthechartandarelativealignment,where(0,0)istheupperleftcorneroftheelementand(1,1)isthelowerrightcorneroftheelement.

Chart Object Model

Hereisabriefsummaryoftheobjectmodelofthechart.

Thisdiagramshowstheobjectmodel:

Spread Windows Forms Developer’s Guide 572

Copyright © GrapeCity, inc. All rights reserved.

Page 574: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Basicallythereisachartviewthatcanbeplatformspecific.Thischartviewisdependentonthechartmodel,whichisplatformindependent.

Themodelinturnismadeupoffourmajorobjects:

PlotAreaCollection('PlotAreaCollectionClass'intheon-linedocumentation)LegendAreaCollection('LegendAreaCollectionClass'intheon-linedocumentation)PlotAreaCollection('PlotAreaCollectionClass'intheon-linedocumentation)Fill('FillClass'intheon-linedocumentation)

Chart Types and Views

Thechartcontrolhasseveralcharttypesandeachtypehasadditionalviews.

Thefollowingisalistofthecharttypes:

AreaBar

Spread Windows Forms Developer’s Guide 573

Copyright © GrapeCity, inc. All rights reserved.

Page 575: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

BoxWhiskerBubbleColumnDoughnutFunnelHistogramLineParetoPiePolarRadarStockSunburstTreemapWaterfallXYXYZ

Thecolumntypehasthefollowingtypesofviews-ClusteredColumn,StackedColumn,100%StackedColumn,HighLowColumn,3DClusteredColumn,3DStackedColumn,100%3DStackedColumn,3DColumn,3DHighLowColumn,ClusteredCylinder,StackedCylinder,100%StackedCylinder,3DCylinder,HighLowColumnCylinder,ClusteredFullCone,StackedFullCone,100%StackedFullCone,3DFullCone,HighLowColumnFullCone,ClusteredFullPyramid,StackedFullPyramid,100%StackedFullPyramid,3DPyramid,andHighLowColumnPyramid.

Thelinetypehasthefollowingtypesofviews-Line,StackedLine,100%StackedLine,LinewithMarkers,StackedLinewithMarkers,100%StackedLinewithMarkers,and3DLine.

Thepietypehasthefollowingtypesofviews-2DPie,3DPie,2DExplodedPie,and3DExplodedPie.

Thebartypehasthefollowingtypesofviews-ClusteredBar,StackedBar,100%StackedBar,HighLowBar,3DClusteredBar,3DStackedBar,100%3DStackedBar,3DHighLowBar,ClusteredHorizontalCylinder,StackedHorizontalCylinder,100%StackedHorizontalCylinder,HighLowBarCylinder,ClusteredHorizontalFullCone,StackedHorizontalFullCone,100%StackedHorizontal,HighLowBarFullCone,ClusteredHorizontalFullPyramid,StackedHorizontalFullPyramid,100%StackedHorizontal,andHighLowBarPyramid.

Theareatypehasthefollowingtypesofviews-Area,StackedArea,100%StackedArea,HighLowArea,3DArea,3DStackedArea,100%3DStackedArea,and3DHighLowArea.

TheXYtypehasthefollowingtypesofviews-XYPoint,XYLine,andXYLinewithMarker.

Thebubbletypehasthefollowingtypesofviews-2DBubbleand3DBubble.

Thestocktypehasthefollowingtypesofviews-HighLowClose,OpenHighLowClose,andCandleStick.

TheXYZtypehasthefollowingtypesofviews-XYZLine,XYZLinewithMarker,XYZPoint,andSurface.

Thedoughnuttypehasthefollowingtypesofviews-DoughnutandExplodedDoughnut.

Theradartypehasthefollowingtypesofviews-RadarLine,RadarLinewithMarker,RadarPoint,andRadarArea.

Thepolartypehasthefollowingtypesofviews-PolarLine,PolarLinewithMarker,PolarPoint,andPolarArea.

Thereareseveralvisualelementstoachartsuchastheplot,legend,andlabelareas,theaxis,andtheseries.Thelabelareacontainsadditionalinformationaboutthechart.Thelegendcanbeusedtohelpendusersidentifydifferentchartelementssuchastheseries.Theaxisdisplaysthescaleforasingledimensionofaplotarea.Eachseriesisacollectionofdatapoints.Theplotareaistheareainwhichdatapointsaredrawn.

Spread Windows Forms Developer’s Guide 574

Copyright © GrapeCity, inc. All rights reserved.

Page 576: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Plot Types

Aplotareaistheareainwhichdatapoints(bars,points,lines,etc)aredrawn.Aplotareawillcontainacollectionofseries.Eachseriesisacollectionofdatapoints.Aplotareamayalsocontainanaxis(s)andwall(s).Theaxis(s)andwall(s)enhancethevisualappearanceoftheplotareaandareusuallypaintedjustoutsidetheplotarea.

Aplotareacanbeassignedananchorviewlocationandaviewsize.Theanchorviewlocationisspecifiedinnormalizedunits((0,0)=leftuppercornerofchartview,(1,1)=rightlowercornerofchartview).Theviewsizeoftheplotareaisspecifiedinnormalizedunits((0,0)=zerosize,(1,1)=fullsizeofchartview).Thelefttopcorneroftheplotareaisalignedwiththeanchorlocation.

Aplotareacanbeassignedamodelsizeusingwidth,height,anddepthproperties.Thepropertiesusemodelunits.

Thereareseveralplottypes:Y,XY,XYZ,Pie,Polar,Radar,Data,Sunburst,andTreemap.

YPlotTypesXYPlotTypesXYZPlotTypesPiePlotTypesPolarPlotTypesRadarPlotTypesDataPlotTypes

Y Plot Types

Spread Windows Forms Developer’s Guide 575

Copyright © GrapeCity, inc. All rights reserved.

Page 577: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheYplotareacontainsseriesthathavevaluesinonedimension.

Whenvisualizedin2D,aYplotareatakestheformofarectanglewiththex-axisrepresentingcategoriesandthey-axisrepresentingvalues.

Whenvisualizedin3D,aYplotareatakestheformofacubewiththex-axisrepresentingcategories,they-axisrepresentingvalues,andthez-axis(depth)representingseries.

AYplotareacanbeorientedverticallyorhorizontally.Whenorientedvertically,thex-axisishorizontalandthey-axisisvertical.Whenorientedhorizontally,thex-axisisverticalandthey-axisishorizontal.

YoucanhaveanyofthesetypesofYplots.

AreaChartsBarChartsBoxWhiskerCharts(on-linedocumentation)FunnelCharts(on-linedocumentation)HistogramCharts(on-linedocumentation)LineChartsMarketData(High-Low)ChartsParetoCharts(on-linedocumentation)PointChartsStripeChartsWaterfallCharts(on-linedocumentation)

Area Charts

Theareachartcanbeabasicone-dimensionalCartesianplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 576

Copyright © GrapeCity, inc. All rights reserved.

Page 578: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanhaveanyofthesetypesofareacharts,whichrepresentdifferentwaysofdisplayingtheseriesdata.

(standard)AreaStackedAreaStacked100%(normalized)Area

AreaCharts

Eachpointinanareaseriescontainsasingledatavalue.Thedatavalueisvisualizedasapointonanarea.

Anareaseriescanhaveaborder,filleffect,depth,oranoriginforthearea.Youcanalsospecifywhethertheareaisjaggedorsmooth,andwhetherdroplinesaredisplayed.Assigningnullfortheborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetothefloorgridcell(0=nodepth,1=depthoffloorgridcell).Theorigincanbemarkedforautogenerationbythechartview,inwhichcasetheassignedoriginisignored.

Eachpointinanareaseriescanbeassignedaborderandafilleffectforthearea.

StackedAreaCharts

Thestackedareachartshowsthepointsverticallystacked:

Astackedareaseriesisacompositeseriesthatgroupstogethertwoormoreareaseries.

Astackedareaseriescanbeassignedaborder,filleffect,ordepthfortheareas.Youcanalsospecifywhethertheareaisjaggedorsmoothandwhetherdroplinesaredisplayed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Eachareaseriesinastackedareaseriescanbeassignedaborderandafilleffectforthearea.

Eachpointinanareaseriesinastackedareaserieshasasingledatavalue.Thedatavalueisvisualizedasapointonanarea.Eachpointinanareaseriesinastackedareaseriescanbeassignedaborderandafilleffectforthearea.

Stacked100%AreaCharts

Thestacked100%areachartshowsthepointsverticallystackedandspreadallthewaytothetop(100%)butspreadproportionately;otherwise,itissimilartoastackedareachart:

Spread Windows Forms Developer’s Guide 577

Copyright © GrapeCity, inc. All rights reserved.

Page 579: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FormoreinformationontheareaseriesobjectintheAPI,refertotheAreaSeries('AreaSeriesClass'intheon-linedocumentation)class.

Bar Charts

Thebarchartisabasicone-dimensionalCartesianplotsuchastheoneshowninthisfigure.

Youcanhaveanyofthesetypesofbarcharts,whichrepresentdifferentwaysofdisplayingtheseriesdata.

(standard)BarMultipleBarClusterBarStackedBarStacked100%(normalized)Bar

BarCharts

Eachdatapointcontainsasinglevalue;howthebarforthatpointisdisplayedcanbecustomized.Barbordersandbarfilleffectscanbeassignedfortheseriesorforapointintheserieswithnull(NothinginVB)indicatingunassigned.Barwidthandbardeptharemeasuredrelativetothefloorgridcell(witharangeof0to1).Barorigincanbeautomaticallygeneratedormanuallyassigned.

YoucanalsodisplayanyofthebarchartsascolumnchartsbysettingtheVerticalpropertyintheYPlotArea('YPlotAreaClass'intheon-linedocumentation)classtoFalse.

ClusterBarCharts

Theclusterbarshowsthebarsalongsideeachotherhorizontally,clusteredbyseries:

Spread Windows Forms Developer’s Guide 578

Copyright © GrapeCity, inc. All rights reserved.

Page 580: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Aclusterbarseriesisacompositeseriesthatgroupstogethertwoormorebarseries.Aclusterbarseriescanbeassignedaborder,filleffect,width,depth,andanoriginforthebarsaswellasawidthforthegroup.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Groupwidthismeasuredrelativetothefloorgridcell(0=nowidth,1=widthoffloorgridcell).Barwidthismeasuredrelativetothewidthreservedforthegroupdividedbythenumberofseriesinthegroup(0=nowidth,1=widthreservedforthegroupdividedbythenumberofseriesinthegroup).Bardepthismeasuredrelativetothefloorgridcell(0=nodepth,1=depthoffloorgridcell).Theorigincanbemarkedforautogenerationbythechartview,inwhichcasetheassignedoriginisignored.

Eachbarseriesintheclusterbarseriescanbeassignedaborderandafilleffectforthebars.

Eachpointinabarseriesintheclusterbarserieshasasingledatavalue.Eachpointisvisualizedasabar.Allthebarsforagivencategoryareplacedsidebyside.Eachpointinabarseriesinaclusterbarseriescanhaveaborderandafilleffectforthebar.

StackedBarCharts

Thestackedbarshowsthebarsverticallystacked:

Spread Windows Forms Developer’s Guide 579

Copyright © GrapeCity, inc. All rights reserved.

Page 581: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Astackedbarseriesisacompositeseriesthatgroupstogethertwoormorebarseries.Astackedbarseriescanbeassignedaborder,filleffect,width,andadepthforthebars.Youcanalsospecifywhetherthegroupshouldbedisplayed100%stacked.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Widthanddeptharemeasuredrelativetothefloorgridcell(0=nowidthordepth,1=widthordepthoffloorgridcell).

Eachbarseriesinthestackedbarseriescanbeassignedaborderandafilleffectforthebars.

Eachpointinabarseriesinastackedbarserieshasasingledatavalue.Eachpointisvisualizedasabar.Allthebarsinagivencategoryarestackedvertically.Eachpointinabarseriesinastackedbarseriescanhaveaborderandafilleffectforthebar.

Stacked100%BarCharts

Thestacked100%barchartshowsthebarsverticallystackedandspreadallthewaytothetop(100%)butspreadproportionately;otherwise,itissimilartoastackedbarchart:

Spread Windows Forms Developer’s Guide 580

Copyright © GrapeCity, inc. All rights reserved.

Page 582: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FormoreinformationonthebarseriesobjectintheAPI,refertotheBarSeries('BarSeriesClass'intheon-linedocumentation)class.

Line Charts

Thelinechartcanbeabasicone-dimensionalCartesianplotsuchastheoneshowninthisfigure.

Youcanhaveanyofthesetypesoflinecharts,whichrepresentdifferentwaysofdisplayingtheseriesdata.

(standard)LineStackedLineStacked100%(normalized)Line

LineCharts

Eachpointinalineseriescontainsasingledatavalue.Thedatavaluesarevisualizedaspointsonaline.

Alineseriescanbeassignedaborder,filleffect,ordepthfortheline.Thelinecanalsobejaggedorsmoothordisplaydroplines.Assigningnullfortheborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetothefloorgridcell(0=nodepth,1=depthoffloorgridcell).

Spread Windows Forms Developer’s Guide 581

Copyright © GrapeCity, inc. All rights reserved.

Page 583: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointinalineseriescanhaveaborderorafilleffectfortheline.

StackedLineCharts

Thestackedlinechartshowsthepointsverticallystacked:

Astackedlineseriesisacompositeseriesthatgroupstogethertwoormorelineseries.Astackedlineseriescanhaveaborder,filleffect,ordepthforthelines.Youcanalsospecifywhetherthelineisjaggedorsmoothandwhetherdroplinesaredisplayed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetothefloorgridcell(0=nodepth,1=depthoffloorgridcell).

Eachlineseriesinastackedlineseriescanbeassignedaborderandafilleffectfortheline.

Eachpointinalineseriesinastackedlineserieshasasingledatavalue.Thedatavalueisvisualizedasapointonaline.Eachpointinalineseriesinastackedlineseriescanbeassignedaborderandafilleffectfortheline.

Stacked100%LineCharts

Thestacked100%linechartshowsthepointsverticallystackedandspreadallthewaytothetop(100%)butspreadproportionately;otherwise,itissimilartoastackedlinechart:

FormoreinformationonthelineseriesobjectintheAPI,refertotheLineSeries('LineSeriesClass'intheon-linedocumentation)class.

Market Data (High-Low) Charts

Themarketdata(high-low)chartsareanotherversionoftheone-dimensionalCartesianplot(Yplot)specificallydesignedfordisplayingmarketdataoftenwithhighandlowvaluesaswellasmarketopenandmarketclosevalues.Forexample:

Spread Windows Forms Developer’s Guide 582

Copyright © GrapeCity, inc. All rights reserved.

Page 584: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thenormalhigh-lowseriesaredisplayedasverticallineswiththehighvaluebeingtheverticallyhighestpointonthelineandthelowvaluebeingthelowestpointontheline.Theopeningmarketvalueisthesmallhorizontaltickontheleftofthelineandtheclosingvalueisthesmallhorizontaltickontherightside.

Ahigh-lowbarseriescanhaveaborder,filleffect,width,anddepthforthebars.Eachpointcanbeassignedaborderandafilleffectforthebar.

Anopen-high-low-closeseriescanbeassignedalineforupordownpoints,andawidth.Thewidthismeasuredrelativetothefloorgridcell(0=nodepth,1=widthtoedgeofgridcell).

Eachpointinanopen-high-low-closeseriescontainsfourdatavalues:open,high,low,close.Eachpointisvisualizedasalineextendingfromthelowvaluetothehighvaluewithsmallermarkersattheopenandclosevalues.

CandlestickCharts

Thecandlestickhigh-lowseriesaredisplayedasbarswiththehighvaluebeingtheverticallyhighestpointonthebarandthelowvaluebeingthelowestpointonthebar.Ifitissolid,thentheopeningvaluewaslower;ifitishollow,theopeningvaluewashigher:

Spread Windows Forms Developer’s Guide 583

Copyright © GrapeCity, inc. All rights reserved.

Page 585: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Acandlestickseriescanbeassignedaborderandafilleffectforupordownpoints.Youcanalsosetthewidthanddepthforthebars.

Eachpointinacandlestickseriescontainsfourvalues:open,high,low,andclose.Eachpointisvisualizedasalineextendingfromthelowvaluetothehighvalueandabarextendingfromtheopenvaluetotheclosevalue.

Eachpointcanbeassignedaborderforupanddownpoints.Youcanalsosetafilleffectforupanddownpoints.

FormoreinformationontheobjectsintheAPI,refertothese:

HighLowAreaSeries('HighLowAreaSeriesClass'intheon-linedocumentation)HighLowBarSeries('HighLowBarSeriesClass'intheon-linedocumentation)HighLowCloseSeries('HighLowCloseSeriesClass'intheon-linedocumentation)

Point Charts

Thepointchartcanbeabasicone-dimensionalCartesianplotsuchastheoneshowninthisfigure:

Youcanhaveanyofthesetypesofpointcharts,whichrepresentdifferentwaysofdisplayingtheseriesdata.

(standard)PointStackedPointStacked100%(normalized)Point

PointCharts

Apointmarkerisusedtovisualizeeachdatavalue.Eachpointinapointseriescontainsasingledatavalue.

Spread Windows Forms Developer’s Guide 584

Copyright © GrapeCity, inc. All rights reserved.

Page 586: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Apointseriescanbeassignedaborder,filleffect,shape,size,anddepthforthepointmarkers.Assigninganullfortheborderorfilleffectindicatesthatthepropertyisunset.Sizeismeasuredinmodelunits.Depthismeasuredrelativetothefloorofthegridcell(0=nowidth,1=widthoffloorgridcell).

Eachpointinapointseriescanalsobeassignedaborderandafilleffectforthepointmarker.

StackedPointCharts

Thestackedpointchartshowsthepointsverticallystacked:

Astackedpointseriesisacompositeseriesthatgroupstogethertwoormorepointseries.

Astackedpointseriescanhaveaborder,filleffect,size,ordepthforthepointmarkers.Youcanalsospecifywhetherthegroupshouldbedisplayedas100%stacked.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Sizeismeasuredinmodelunits.Depthismeasuredrelativetothedepthoffloorgridcell(0=nodepth,1=depthoffloorgridcell).

Eachpointseriesinastackedpointseriescanbeassignedaborderandfilleffectforpointmakers.Eachpointinapointserieshasasingledatavalue.Thedatavalueisvisualizedasapointmarker.

Eachpointinapointseriesinastackedpointseriescanbeassignedaborderandafilleffectforthepointmarker.

Stacked100%PointCharts

Thestacked100%pointchartshowsthepointsverticallystackedandspreadallthewaytothetop(100%)butspreadproportionately;otherwise,itissimilartoastackedpointchart:

FormoreinformationonthepointseriesobjectintheAPI,refertothePointSeries('PointSeriesClass'intheon-linedocumentation)class.

Stripe Charts

Spread Windows Forms Developer’s Guide 585

Copyright © GrapeCity, inc. All rights reserved.

Page 587: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Stripescanbeusedinabasicone-dimensionalCartesianplotsuchastheoneshowninthisfigure:

Youcanspecifyastartandendvalueforthestripeonthechartaxis.Youcanalsospecifyafilltypeandcolorforthestripe.Astripecanbeaddedtoachartwiththeaxispropertiesintheappropriateplotareaclass.

FormoreinformationonthestripeobjectintheAPI,refertotheStripe('StripeClass'intheon-linedocumentation)class.

FormoreinformationonthevalueaxisseriesobjectintheAPI,refertotheValueAxisclass.

XY Plot Types

TheXYplotareacontainsseriesthathavevaluesintwodimensions.Whenvisualizedin2D,anXYplotareatakestheformofarectanglewithahorizontalx-axisrepresentingvaluesandaverticaly-axisrepresentingvalues.Whenvisualizedin3D,theXYplotareatakestheformofacubewithahorizontalx-axisrepresentingvalues,averticaly-axisrepresentingvalues,andadepthz-axisrepresentingseries.

Whenaplotareahasmultiplex-axesormultipley-axes,aseriescanbeassignedtoaspecificaxisusingtheaxis'sID.

YoucanhaveanyofthesetypesofXYplots.

XYBubbleChartsXYLineChartsXYPointChartsXYStripeCharts

XY Bubble Charts

ThebubblechartcanbeanXYplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 586

Copyright © GrapeCity, inc. All rights reserved.

Page 588: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointcontainstwovalues:valueandsize.

Bubblebordersandfilleffectscanbeassignedfortheseriesorforapointintheseries.Null(NothinginVB)indicatesthatthepropertyisnotset.Bubblesizeismeasuredrelativetotheplotareawidth(witharangeof0to1).Bubbledepthismeasuredrelativetothefloorgrid(witharangeof0to1).

FormoreinformationonthebubbleseriesobjectintheAPI,refertotheXYBubbleSeries('XYBubbleSeriesClass'intheon-linedocumentation)class.

XY Line Charts

ThelinechartcanbeanXYplotsuchastheoneshowninthisfigure.

AnXZlineseriescanhaveaborder,filleffect,anddepthfortheline.Youcanalsospecifywhetherthelineisjaggedorsmoothandwhetherdroplinesaredisplayed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetothefloorgridcell(0=nodepth,1=depthoffloorgridcell).

FormoreinformationonthelineseriesobjectintheAPI,refertotheXYLineSeries('XYLineSeriesClass'intheon-linedocumentation)class.

XY Point Charts

ThepointchartcanbeanXYplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 587

Copyright © GrapeCity, inc. All rights reserved.

Page 589: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Apointmarkerisusedtovisualizeeachdatavalue.Eachpointinapointseriescontainsasingledatavalue.

AnXYpointseriescanhaveaborder,filleffect,shape,size,anddepthforthepointmarkers.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Sizeismeasuredinmodelunits.Depthismeasuredrelativetothefloorgridcell(0=nowidth,1=widthoffloorgridcell).

EachpointinanXYpointseriescontainstwodatavalues:xandy.Eachpointisvisualizedasapointmarker.Eachpointcanbeassignedaborderandafilleffectforthepointmarker.

FormoreinformationonthepointseriesobjectintheAPI,refertothePointSeries('PointSeriesClass'intheon-linedocumentation)class.

XY Stripe Charts

ThestripechartcanbeanXYplotsuchastheoneshowninthisfigure.

Youcanspecifyastartandendvalueforthestripeonthechartaxis.Youcanalsospecifyafilltypeandcolorforthestripe.Astripecanbeaddedtoachartwiththeaxispropertiesintheappropriateplotareaclass.

FormoreinformationonthestripeobjectintheAPI,refertotheStripe('StripeClass'intheon-linedocumentation)class.

XYZ Plot Types

TheXYZplotareacontainsseriesthathavevaluesinthreedimensions.Whenvisualizedin2D,theXYZplotareatakestheformofarectanglewithahorizontalx-axisrepresentingvaluesandaverticaly-axisrepresentingvalues.Whenvisualizedin3D,theXYZplotareatakestheformofacubewithahorizontalx-axisrepresentingvalues,averticaly-axisrepresentingvalues,andadepthz-axisrepresentingvalues.

TheElevationandRotationpropertiesintheplotareaclasscanbeusedtomakethez-axisvisible.

Spread Windows Forms Developer’s Guide 588

Copyright © GrapeCity, inc. All rights reserved.

Page 590: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

IfanXYZplotareahasmultiplex,y,orz-axesthentheseriescanbeassignedtoaspecificaxisusingtheaxis'sID.TherearethreesubtypesofXYZseries:XYZpoint,XYZline,andXYZsurface.

YoucanhaveanyofthesetypesofXYZplots.

XYZPointChartsXYZLineChartsXYZSurfaceChartsXYZStripeCharts

FordetailsontheAPI,seetheXYZPlotArea('XYZPlotAreaClass'intheon-linedocumentation)class.

XYZ Point Charts

ThepointchartcanbeanXYZplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 589

Copyright © GrapeCity, inc. All rights reserved.

Page 591: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

EachpointinanXYZpointserieshasthreedatavalues:x,y,andz.Eachpointisvisualizedaspointmarker.

ThepointmarkersinanXYZseriesortheseriescanbeassignedaborder,filleffect,shape,andasize.Settingsatthepointlevelhaveprecedence.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Sizeismeasuredinmodelunits.

FormoreinformationonthepointseriesobjectintheAPI,refertotheXYZPointSeries('XYZPointSeriesClass'intheon-linedocumentation)class.

XYZ Line Charts

ThelinechartcanbeanXYZplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 590

Copyright © GrapeCity, inc. All rights reserved.

Page 592: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

EachpointinanXYZlineserieshasthreedatavalues:x,y,andz.Eachpointisvisualizedasapointonaline.

AnXYZlineseriesoreachpointintheseriescanbeassignedaborderorafilleffectfortheline.Youcanalsospecifywhetherthelineisjaggedorsmoothandwhetherdroplinesaredisplayed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.

FormoreinformationonthelineseriesobjectintheAPI,refertotheXYZLineSeries('XYZLineSeriesClass'intheon-linedocumentation)class.

XYZ Surface Charts

ThesurfacechartcanbeanXYZplotsuchastheoneshowninthisfigure.

EachpointinaXYZserieshasthreedatavalues:x,y,andz.Eachpointisvisualizedasapointonasurface.

AnXYZsurfaceseriescanbeassignedafilleffectforthesurface.Assigningnullforthefilleffectindicatesthatthe

Spread Windows Forms Developer’s Guide 591

Copyright © GrapeCity, inc. All rights reserved.

Page 593: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

propertyisunset.

FormoreinformationonthesurfaceseriesobjectintheAPI,refertotheXYZSurfaceSeries('XYZSurfaceSeriesClass'intheon-linedocumentation)class.

XYZ Stripe Charts

ThestripechartcanbeanXYZplotsuchastheoneshowninthisfigure.

Youcanspecifyastartandendvalueforthestripeonthechartaxis.Youcanalsospecifyafilltypeandcolorforthestripe.Astripecanbeaddedtoachartwiththeaxispropertiesintheappropriateplotareaclass.

FormoreinformationonthestripeobjectintheAPI,refertotheStripe('StripeClass'intheon-linedocumentation)class.

Pie Plot Types

Apieplotareacontainsseriesthathavevaluesinonedimension.Whenvisualizedintwodimensions,apieplotareatakestheformofacircle(orpartialcircle).Whenvisualizedinthreedimensions,apieplotareatakestheformofadisk(orpartialdisk).Thefollowingimagedisplaysathreedimensionalchart:

YoucanhaveanyofthesetypesofPieplots.

DoughnutChartsPieCharts

FordetailsontheAPI,seethePiePlotArea('PiePlotAreaClass'intheon-linedocumentation)class.

Doughnut Charts

Spread Windows Forms Developer’s Guide 592

Copyright © GrapeCity, inc. All rights reserved.

Page 594: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thedoughnutchartcanbeapieplotsuchastheoneshowninthisfigure.

Eachpointinapieserieshasasingledatavalue.Eachpointisvisualizedasapieslice.

TheHoleSizepropertyisusedtocreatethedoughnutchart.IfthispropertyisnotsetwhenusingthePieSeries('PieSeriesClass'intheon-linedocumentation)class,thechartwouldbeapiechart.

Apieseriescanbeassignedaborderandfilleffectforthepieslices.Assigningnullforaborderorfilleffectindicatesthatthepropertyisnull.

Eachpointcanbeassignedaborder,filleffect,andadetachmentdistanceforthepieslice.Detachmentdistanceismeasuredrelativetopieradius(0=nodetachment,1=detachmentislengthofpieradius).Thedetachmentdistance(PieDetachmentsproperty)isusedtocreateanexplodeddoughnutchart.

FormoreinformationonthepieseriesobjectintheAPI,refertothePieSeries('PieSeriesClass'intheon-linedocumentation)class.

Pie Charts

Thepiechartcanbeapieplotsuchastheoneshowninthisfigure.

Eachpointinapieserieshasasingledatavalue.Eachpointisvisualizedasapieslice.

Apieseriescanbeassignedaborderandfilleffectforthepieslices.Assigningnullforaborderorfilleffectindicatesthatthepropertyisnull.

Eachpointcanbeassignedaborder,filleffect,andadetachmentdistanceforthepieslice.Detachmentdistanceismeasuredrelativetopieradius(0=nodetachment,1=detachmentislengthofpieradius).Thedetachmentdistance(PieDetachmentsproperty)isusedtocreateanexplodedpiechart.

FormoreinformationonthepieseriesobjectintheAPI,refertothePieSeries('PieSeriesClass'intheon-linedocumentation)class.

Polar Plot Types

Spread Windows Forms Developer’s Guide 593

Copyright © GrapeCity, inc. All rights reserved.

Page 595: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Apolarplotareacontainsseriesthathavevaluesintwodimensions(angleandradius).Whenvisualizedintwodimensions,apolarplotareatakestheformofacirclewithacircularx-axisrepresentinganglevaluesandaradialy-axisrepresentingradiusvalues.Whenvisualizedinthreedimensions,apolarplotareatakestheformofadiskwithacircularx-axisrepresentingananglevalueandaradialy-axisrepresentingaradiusvalue.

Apolarseriesisdisplayedinapolarplotarea.Pointshavevalue(s)intwodimensions:x(angle)andy(radius).Ifapolarplotareahasmultipley-axesthenaseriescanbeassignedtoaspecificaxisusingtheaxis'sID.Thereareseveralsubtypesofpolarseries:polarpoint,polarline,polararea,andpolarstripe.

ThefollowingimageshowsathreedimensionalpolarpointchartthatwascreatedbyusingtheElevation,Rotation,andViewTypeproperties.TheDepthpropertyintheplotareaclasswasusedtoadddepthtothepointmarkers.

YoucanhaveanyofthesetypesofPolarplots.

PolarPointChartsPolarLineChartsPolarAreaChartsPolarStripeCharts

FordetailsontheAPI,seethePolarPlotArea('PolarPlotAreaClass'intheon-linedocumentation)class.

Polar Point Charts

Thepointchartcanbeapolarplotsuchastheoneshowninthefigure:

Spread Windows Forms Developer’s Guide 594

Copyright © GrapeCity, inc. All rights reserved.

Page 596: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointhastwodatavalues:x(angle)andy(radius).Eachpointisvisualizedasapointmarker.

Thepointmarkersinthepolarpointseriesortheseriescanbeassignedaborder,filleffect,shape,size,andadepth.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Thesizeofthepointmarkerismeasuredinmodelunits.Thedepthofthepointmarkerismeasuredrelativetoplotareadepth(0=nodepth,1=fulldepthofplotarea).

FormoreinformationonthepointseriesobjectintheAPI,refertothePolarPointSeries('PolarPointSeriesClass'intheon-linedocumentation)class.

Polar Line Charts

Thelinechartcanbeapolarplotsuchastheoneshowninthefollowingfigure:

Spread Windows Forms Developer’s Guide 595

Copyright © GrapeCity, inc. All rights reserved.

Page 597: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointhastwodatavalues:x(angle)andy(radius).Eachpointisvisualizedasapointonaline.

Apolarlineseriesoreachpointintheseriescanbeassignedaborder,filleffect,andadepthfortheline.Youcanalsospecifywhetherthelineisclosed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetoplotareadepth(0=nodepth,1=fulldepthofplotarea).

FormoreinformationonthelineseriesobjectintheAPI,refertothePolarLineSeries('PolarLineSeriesClass'intheon-linedocumentation)class.

Polar Area Charts

Theareachartcanbeapolarplotsuchastheoneshowninthefollowingfigure:

Spread Windows Forms Developer’s Guide 596

Copyright © GrapeCity, inc. All rights reserved.

Page 598: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointhastwodatavalues:x(angle)andy(radius).Eachpointisvisualizedasapointonanarea.

Apolarareaseriescanbeassignedaborder,filleffect,andadepthforthearea.Eachpointcanbeassignedaborderandafilleffectforthearea.Youcanalsospecifywhethertheareaisclosed.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetotheplotareadepth(0=nodepth,1=fulldepthofplotarea).

FormoreinformationontheareaseriesobjectintheAPI,refertothePolarAreaSeries('PolarAreaSeriesClass'intheon-linedocumentation)class.

Polar Stripe Charts

Thestripechartcanbeapolarplotsuchastheoneshowninthisfigure.

Youcanspecifyastartandendvalueforthestripeonthechartaxis.Youcanalsospecifyafilltypeandcolorforthestripe.Astripecanbeaddedtoachartwiththeaxispropertiesintheappropriateplotareaclass.

FormoreinformationonthestripeobjectintheAPI,refertotheStripe('StripeClass'intheon-linedocumentation)class.

Spread Windows Forms Developer’s Guide 597

Copyright © GrapeCity, inc. All rights reserved.

Page 599: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Radar Plot Types

Aradarplotareacontainsseriesthathavevaluesinonedimension.Whenvisualizedintwodimensions,aradarplotareatakestheformofann-sidedpolygonwithacircularx-axisrepresentingcategoriesandaradialy-axisrepresentingvalues.Whenvisualizedinthreedimensions,aradarplotareatakestheformofann-sideddiskwithacircularx-axisrepresentingcategoriesandaradialy-axisrepresentingvalues.

Aradarseriesisdisplayedinaradarplotarea.Eachpointhasvalue(s)inonedimension:y(radius).Ifaplotareahasmultipley-axesthenaseriescanbeassignedtoaspecificaxisusingtheaxis'sID.Thereareseveralsubtypesofradarseries:radarpoint,radarline,radararea,andradarstripe.

YoucanhaveanyofthesetypesofRadarplots.

RadarPointChartsRadarLineChartsRadarAreaChartsRadarStripeCharts

FordetailsontheAPI,seetheRadarPlotArea('RadarPlotAreaClass'intheon-linedocumentation)class.

Radar Point Charts

Thepointchartcanbearadarplotsuchastheoneshowninthisfigure:

Spread Windows Forms Developer’s Guide 598

Copyright © GrapeCity, inc. All rights reserved.

Page 600: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointhasasingledatavalue:y.Eachpointisvisualizedasapointmarker.

Thepointmarkersinaradarpointseriesortheseriescanbeassignedaborder,filleffect,shape,size,andadepth.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Sizeismeasuredinmodelunits.Depthismeasuredrelativetotheplotareadepth(0=nodepth,1=depthofplotarea).

FormoreinformationonthepointseriesobjectintheAPI,refertotheRadarPointSeries('RadarPointSeriesClass'intheon-linedocumentation)class.

Radar Line Charts

Thelinechartcanbearadarplotsuchastheoneshowninthisfigure:

Spread Windows Forms Developer’s Guide 599

Copyright © GrapeCity, inc. All rights reserved.

Page 601: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Eachpointhasasingledatavalue:y.Eachpointisvisualizedaspointonaline.

Aradarlineseriescanbeassignedaborder,filleffect,andadepthfortheline.Eachpointcanbeassignedaborderandafilleffectfortheline.Assigningnullforaborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetotheplotareadepth(0=nodepth,1=depthofplotarea).

FormoreinformationonthelineseriesobjectintheAPI,refertotheRadarLineSeries('RadarLineSeriesClass'intheon-linedocumentation)class.

Radar Area Charts

Theareachartcanbearadarplotsuchastheoneshowninthisfigure:

Eachpointhasasingledatavalue:y.Eachpointisvisualizedasapointonanarea.

Aradarareaseriescanbeassignedaborder,filleffect,andadepthforthearea.Eachpointcanbeassignedaborderandafilleffectforthearea.Assigningnullfortheborderorfilleffectindicatesthatthepropertyisunset.Depthismeasuredrelativetotheplotareadepth(0=nodepth,1=depthofplotarea).

FormoreinformationonthelineseriesobjectintheAPI,refertotheRadarAreaSeries('RadarAreaSeriesClass'intheon-linedocumentation)class.

Radar Stripe Charts

Thestripechartcanbearadarplotsuchastheoneshowninthisfigure.

Spread Windows Forms Developer’s Guide 600

Copyright © GrapeCity, inc. All rights reserved.

Page 602: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanspecifyastartandendvalueforthestripeonthechartaxis.Youcanalsospecifyafilltypeandcolorforthestripe.Astripecanbeaddedtoachartwiththeaxispropertiesintheappropriateplotareaclass.

FormoreinformationonthestripeobjectintheAPI,refertotheStripe('StripeClass'intheon-linedocumentation)class.

Data Plot Types

Datachartsarechartsthatcanbebound.Anyseriesinanyoftheplottypescanbeboundtoadatasourceusingthedatasourcepropertyintheseriesclass.Youcanuseanyofthesetypesofdatasources.

ArrayListTable

Thearraydatachartcanbeaone-dimensionalplotsuchastheoneshowninthisfigure.Thisarraychartshowsthebarsalongsideeachothervertically.

Thefollowingisanexampleofabarchartboundtoalistdatasource:

Spread Windows Forms Developer’s Guide 601

Copyright © GrapeCity, inc. All rights reserved.

Page 603: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thefollowingisanexampleofabarchartboundtoatabledatasource:

Plots and Series

Aplotareaistheareainwhichdatapoints(bars,points,lines,etc)aredrawn.Aplotareawillcontainacollectionofseries.Eachseriesisacollectionofdatapoints.Aplotareamayalsocontainanaxis(s)andwall(s).Theaxis(s)andwall(s)enhancethevisualappearanceoftheplotareaandareusuallypaintedjustoutsidetheplotarea.

Aplotareacanbeassignedananchorviewlocationandaviewsize.Theanchorviewlocationisspecifiedinnormalizedunits((0,0)=leftuppercornerofchartview,(1,1)=rightlowercornerofchartview).Theviewsizeoftheplotareaisspecifiedinnormalizedunits((0,0)=zerosize,(1,1)=fullsizeofchartview).Thelefttopcorneroftheplotareaisalignedwiththeanchorlocation.

Aplotareacanbeassignedamodelsizeusingwidth,height,anddepthproperties.Thepropertiesusemodelunits.

Thereareseveralsubtypesofplotareas:Y,XY,XYZ,Pie,Polar,Radar,Data,Sunburst,andTreemap.

Aseriesisacollectionofdatapointsthataredisplayedintheplotarea.Area,Line,andPointseriescanhavedroplines.Droplinesextendfromthedatapointdowntotheseriesoriginorcategoryaxis.Thiscanbeusedtohighlightthexvalueofthepoint.Thereareseveralsubtypesofseriessuchas:Y,XY,XYZ,Pie,Polar,andRadar.Thesesubtypesofseriescorrespondtothesubtypesofplotareas.

Whenacharthasmultiplelegends,aseriescanbeassignedtoaspecificlegendusingthelegend'sID.Manyoftheserieshaveproperties(e.g.borderorfilleffect)thatcanbeassignedtobothaseriesandapoint.Ifthepropertyissetforboththeseriesandthepointthenthepointsettingoverridestheseriessetting.Ifthepropertyisunsetforboththeseriesandthepointthenthechartviewwillprovideadefaultsetting.

Seethefollowingclassesformoreinformation:

AreaSeries('AreaSeriesClass'intheon-linedocumentation)BarSeries('BarSeriesClass'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 602

Copyright © GrapeCity, inc. All rights reserved.

Page 604: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

BoxWhiskerSeries('BoxWhiskerSeriesClass'intheon-linedocumentation)FunnelSeries('FunnelSeriesClass'intheon-linedocumentation)HighLowAreaSeries('HighLowAreaSeriesClass'intheon-linedocumentation)HighLowBarSeries('HighLowBarSeriesClass'intheon-linedocumentation)HighLowCloseSeries('HighLowCloseSeriesClass'intheon-linedocumentation)HistogramSeries('HistogramSeriesClass'intheon-linedocumentation)LineSeries('LineSeriesClass'intheon-linedocumentation)ParetoSeries('ParetoSeriesClass'intheon-linedocumentation)PieSeries('PieSeriesClass'intheon-linedocumentation)PolarSeries('PolarSeriesClass'intheon-linedocumentation)PointSeries('PointSeriesClass'intheon-linedocumentation)RadarSeries('RadarSeriesClass'intheon-linedocumentation)SunburstSeries('SunburstSeriesClass'intheon-linedocumentation)TreemapSeries('TreemapSeriesClass'intheon-linedocumentation)WaterfallSeries('WaterfallSeriesClass'intheon-linedocumentation)XYSeriesXYZSeries('XYZSeriesClass'intheon-linedocumentation)YSeries('YSeriesClass'intheon-linedocumentation)

UsingCode

Thefollowingexampleaddsaseriestoaplotarea.

Example

Thefollowingexampleaddsaseriestoaplotarea.

C#BarSeries series = new BarSeries();series.SeriesName = "Series 0";series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);

VBDim series As New FarPoint.Win.Chart.BarSeries()series.SeriesName = "Series 0"series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)

Spread Windows Forms Developer’s Guide 603

Copyright © GrapeCity, inc. All rights reserved.

Page 605: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. SelecttheSeriesCollectioneditor.3. Setpropertiesasneeded.

Walls

Awallisthearea(orplane)behind,below,ortothesideofachart.

Awallcanhaveaborder,filleffect,orwidth(measuredinmodelunits).Thewallcanbevisibleorhidden.Theaxisgrids(majorandminor)andstripesarepaintedonthewalls.Theaxisgridlines(majorandminor)arepaintedovertheaxisstripes.

Thefollowingimagedisplaysachartwithback,bottom,andsidewalls.

Seethefollowingformoreinformationonhowtosetpropertiesforwalls:

Wall('WallClass'intheon-linedocumentation)XYPlotArea

UsingCode

Usepropertiesintheplotareaclassestosetoptionsforthewalls.

Example

Thefollowingexamplesetspropertiesforthewall.

C#YPlotArea plotArea = new YPlotArea();plotArea.BackWall.Visible = true;

VBDim plotArea As New FarPoint.Win.Chart.YPlotArea()

Spread Windows Forms Developer’s Guide 604

Copyright © GrapeCity, inc. All rights reserved.

Page 606: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

plotArea.BackWall.Visible = True

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog)tochangetheplottype.3. Setthewallpropertiesasneeded.

Axis and Other Lines

Anaxisisusedtodisplaythescaleforasingledimensionofaplotarea.Anaxiscanhaveatitle,arulerline,majorandminortickmarks,tickmarklabels,majorandminorgridlines,andstripes.Thedirectionoftheaxiscanbereversed.Theminimum,maximum,majororminortick,andlabelunitscanbeautomaticallygeneratedormanuallyassigned.Thescalecanbelinearorlogarithmic.

Tickmarksandgridsareusedtomarkindividualvaluesontheruler.Tickmarksarepaintedontherulerwhilecorrespondinggridsarepaintedonthewall(s).Stripesareusedtohighlightrangesofvalues.Stripesarepaintedonthewall(s).

Thetitle,ruler,tickmarks(majorandminor),tickmarklabels,andgrids(majorandminor)canbehidden.

Afontcanbesetforthetitleandtickmarksandthetitlecanbecustomized.Thetitleandtickmarklabelscanhavefilleffects.

Theaxiscanhavelinesfortheruler,major,andminorgridsaswellasaminimumandmaximumvalue.Theminimumandmaximumvaluescanbeautomaticallygeneratedbythechartview.

Unitscanbeassignedformajorandminortickmarksandtickmarklabels.Theunitscanalsobeautomaticallygeneratedforthechartview.Length(measuredinmodelunits),canalsobesetformajorandminortickmarks.Theunitscanbeautomaticallygenerated.

Anaxiscanbeassignedacollectionofstripes.Astriperepresentsarangeofvaluesontheaxisandisusedtohighlightarangeofvaluesonagivenaxis.Astripeisassociatedwithanaxis,butispaintedonawall.

Anindexaxisisusedtodisplayintegervaluessuchasacategoryorseriesindex.Tickmarks,tickmarklabels,andgridlinescanbedisplayedontheintegervaluesorbetweentheintegervalues.Avalueaxisisusedtodisplaydoublevalues(datavalues).Thevalueaxiscanhavealinearorlogarithmicscale(whenusingalogarithmicscale,thevalueaxiscanusealogarithmicbase).Formoreinformation,seethefollowingclasses:

Spread Windows Forms Developer’s Guide 605

Copyright © GrapeCity, inc. All rights reserved.

Page 607: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

IndexAxis('IndexAxisClass'intheon-linedocumentation)ValueAxis

Markersrepresentadatapointandcanhavemanyshapes.Formoreinformation,seetheMarkerShape('MarkerShapeEnumeration'intheon-linedocumentation)enumeration.

Stripesareusedtohighlightarangeofvaluesonagivenaxis.Astripeisassociatedwithanaxis,butispaintedonawall.

UsingCode

Usepropertiesintheplotareaclassestosetaxisoptions.

Example

Thefollowingexamplesetsatitlefortheaxis.

C#YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.XAxis.Title = "Categories";plotArea.YAxis[0].Title = "Values";

VBDim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.XAxis.Title = "Categories"plotArea.YAxis(0).Title = "Values"

UsingtheChartDesigner

1. SelectthePlotAreafromtheFormatmenu.2. SelecttheXAxisandYAxisCollections.3. SettheTitleandotherpropertiesasneeded.

Fill Effects

Afilleffectiswhentheinteriorofanobjectispainted.Twotypesoffilleffectsaresolidandgradient.Asolidfilleffectusesasinglecolorandagradientfillusestwocolorsandadirection.Theelementsinthechartthatcanhavefilleffectsarelabel,legend,wall,stripe,andthechartitself.

ThefollowingfilleffectsareavailableintheFill('FillClass'intheon-linedocumentation)class:

NoFillSolidFillImageFillGradientFill

YoucanfillelementsusingtheFillpropertyinthefollowingclasses:

ChartModel('ChartModelClass'intheon-linedocumentation)LabelArea('LabelAreaClass'intheon-linedocumentation)LegendArea('LegendAreaClass'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 606

Copyright © GrapeCity, inc. All rights reserved.

Page 608: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Stripe('StripeClass'intheon-linedocumentation)Wall('WallClass'intheon-linedocumentation)

Tosetthefilleffectfortheentireplotarea,youcansettheFillpropertyofthewallfortheplotarea.Forexample,foray-plot,youcansetthefillofthewallsetbytheBackWallpropertyintheYPlotArea('YPlotAreaClass'intheon-linedocumentation)class.

UsingCode

Usepropertiestosetfilleffects.

Example

Thefollowingexamplesetsafilleffectforabar.

C#BarSeries series = new BarSeries();series.BarFill = new SolidFill(Color.Red);series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);ChartModel model = new ChartModel();model.PlotAreas.Add(plotArea);fpChart1.Model = model;

VBDim series As New FarPoint.Win.Chart.BarSeries()series.BarFill = New SolidFill(Color.Red)series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)Dim plotArea As New YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)Dim model As New ChartModel()model.PlotAreas.Add(plotArea)fpChart1.Model = model

UsingCode

Usepropertiestosetfilleffects.

Example

Youcansetthefilleffectbeforeorafteraddingthedatapointsifyousetthefilleffectfortheentireseries.

C#

Spread Windows Forms Developer’s Guide 607

Copyright © GrapeCity, inc. All rights reserved.

Page 609: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

BarSeries series = new BarSeries();series.BarFill = new SolidFill(Color.Red);series.Values.Add(2.0);\\ ORBarSeries series = new BarSeries();series.Values.Add(2.0);series.BarFill = new SolidFill(Color.Red);

VBDim series As New FarPoint.Win.Chart.BarSeries()series.BarFill = New SolidFill(Color.Red)series.Values.Add(2.0)' ORDim series As New FarPoint.Win.Chart.BarSeries()series.Values.Add(2.0)series.BarFill = New SolidFill(Color.Red)

UsingCode

Usepropertiestosetfilleffects.

Example

Ifyousetthefilleffectforasingledatapoint,thenyouneedtoassignthefilleffectafteryouaddthedatapoint,sothereisadatapointtostorethefilleffectin.Forexample:

C#BarSeries series = new BarSeries();series.Values.Add(2.0);series.Values.Add(4.0);series.BarFills.Add(new SolidFill(Color.Green));

VBDim series As New FarPoint.Win.Chart.BarSeries()series.Values.Add(2.0)series.Values.Add(4.0)series.BarFills.Add(New SolidFill(Color.Green))

UsingCode

Usepropertiestosetfilleffects.

Example

Youcanassignfilleffectsforlinesandmarkersaswell.Forexample:

C#PointSeries series = new PointSeries();series.PointFill = new SolidFill(Color.Lime);series.PointBorder = new SolidLine(Color.Red);series.PointMarker = new BuiltinMarker(MarkerShape.Triangle, 10.0f);series.Values.Add(2.0);

Spread Windows Forms Developer’s Guide 608

Copyright © GrapeCity, inc. All rights reserved.

Page 610: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);

VBDim series As New PointSeries()series.PointFill = New SolidFill(Color.Lime)series.PointBorder = New SolidLine(Color.Red)series.PointMarker = New BuiltinMarker(MarkerShape.Triangle, 10F)series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)

UsingtheChartDesigner

1. SelecttheFilloption.2. Setpropertiesasneeded.

Chart Line Style

YoucancreatealinestylewithspecialoptionssuchasopenandendarrowsforthelinechartwiththeLineBorder('LineBorderProperty'intheon-linedocumentation)propertyandtheEnhancedSolidLine('EnhancedSolidLineClass'intheon-linedocumentation)class.Youcanalsospecifylinestyleoptionssuchasdash,captype,andsoon.

UsingCode

1. Createalinechart.2. CreateanEnhancedSolidLine('EnhancedSolidLineClass'intheon-linedocumentation)object.3. SettheLineBorder('LineBorderProperty'intheon-linedocumentation)property.

Example

Thisexamplecodecreatesalinechartwithalinestylethatcontainsarrows.

C#FarPoint.Win.Chart.EnhancedSolidLine eh = new

Spread Windows Forms Developer’s Guide 609

Copyright © GrapeCity, inc. All rights reserved.

Page 611: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Chart.EnhancedSolidLine(System.Drawing.Color.Green, 1, FarPoint.Win.Chart.CompoundType.Double, FarPoint.Win.Chart.DashType.Dash, FarPoint.Win.Chart.CapType.Flat, FarPoint.Win.Chart.JoinType.Round, FarPoint.Win.Chart.ArrowType.Arrow, FarPoint.Win.Chart.ArrowType.OpenArrow, 1, 2);FarPoint.Win.Chart.LineSeries series1 = new FarPoint.Win.Chart.LineSeries();series1.PointMarker = new FarPoint.Win.Chart.BuiltinMarker(FarPoint.Win.Chart.MarkerShape.Circle, 7.0f);series1.PointFill = new FarPoint.Win.Chart.GradientFill(System.Drawing.Color.Coral, System.Drawing.Color.Crimson);series1.PointBorder = new FarPoint.Win.Chart.SolidLine(System.Drawing.Color.Yellow);series1.LineBorder = eh;series1.Values.Add(8.0);series1.Values.Add(12.0);series1.Values.Add(14.0);series1.Values.Add(15.0);FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();plotArea.Location = new System.Drawing.PointF(0.2f, 0.2f);plotArea.Size = new System.Drawing.SizeF(0.6f, 0.6f);plotArea.Series.Add(series1);FarPoint.Win.Chart.LabelArea labelArea = new FarPoint.Win.Chart.LabelArea();labelArea.Location = new System.Drawing.PointF(0.5f, 0.02f);labelArea.AlignmentX = 0.5f;labelArea.AlignmentY = 0.0f;labelArea.Text = "Chart";FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.LabelAreas.Add(labelArea);model.PlotAreas.Add(plotArea);FarPoint.Win.Spread.Chart.SpreadChart chart = new FarPoint.Win.Spread.Chart.SpreadChart();chart.Size = new Size(200, 200);chart.Location = new Point(100, 100);chart.Model = model;fpSpread1.Sheets[0].Charts.Add(chart);

VBDim eh As New FarPoint.Win.Chart.EnhancedSolidLine(System.Drawing.Color.Green, 1, FarPoint.Win.Chart.CompoundType.Double, FarPoint.Win.Chart.DashType.Dash, FarPoint.Win.Chart.CapType.Flat, FarPoint.Win.Chart.JoinType.Round, FarPoint.Win.Chart.ArrowType.Arrow, FarPoint.Win.Chart.ArrowType.OpenArrow, 1, 2)Dim series1 As New FarPoint.Win.Chart.LineSeries()series1.PointMarker = New FarPoint.Win.Chart.BuiltinMarker(FarPoint.Win.Chart.MarkerShape.Circle, 7.0F)series1.PointFill = New FarPoint.Win.Chart.GradientFill(System.Drawing.Color.Coral, System.Drawing.Color.Crimson)series1.PointBorder = New FarPoint.Win.Chart.SolidLine(System.Drawing.Color.Yellow)series1.LineBorder = ehseries1.Values.Add(8.0)series1.Values.Add(12.0)series1.Values.Add(14.0)series1.Values.Add(15.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New System.Drawing.PointF(0.2F, 0.2F)plotArea.Size = New System.Drawing.SizeF(0.6F, 0.6F)plotArea.Series.Add(series1)Dim labelArea As New FarPoint.Win.Chart.LabelArea()labelArea.Location = New System.Drawing.PointF(0.5F, 0.02F)

Spread Windows Forms Developer’s Guide 610

Copyright © GrapeCity, inc. All rights reserved.

Page 612: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

labelArea.AlignmentX = 0.5FlabelArea.AlignmentY = 0.0FlabelArea.Text = "Chart"Dim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(labelArea)model.PlotAreas.Add(plotArea)Dim chart As New FarPoint.Win.Spread.Chart.SpreadChart()chart.Size = New Size(200, 200)chart.Location = New Point(100, 100)chart.Model = modelFpSpread1.Sheets(0).Charts.Add(chart)

UsingtheChartDesigner

1. Right-clickonthelineintheLinechart.2. SelecttheFormatSeriesmenu.3. SelecttheLineBorderoption.4. SelectSolidLine.5. Setpropertiesandclosethedialog.

Elevation and Rotation

Youcanspecifytheelevationorrotationforachart.

Theelevationrotatesthegraphcounterclockwisearoundthehorizontalaxis.Thefollowingimagedisplaysagraphwithachangedelevation.

ForAPIinformation,seetheElevation('ElevationProperty'intheon-linedocumentation)property.

Therotationrotatesthegraphcounterclockwisearoundtheverticalaxis.Thefollowingimagedisplaysagraphwithachangedrotation.

Spread Windows Forms Developer’s Guide 611

Copyright © GrapeCity, inc. All rights reserved.

Page 613: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ForAPIinformation,seetheRotation('RotationProperty'intheon-linedocumentation)property.

Lighting, Shapes, and Borders

Youcansetbordersformostareasofthechart.SeetheLineBorderandPointBorderpropertiesintheLineSeries('LineSeriesClass'intheon-linedocumentation)classformoreinformation.TheXYBubbleSeries('XYBubbleSeriesClass'intheon-linedocumentation)classhasadditionalbordersettingssuchasNegativeBorderandPositiveBorder.

Youcansetshapessuchasthebarshape.SeetheBarShape('BarShapeProperty'intheon-linedocumentation)propertyformoreinformation.

Youcanapplyadditionaleffectstothe3Dchartcontrolsuchascolor,directionallighting,andpositionallighting.Directionallightingmimicsadistantlightsourcesuchasraysfromthesun(parallelpaths).Positionallightingmimicsacloselightsourcesuchasalampwherethelightradiatesoutfromasinglepoint.

Thefollowingimagedisplaysagraphthatuseslightcolors,direction,andposition:

Thefollowingcoloreffectsareavailable:

AmbientColor('AmbientColorProperty'intheon-linedocumentation)DiffuseColor('DiffuseColorProperty'intheon-linedocumentation)SpecularColor('SpecularColorProperty'intheon-linedocumentation)

Youcanspecifythepositionandthedirectionofthelightwiththefollowingproperties:

PositionX('PositionXProperty'intheon-linedocumentation)PositionY('PositionYProperty'intheon-linedocumentation)PositionZ('PositionZProperty'intheon-linedocumentation)DirectionX('DirectionXProperty'intheon-linedocumentation)DirectionY('DirectionYProperty'intheon-linedocumentation)DirectionZ('DirectionZProperty'intheon-linedocumentation)

Spread Windows Forms Developer’s Guide 612

Copyright © GrapeCity, inc. All rights reserved.

Page 614: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

1. Createaseries.2. Addvaluestotheseries.3. Createaplotarea.4. SettheAmbientColor,DiffuseColor,andSpecularColorinthePositionalLight('PositionalLightClass'intheon-linedocumentation)class.

5. SetthePositionX,PositionY,andPositionZpropertiesinthePositionalLight('PositionalLightClass'intheon-linedocumentation)class.

6. SettheAmbientColor,DiffuseColor,andSpecularColorintheDirectionalLight('DirectionalLightClass'intheon-linedocumentation)class.

7. SetthePositionX,PositionY,andPositionZpropertiesintheDirectionalLight('DirectionalLightClass'intheon-linedocumentation)class.

8. Addthelightsettingstotheplotarea.9. Createachartmodelandassigntheplotareasettingstoit.10. Createachartandassignthechartmodeltoit.

Example

Thefollowingexampledemonstratesusinglightcolors,direction,andposition.

C#FarPoint.Win.Chart.PieSeries series = new FarPoint.Win.Chart.PieSeries();series.SeriesName = "Series 1";series.TopBevel = new FarPoint.Win.Chart.CircleBevel(12.0f, 12.0f);series.BottomBevel = new FarPoint.Win.Chart.CircleBevel(12.0f, 12.0f);series.Values.Add(1.0);series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(8.0);FarPoint.Win.Chart.PiePlotArea plotArea = new FarPoint.Win.Chart.PiePlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);FarPoint.Win.Chart.PositionalLight light0 = new FarPoint.Win.Chart.PositionalLight();light0.AmbientColor = Color.FromArgb(64, 64, 64);light0.DiffuseColor = Color.FromArgb(64, 64, 64);light0.SpecularColor = Color.FromArgb(128, 128, 128);light0.PositionX = 0.0f;light0.PositionY = 0.0f;light0.PositionZ = 100.0f;FarPoint.Win.Chart.DirectionalLight light1 = new FarPoint.Win.Chart.DirectionalLight();light1.AmbientColor = Color.FromArgb(64, 64, 64);light1.DiffuseColor = Color.FromArgb(64, 64, 64);light1.SpecularColor = Color.FromArgb(128, 128, 128);light1.DirectionX = 1.0f;light1.DirectionY = 0.0f;light1.DirectionZ = 1.0f;FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.PlotAreas.Add(plotArea);model.PlotAreas[0].Lights.Clear();model.PlotAreas[0].Lights.Add(light0);model.PlotAreas[0].Lights.Add(light1);

Spread Windows Forms Developer’s Guide 613

Copyright © GrapeCity, inc. All rights reserved.

Page 615: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpChart1.Model = model;

VBDim series As New FarPoint.Win.Chart.PieSeries()series.SeriesName = "Series 1"series.TopBevel = New FarPoint.Win.Chart.CircleBevel(12.0F, 12.0F)series.BottomBevel = New FarPoint.Win.Chart.CircleBevel(12.0F, 12.0F)series.Values.Add(1.0)series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(8.0)Dim plotArea As New FarPoint.Win.Chart.PiePlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)Dim light0 As New FarPoint.Win.Chart.PositionalLight()light0.AmbientColor = Color.FromArgb(64, 64, 64)light0.DiffuseColor = Color.FromArgb(64, 64, 64)light0.SpecularColor = Color.FromArgb(128, 128, 128)light0.PositionX = 0.0Flight0.PositionY = 0.0Flight0.PositionZ = 100.0FDim light1 As New FarPoint.Win.Chart.DirectionalLight()light1.AmbientColor = Color.FromArgb(64, 64, 64)light1.DiffuseColor = Color.FromArgb(64, 64, 64)light1.SpecularColor = Color.FromArgb(128, 128, 128)light1.DirectionX = 1.0Flight1.DirectionY = 0.0Flight1.DirectionZ = 1.0FDim model As New FarPoint.Win.Chart.ChartModel()model.PlotAreas.Add(plotArea)model.PlotAreas(0).Lights.Clear()model.PlotAreas(0).Lights.Add(light0)model.PlotAreas(0).Lights.Add(light1)fpChart1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreasCollection.2. SelecttheLightCollectioneditor.3. Setpropertiesasneeded.

Size - Height, Width, and Depth

Youcansettheheight,width,anddepthfortheplotareaofthechart.Theheightofthechartisthedistancefromthetoptothebottomoftheplotarea.Thewidthofthechartisthedistancefromtherighttotheleftoftheplotarea.Thedepthoftheplotareaisthedistancefromthebacktothefrontofthechart.

Intwodimensions,theheightandwidthwouldbetherectanglethatmakesuptheplotarea.Inthreedimensions,theheight,width,anddepthwouldbethecubethatmakesuptheplotarea.Thedepthisthesizeofthecubealongthez-axis.Thefollowingimageshowsa3Dchart.

Spread Windows Forms Developer’s Guide 614

Copyright © GrapeCity, inc. All rights reserved.

Page 616: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Seethefollowingformoreinformation:

Size('SizeProperty'intheon-linedocumentation)(widthandheight)Depth('DepthProperty'intheon-linedocumentation)

UsingCode

Usepropertiestosetthesizeanddepth.

Example

Thefollowingexamplesetsthesizeforaplotarea.

C#PiePlotArea plotArea = new PiePlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);

VBDim plotArea As New FarPoint.Win.Chart.PiePlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Setpropertiesasneeded.

Labels

Spread Windows Forms Developer’s Guide 615

Copyright © GrapeCity, inc. All rights reserved.

Page 617: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Thelabelscontaintheplottitleandtheaxislabels.YoucansetthemaintitleforthechartusingtheTextpropertyintheLabelArea('LabelAreaClass'intheon-linedocumentation)class.

Youcansetthetext,alignment,andotherformattingpropertiesfortheaxislabels.ThelabeltextcanbeboundtoadatasourcewiththeTitleDataSourceandTitleDataFieldproperties.Seethefollowingformoreinformation:

YPlotArea('YPlotAreaClass'intheon-linedocumentation)IndexAxis('IndexAxisClass'intheon-linedocumentation)ValueAxis

UsingCode

1. Createaplotarea.2. Tosetthetitleintheplotareaclassforthex-axis,settheIndexAxis.Titleproperty.3. SetTitleTextFillandTitleTextFontforadditionalformatting.YoucanalsosettheTitleOffset.4. Tosetthetitleintheplotareaforthey-axis,settheValueAxis.Titleproperty.5. SetTitleTextFillandTitleTextFontforadditionalformatting.YoucanalsosettheTitleOffset.

Example

Thefollowingexamplesetsatitlefortheaxis.

C#YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.XAxis.Title = "Categories";plotArea.XAxis.TitleTextFont = new System.Drawing.Font("Arial", 12);plotArea.XAxis.TitleTextFill = new FarPoint.Win.Chart.SolidFill(Drawing.Color.Crimson);plotArea.YAxes[0].Title = "Values";plotArea.YAxes[0].TitleTextFont = new System.Drawing.Font("Comic Sans MS", 12);plotArea.YAxes[0].TitleTextFill = new FarPoint.Win.Chart.SolidFill(Drawing.Color.Chartreuse);

VBDim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.XAxis.Title = "Categories"plotArea.XAxis.TitleTextFont = New System.Drawing.Font("Arial", 12)plotArea.XAxis.TitleTextFill = New FarPoint.Win.Chart.SolidFill(Drawing.Color.Crimson)plotArea.YAxes(0).Title = "Values"plotArea.YAxes(0).TitleTextFont = New System.Drawing.Font("Comic Sans MS", 12)plotArea.YAxes(0).TitleTextFill = New FarPoint.Win.Chart.SolidFill(Drawing.Color.Chartreuse)

UsingtheChartDesigner

1. SelectthePlotAreafromtheFormatmenu.2. SelecttheXAxisandYAxisCollections.3. SettheTitleandotherpropertiesasneeded

Spread Windows Forms Developer’s Guide 616

Copyright © GrapeCity, inc. All rights reserved.

Page 618: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Legends

Thelegendcontainsidentifiersforeachoftheseriesofthedata.Thelegendareacancontainlegenditems,abackground,andborders.Thelegendareaispositionedusingarelativelocation(where(0,0)=theleftuppercornerofthechartand(1,1)=therightlowercornerofthechart)andarelativealignment(where(0,0)=theleftuppercornerofthelabelareaand(1,1)=therightlowercornerofthelabelarea).

Seethefollowingformoreinformationonhowtosetpropertiesforthelegend:

LegendArea('LegendAreaClass'intheon-linedocumentation)LegendAreaCollection('LegendAreaCollectionClass'intheon-linedocumentation)

UsingCode

Uselocationandalignmentpropertiesinthelegendareaclassestosetthelegend.

Example

Thefollowingexamplesetspropertiesforthelegend.

C#LegendArea legend = new LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;

VBDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0Flegend.AlignmentY = 0.5F

UsingtheChartDesigner

1. SelecttheLegendAreaCollectioneditor.2. Setpropertiesasneeded.

Creating Charts

Youcanaddchartsusingcode,theSpreaddesigner,ortheChartdesigner.Youcanalsobindchartsandlettheendusermakechangestothechartatruntime.Formoreinformation,seethefollowingtopics:

CreatingPlotTypesConnectingtoDataSavingorLoadingaChartUsingtheChartDesignerUsingtheChartControl

Creating Plot Types

Thefollowingtopicsexplainhowtocreatedifferentplottypes:

Spread Windows Forms Developer’s Guide 617

Copyright © GrapeCity, inc. All rights reserved.

Page 619: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreatingaYPlotCreatinganXYPlotCreatinganXYZPlotCreatingaPiePlotCreatingaPolarPlotCreatingaRadarPlotCombiningPlotTypesCreatingaSunburstChart(on-linedocumentation)CreatingaTreemapChart(on-linedocumentation)

Creating a Y Plot

YoucancreateaYPlotchartusingcodeorthedesigner.ThefollowingimageshowsaYPlotbartypechart.

FordetailsontheAPI,seetheYPlotArea('YPlotAreaClass'intheon-linedocumentation)class.

ThefollowingclassesarealsoavailablewhencreatingYplottypecharts:

AreaSeries('AreaSeriesClass'intheon-linedocumentation)BarSeries('BarSeriesClass'intheon-linedocumentation)BoxWhiskerSeries('BoxWhiskerSeriesClass'intheon-linedocumentation)FunnelSeries('FunnelSeriesClass'intheon-linedocumentation)HighLowAreaSeries('HighLowAreaSeriesClass'intheon-linedocumentation)HighLowBarSeries('HighLowBarSeriesClass'intheon-linedocumentation)HighLowCloseSeries('HighLowCloseSeriesClass'intheon-linedocumentation)HistogramSeries('HistogramSeriesClass'intheon-linedocumentation)LineSeries('LineSeriesClass'intheon-linedocumentation)ParetoSeries('ParetoSeriesClass'intheon-linedocumentation)PointSeries('PointSeriesClass'intheon-linedocumentation)WaterfallSeries('WaterfallSeriesClass'intheon-linedocumentation)YSeries('YSeriesClass'intheon-linedocumentation)

UsingCode

1. UsetheBarSeries('BarSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.2. UsetheYPlotArea('YPlotAreaClass'intheon-linedocumentation)classtocreateaplotarea.3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.

Spread Windows Forms Developer’s Guide 618

Copyright © GrapeCity, inc. All rights reserved.

Page 620: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

ThefollowingexampledemonstratescreatingaYPlotchartandaddingunbounddatatothecontrol.

C#BarSeries series = new BarSeries();series.SeriesName = "Series 0";series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);LabelArea label = new LabelArea();label.Text = "Bar Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;LegendArea legend = new LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;ChartModel model = new ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);chart2DControl1.Model = model;

VBDim series As New FarPoint.Win.Chart.BarSeries()series.SeriesName = "Series 0"series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "Bar Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0.0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)

Spread Windows Forms Developer’s Guide 619

Copyright © GrapeCity, inc. All rights reserved.

Page 621: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)chart2DControl1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Setpropertiesasneeded.

Creating an XY Plot

YoucancreateanXYPlotchartusingcodeorthedesigner.ThefollowingimageshowsanXYPlotpointtypechart.

FordetailsontheAPI,seetheXYPlotAreaclass.

ThefollowingclassesarealsoavailablewhencreatingXYplottypecharts:

XYBubbleSeries('XYBubbleSeriesClass'intheon-linedocumentation)XYPointSeries('XYPointSeriesClass'intheon-linedocumentation)XYLineSeries('XYLineSeriesClass'intheon-linedocumentation)

UsingCode

1. UsetheXYPointSeries('XYPointSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.

2. UsetheXYPlotArea('XYPlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

ThefollowingexampledemonstratesusingunbounddatatocreateanXYpointchart.

C#XYPointSeries series0 = new XYPointSeries();series0.SeriesName = "Series 0";series0.XValues.Add(1.0);series0.XValues.Add(2.0);

Spread Windows Forms Developer’s Guide 620

Copyright © GrapeCity, inc. All rights reserved.

Page 622: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.XValues.Add(4.0);series0.XValues.Add(8.0);series0.YValues.Add(2.0);series0.YValues.Add(4.0);series0.YValues.Add(3.0);series0.YValues.Add(5.0);XYPointSeries series1 = new XYPointSeries();series1.SeriesName = "Series 1";series1.XValues.Add(1.0);series1.XValues.Add(3.0);series1.XValues.Add(5.0);series1.XValues.Add(7.0);series1.YValues.Add(1.0);series1.YValues.Add(2.0);series1.YValues.Add(4.0);series1.YValues.Add(8.0);XYPlotArea plotArea = new XYPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series0);plotArea.Series.Add(series1);LabelArea label = new LabelArea();label.Text = "XY Point Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;LegendArea legend = new LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;ChartModel model = new ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);chart2DControl1.Model = model;

VBDim series0 As New FarPoint.Win.Chart.XYPointSeries()series0.SeriesName = "Series 0"series0.XValues.Add(1.0)series0.XValues.Add(2.0)series0.XValues.Add(4.0)series0.XValues.Add(8.0)series0.YValues.Add(2.0)series0.YValues.Add(4.0)series0.YValues.Add(3.0)series0.YValues.Add(5.0)Dim series1 As New FarPoint.Win.Chart.XYPointSeries()series1.SeriesName = "Series 1"series1.XValues.Add(1.0)series1.XValues.Add(3.0)series1.XValues.Add(5.0)series1.XValues.Add(7.0)series1.YValues.Add(1.0)series1.YValues.Add(2.0)series1.YValues.Add(4.0)

Spread Windows Forms Developer’s Guide 621

Copyright © GrapeCity, inc. All rights reserved.

Page 623: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series1.YValues.Add(8.0)Dim plotArea As New FarPoint.Win.Chart.XYPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series0)plotArea.Series.Add(series1)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "XY Point Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0.0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)Chart2DControl1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog).3. SelecttheXYPlotAreaoptionandsetpropertiesasneeded.

Creating an XYZ Plot

YoucancreateanXYZPlotchartusingcodeorthedesigner.ThefollowingimageshowsanXYZPlotpointtypechart.

Spread Windows Forms Developer’s Guide 622

Copyright © GrapeCity, inc. All rights reserved.

Page 624: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FordetailsontheAPI,seetheXYZPlotArea('XYZPlotAreaClass'intheon-linedocumentation)class.

ThefollowingclassesarealsoavailablewhencreatingXYZplottypecharts:

XYZSeries('XYZSeriesClass'intheon-linedocumentation)XYZPointSeries('XYZPointSeriesClass'intheon-linedocumentation)XYZSurfaceSeries('XYZSurfaceSeriesClass'intheon-linedocumentation)XYZLineSeries('XYZLineSeriesClass'intheon-linedocumentation)

UsingCode

1. UsetheXYZPointSeries('XYZPointSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.

2. UsetheXYZPlotArea('XYZPlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

ThefollowingexampledemonstratesusingunbounddatatocreateanXYZpointchart.

C#FarPoint.Win.Chart.XYZPointSeries series0 = new FarPoint.Win.Chart.XYZPointSeries();series0.SeriesName = "Series 0";

Spread Windows Forms Developer’s Guide 623

Copyright © GrapeCity, inc. All rights reserved.

Page 625: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.XValues.Add(1.0);series0.XValues.Add(2.0);series0.XValues.Add(4.0);series0.XValues.Add(8.0);series0.YValues.Add(2.0);series0.YValues.Add(4.0);series0.YValues.Add(3.0);series0.YValues.Add(5.0);series0.ZValues.Add(1.0);series0.ZValues.Add(2.0);series0.ZValues.Add(1.0);series0.ZValues.Add(2.0);FarPoint.Win.Chart.XYZPointSeries series1 = new FarPoint.Win.Chart.XYZPointSeries();series1.SeriesName = "Series 1";series1.XValues.Add(1.0);series1.XValues.Add(3.0);series1.XValues.Add(5.0);series1.XValues.Add(8.0);series1.YValues.Add(1.0);series1.YValues.Add(2.0);series1.YValues.Add(4.0);series1.YValues.Add(8.0);series1.ZValues.Add(4.0);series1.ZValues.Add(3.0);series1.ZValues.Add(4.0);series1.ZValues.Add(3.0);FarPoint.Win.Chart.XYZPlotArea plotArea = new FarPoint.Win.Chart.XYZPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Rotation = -21;plotArea.Elevation = 15;plotArea.Series.Add(series0);plotArea.Series.Add(series1);FarPoint.Win.Chart.LabelArea label = new FarPoint.Win.Chart.LabelArea();label.Text = "XYZ Point Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;FarPoint.Win.Chart.LegendArea legend = new FarPoint.Win.Chart.LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);fpChart1.Model = model;

VBDim series0 As New FarPoint.Win.Chart.XYZPointSeries()series0.SeriesName = "Series 0"series0.XValues.Add(1.0)series0.XValues.Add(2.0)series0.XValues.Add(4.0)series0.XValues.Add(8.0)series0.YValues.Add(2.0)

Spread Windows Forms Developer’s Guide 624

Copyright © GrapeCity, inc. All rights reserved.

Page 626: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.YValues.Add(4.0)series0.YValues.Add(3.0)series0.YValues.Add(5.0)series0.ZValues.Add(1.0)series0.ZValues.Add(2.0)series0.ZValues.Add(1.0)series0.ZValues.Add(2.0)Dim series1 As New FarPoint.Win.Chart.XYZPointSeries()series1.SeriesName = "Series 1"series1.XValues.Add(1.0)series1.XValues.Add(3.0)series1.XValues.Add(5.0)series1.XValues.Add(8.0)series1.YValues.Add(1.0)series1.YValues.Add(2.0)series1.YValues.Add(4.0)series1.YValues.Add(8.0)series1.ZValues.Add(4.0)series1.ZValues.Add(3.0)series1.ZValues.Add(4.0)series1.ZValues.Add(3.0)Dim plotArea As New FarPoint.Win.Chart.XYZPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Elevation = 15plotArea.Rotation = -21plotArea.Series.Add(series0)plotArea.Series.Add(series1)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "XYZ Point Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0.0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)fpChart1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog).3. SelecttheXYZPlotAreaoptionandsetpropertiesasneeded.

Creating a Pie Plot

Youcancreateapieplotchartusingcodeorthedesigner.ThefollowingimageshowsaPiePlottypechart.

Spread Windows Forms Developer’s Guide 625

Copyright © GrapeCity, inc. All rights reserved.

Page 627: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FordetailsontheAPI,seethePiePlotArea('PiePlotAreaClass'intheon-linedocumentation)class.

ThefollowingclassisalsoavailablewhencreatingPieplottypecharts:

PieSeries('PieSeriesClass'intheon-linedocumentation)

UsingCode

1. UsethePieSeries('PieSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.2. UsethePiePlotArea('PiePlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

ThefollowingexampledemonstratesusingunbounddatatocreateaPiechart.

C#PieSeries series = new PieSeries();series.SeriesName = "Series 0";series.Values.Add(1.0);series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(8.0);PiePlotArea plotArea = new PiePlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);LabelArea label = new LabelArea();label.Text = "Pie Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;LegendArea legend = new LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;ChartModel model = new ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);

Spread Windows Forms Developer’s Guide 626

Copyright © GrapeCity, inc. All rights reserved.

Page 628: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

chart2DControl1.Model = model;

VBDim series As New FarPoint.Win.Chart.PieSeries()series.SeriesName = "Series 0"series.Values.Add(1.0)series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(8.0)Dim plotArea As New FarPoint.Win.Chart.PiePlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "Pie Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0.0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)chart2DControl1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog).3. SelectthePiePlotAreaoptionandsetpropertiesasneeded.

Creating a Polar Plot

Youcancreateapolarplotchartusingcodeorthedesigner.ThefollowingimageshowsaPolarPlottypechart.

Spread Windows Forms Developer’s Guide 627

Copyright © GrapeCity, inc. All rights reserved.

Page 629: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FordetailsontheAPI,seethePolarPlotArea('PolarPlotAreaClass'intheon-linedocumentation)class.

ThefollowingclassesarealsoavailablewhencreatingPolarplottypecharts:

PolarSeries('PolarSeriesClass'intheon-linedocumentation)PolarAreaSeries('PolarAreaSeriesClass'intheon-linedocumentation)PolarPointSeries('PolarPointSeriesClass'intheon-linedocumentation)PolarLineSeries('PolarLineSeriesClass'intheon-linedocumentation)PolarAngleAxis('PolarAngleAxisClass'intheon-linedocumentation)PolarRadiusAxis('PolarRadiusAxisClass'intheon-linedocumentation)

UsingCode

1. UsethePolarPointSeries('PolarPointSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.

2. UsethePolarPlotArea('PolarPlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.

3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

Thefollowingexampledemonstratesusingunbounddatatocreateapolarpointserieschart.

C#FarPoint.Win.Chart.PolarPointSeries series0 = new FarPoint.Win.Chart.PolarPointSeries();

Spread Windows Forms Developer’s Guide 628

Copyright © GrapeCity, inc. All rights reserved.

Page 630: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.SeriesName = "Series 0";series0.XValues.Add(0.0);series0.XValues.Add(45.0);series0.XValues.Add(90.0);series0.XValues.Add(180.0);series0.XValues.Add(270.0);series0.YValues.Add(1.0);series0.YValues.Add(2.0);series0.YValues.Add(3.0);series0.YValues.Add(4.0);series0.YValues.Add(5.0);FarPoint.Win.Chart.PolarPointSeries series1 = new FarPoint.Win.Chart.PolarPointSeries();series1.SeriesName = "Series 1";series1.XValues.Add(0.0);series1.XValues.Add(45.0);series1.XValues.Add(90.0);series1.XValues.Add(180.0);series1.XValues.Add(270.0);series1.YValues.Add(2.0);series1.YValues.Add(3.0);series1.YValues.Add(4.0);series1.YValues.Add(5.0);series1.YValues.Add(6.0);FarPoint.Win.Chart.PolarPlotArea plotArea = new FarPoint.Win.Chart.PolarPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series0);plotArea.Series.Add(series1);FarPoint.Win.Chart.LabelArea label = new FarPoint.Win.Chart.LabelArea();label.Text = "Polar Point Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;FarPoint.Win.Chart.LegendArea legend = FarPoint.Win.Chart.new LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);chart2DControl1.Model = model;

VBDim series0 As New FarPoint.Win.Chart.PolarPointSeries()series0.SeriesName = "Series 0"series0.XValues.Add(0.0)series0.XValues.Add(45.0)series0.XValues.Add(90.0)series0.XValues.Add(180.0)series0.XValues.Add(270.0)series0.YValues.Add(1.0)series0.YValues.Add(2.0)series0.YValues.Add(3.0)series0.YValues.Add(4.0)

Spread Windows Forms Developer’s Guide 629

Copyright © GrapeCity, inc. All rights reserved.

Page 631: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.YValues.Add(5.0)Dim series1 As New FarPoint.Win.Chart.PolarPointSeries()series1.SeriesName = "Series 1"series1.XValues.Add(0.0)series1.XValues.Add(45.0)series1.XValues.Add(90.0)series1.XValues.Add(180.0)series1.XValues.Add(270.0)series1.YValues.Add(2.0)series1.YValues.Add(3.0)series1.YValues.Add(4.0)series1.YValues.Add(5.0)series1.YValues.Add(6.0)Dim plotArea As New FarPoint.Win.Chart.PolarPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series0)plotArea.Series.Add(series1)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "Polar Point Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)chart2DControl1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog).3. SelectthePolarPlotAreaoptionandsetpropertiesasneeded.

Creating a Radar Plot

Youcancreatearadarplotchartusingcodeorthedesigner.ThefollowingimageshowsaRadarpointtypechart.

Spread Windows Forms Developer’s Guide 630

Copyright © GrapeCity, inc. All rights reserved.

Page 632: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FordetailsontheAPI,seetheRadarPlotArea('RadarPlotAreaClass'intheon-linedocumentation)class.

ThefollowingclassesarealsoavailablewhencreatingRadarplottypecharts:

RadarSeries('RadarSeriesClass'intheon-linedocumentation)PolarLineSeries('PolarLineSeriesClass'intheon-linedocumentation)RadarAreaSeries('RadarAreaSeriesClass'intheon-linedocumentation)RadarPointSeries('RadarPointSeriesClass'intheon-linedocumentation)RadarIndexAxis('RadarIndexAxisClass'intheon-linedocumentation)RadarValueAxis('RadarValueAxisClass'intheon-linedocumentation)

UsingCode

1. UsetheRadarPointSeries('RadarPointSeriesClass'intheon-linedocumentation)classtoadddatatoaChartcontrol.

2. UsetheRadarPlotArea('RadarPlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.

3. Setthelocationandsizeoftheplotarea.4. Addtheseriestotheplotarea.5. Createalabelandlegendforthechart.6. Createachartmodelandaddtheplotarea,label,andlegendtothemodel.7. Createachartandaddthechartmodeltoit.

Example

ThefollowingexampledemonstratesusingunbounddatatocreateaRadarchart.

C#FarPoint.Win.Chart.RadarPointSeries series0 = new FarPoint.Win.Chart.RadarPointSeries();series0.SeriesName = "Series 0";series0.Values.Add(1.0);

Spread Windows Forms Developer’s Guide 631

Copyright © GrapeCity, inc. All rights reserved.

Page 633: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

series0.Values.Add(2.0);series0.Values.Add(3.0);series0.Values.Add(4.0);series0.Values.Add(5.0);FarPoint.Win.Chart.RadarPointSeries series1 = new FarPoint.Win.Chart.RadarPointSeries();series1.SeriesName = "Series 1";series1.Values.Add(2.0);series1.Values.Add(3.0);series1.Values.Add(4.0);series1.Values.Add(5.0);series1.Values.Add(6.0);FarPoint.Win.Chart.RadarPlotArea plotArea = new FarPoint.Win.Chart.RadarPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series0);plotArea.Series.Add(series1);FarPoint.Win.Chart.LabelArea label = new FarPoint.Win.Chart.LabelArea();label.Text = "Radar Point Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;FarPoint.Win.Chart.LegendArea legend = new FarPoint.Win.Chart.LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);chart2DControl1.Model = model;

VBDim series0 As New FarPoint.Win.Chart.RadarPointSeries()series0.SeriesName = "Series 0"series0.Values.Add(1.0)series0.Values.Add(2.0)series0.Values.Add(3.0)series0.Values.Add(4.0)series0.Values.Add(5.0)Dim series1 As New FarPoint.Win.Chart.RadarPointSeries()series1.SeriesName = "Series 1"series1.Values.Add(2.0)series1.Values.Add(3.0)series1.Values.Add(4.0)series1.Values.Add(5.0)series1.Values.Add(6.0)Dim plotArea As New FarPoint.Win.Chart.RadarPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series0)plotArea.Series.Add(series1)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "Radar Point Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5F

Spread Windows Forms Developer’s Guide 632

Copyright © GrapeCity, inc. All rights reserved.

Page 634: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

label.AlignmentY = 0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1Flegend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)chart2DControl1.Model = model

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. Clickthedrop-downbuttonontherightsideoftheAddbutton(lower,leftsideofdialog).3. SelecttheRadarPlotAreaoptionandsetpropertiesasneeded.

Combining Plot Types

Multipleseriesfromthesamemajorcategoryarecompatiblewitheachotherandcanbecombinedinasingleplotarea.Forexample,abarseriesandalineseriescanbecombinedtogetherinaYPlotArea.

FordetailsontheAPI,seetheYPlotArea('YPlotAreaClass'intheon-linedocumentation)class.

Thefollowingclassesareusedtocreatethebarandlineseriesexample:

BarSeries('BarSeriesClass'intheon-linedocumentation)LineSeries('LineSeriesClass'intheon-linedocumentation)

UsingCode

1. UsetheBarSeries('BarSeriesClass'intheon-linedocumentation)andLineSeries('LineSeriesClass'intheon-linedocumentation)classestoadddatatotheChartcontrol.

2. UsetheYPlotArea('YPlotAreaClass'intheon-linedocumentation)classtocreatetheplotarea.3. Setthelocationandsizeoftheplotarea.4. Addbothseriestotheplotarea.5. Createalabelforthechart.

Spread Windows Forms Developer’s Guide 633

Copyright © GrapeCity, inc. All rights reserved.

Page 635: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

6. Createachartmodelandaddtheplotareaandlabeltothemodel.7. Createachartandaddthechartmodeltoit.

Example

Thefollowingexampledemonstratesusingunbounddatatocreateachartthatusesabarseriesandalineseries.

C#BarSeries series0 = new BarSeries();series0.Values.Add(8.0);series0.Values.Add(4.0);series0.Values.Add(2.0);series0.Values.Add(1.0);LineSeries series1 = new LineSeries();series1.PointMarker = new BuiltinMarker(MarkerShape.Circle, 7.0f);series1.Values.Add(8.0);series1.Values.Add(12.0);series1.Values.Add(14.0);series1.Values.Add(15.0);YPlotArea plotArea = new YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series0);plotArea.Series.Add(series1);LabelArea label = new LabelArea();label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;label.Text = "Pareto Chart";ChartModel model = new ChartModel();model.LabelAreas.Add(label);model.PlotAreas.Add(plotArea);chart2DControl1.Model = model;

VBDim series0 As New FarPoint.Win.Chart.BarSeries()series0.Values.Add(8.0)series0.Values.Add(4.0)series0.Values.Add(2.0)series0.Values.Add(1.0)Dim series1 As New FarPoint.Win.Chart.LineSeries()series1.PointMarker = New FarPoint.Win.Chart.BuiltinMarker(FarPoint.Win.Chart.MarkerShape.Circle, 7.0F)series1.Values.Add(8.0)series1.Values.Add(12.0)series1.Values.Add(14.0)series1.Values.Add(15.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series0)plotArea.Series.Add(series1)Dim labelArea As New FarPoint.Win.Chart.LabelArea()labelArea.Location = New PointF(0.5F, 0.02F)labelArea.AlignmentX = 0.5F

Spread Windows Forms Developer’s Guide 634

Copyright © GrapeCity, inc. All rights reserved.

Page 636: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

labelArea.AlignmentY = 0.0FlabelArea.Text = "Pareto Chart"Dim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(labelArea)model.PlotAreas.Add(plotArea)Chart2DControl1.Model = model

Connecting to Data

Thechartcontrolcanbeboundorunbound.Ifthecontrolisunbound,providethevaluesasdoublevalues.

Whenthechartisbound,thevaluescananydatatypethatcanbeconvertedtoadoublevalue(includingint,double,decimal,string,andsoon).

FormoreinformationonaddingdatatoaChartcontrol,seethefollowingtopics:

UsingaBoundDataSourceUsinganUnBoundDataSourceUsingRawandRepresentedData

Using a Bound Data Source

Youcanbindthecharttothefollowingdatasources:

ArrayArrayList(IList)ListCollectionTable

Whenthechartisboundtodata,itdynamicallyplotsthedatawhenitpaints.Asinglechartcansupport(anddisplay)datafrommultipledatasourcesandmultipledatafieldswithinadatasource.FormoreinformationabouttheDataSourceproperty,refertothespecificcharttypeintheAssemblyReference(forexample:SeriesNameDataSourceintheRadarLineSeries('RadarLineSeriesClass'intheon-linedocumentation)class).

UsingCode

Createadatasourceandthenbindthecontrol.

Example

Thefollowingexampledemonstrateshowtobindthecontroltoadatasource.

C#// Create an array and bind the controlobject[] values = new object[] { 2, 4.0, 3.0m, "5.0" };BarSeries series = new BarSeries();series.Values.DataSource = values;

VB' Create an array and bind the controlDim values() As Object = {2, 4.0, 3.0D, "5.0"}Dim series As New BarSeries()series.Values.DataSource = values

Spread Windows Forms Developer’s Guide 635

Copyright © GrapeCity, inc. All rights reserved.

Page 637: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

Createadatasourceandthenbindthecontrol.

Example

Thefollowingexampledemonstrateshowtobindthecontroltoadatatable.

C#DataTable dt = new DataTable("Test");DataRow dr = default(DataRow);dt.Columns.Add("Series0");dt.Columns.Add("Series1");dr = dt.NewRow();dr[0] = 2;dr[1] = 1;dt.Rows.Add(dr);dr = dt.NewRow();dr[0] = 4;dr[1] = 2;dt.Rows.Add(dr);dr = dt.NewRow();dr[0] = 3;dr[1] = 4;FarPoint.Win.Chart.BarSeries series = new FarPoint.Win.Chart.BarSeries();series.Values.DataSource = dt;series.Values.DataField = dt.Columns[0].ColumnName;FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();plotArea.Location = new PointF(0.2F, 0.2F);plotArea.Size = new SizeF(0.6F, 0.6F);plotArea.Series.Add(series);model.PlotAreas.Add(plotArea);fpChart1.Model = model;

VBDim dt As New DataTable("Test")Dim dr As DataRowdt.Columns.Add("Series0")dt.Columns.Add("Series1")dr = dt.NewRow()dr(0) = 2dr(1) = 1dt.Rows.Add(dr)dr = dt.NewRow()dr(0) = 4dr(1) = 2dt.Rows.Add(dr)dr = dt.NewRow()dr(0) = 3dr(1) = 4dt.Rows.Add(dr)Dim series As New FarPoint.Win.Chart.BarSeriesseries.Values.DataSource = dtseries.Values.DataField = dt.Columns(0).ColumnName

Spread Windows Forms Developer’s Guide 636

Copyright © GrapeCity, inc. All rights reserved.

Page 638: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Dim model As New FarPoint.Win.Chart.ChartModel()Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)model.PlotAreas.Add(plotArea)FpChart1.Model = model

Using an UnBound Data Source

Youcanadddoublevaluestothechartcontrolwithoutusingadatasource.

UsingCode

Adddatatotheseries.

Example

Thefollowingexampledemonstratesaddingunbounddatatothecontrol.

C#BarSeries series = new BarSeries();series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);

VBDim series As New BarSeries()series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)

UsingtheChartDesigner

1. SelectthePlotAreaCollectioneditor.2. SelecttheSeriesCollectioneditor.3. SelecttheValuesCollectioneditor.4. Setvaluesasneeded.

Using Raw and Represented Data

Youcansetthescaleofthedatabeforedisplayingthedata.

Forexample,ifthedatavaluesareinthemillions,youmaywishtodisplaythemusingamuchsmallerscalesuchashundreds(100,000,000vs100).UsetheDisplayUnitspropertyintheValueAxisclasstosetthescale.

UsingCode

UsetheDisplayUnitspropertytocreateasmallerscaleontheaxis.

Spread Windows Forms Developer’s Guide 637

Copyright © GrapeCity, inc. All rights reserved.

Page 639: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

ThefollowingexampleusestheDisplayUnitsproperty.

C#FarPoint.Win.Chart.BarSeries series = new FarPoint.Win.Chart.BarSeries();series.Values.Add(10000.0);series.Values.Add(20000.0);series.Values.Add(40000.0);series.Values.Add(80000.0);FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();plotArea.Location = new PointF(0.2F, 0.2F);plotArea.Size = new SizeF(0.6F, 0.6F);plotArea.XAxis.Title = "Entry";plotArea.XAxis.TitleVisible = true;plotArea.YAxes[0].DisplayUnits = 1000.0;plotArea.Series.Add(series);FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.PlotAreas.Add(plotArea);FarPoint.Win.Spread.Chart.SpreadChart chart = new FarPoint.Win.Spread.Chart.SpreadChart();chart.Size = new Size(200, 200);chart.Location = new Point(100, 100);chart.Model = model;fpSpread1.Sheets[0].Charts.Add(chart);

VBDim series As New FarPoint.Win.Chart.BarSeries()series.Values.Add(10000.0)series.Values.Add(20000.0)series.Values.Add(40000.0)series.Values.Add(80000.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.XAxis.Title = "Entry" 'IndexAxisplotArea.XAxis.TitleVisible = True 'IndexAxisplotArea.YAxes(0).DisplayUnits = 1000.0 'ValueAxisplotArea.Series.Add(series)Dim model As New FarPoint.Win.Chart.ChartModel()model.PlotAreas.Add(plotArea)Dim chart As New FarPoint.Win.Spread.Chart.SpreadChart()chart.Size = New Size(200, 200)chart.Location = New Point(100, 100)chart.Model = modelFpSpread1.Sheets(0).Charts.Add(chart)

Saving or Loading a Chart

YoucanreadorwritetoafileorstreamusingtheIXmlSerializableinterface.

Youcanalsosaveandloadxmlfilesatdesigntime.Selectthearrowiconatthetoprightedgeofthecontrolafterdrawingthecontrolontheformtoseethemenuoptions.

Spread Windows Forms Developer’s Guide 638

Copyright © GrapeCity, inc. All rights reserved.

Page 640: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

Usegeneralmethodstosavetoafile.

Example

Thefollowingcodewritestoafile.

C#ChartModel model = fpChart1.Model;XmlTextWriter writer = new XmlTextWriter("c:\\home\\temp\\test.xml", null);model.WriteXml(writer);writer.Close();

VBDim model As ChartModel = fpChart1.ModelDim writer As New XmlTextWriter("c:\home\temp\test.xml", Nothing)model.WriteXml(writer)writer.Close()

UsingCode

Usegeneralmethodstoreadfromafile.

Example

Thefollowingcodereadsfromafile.

C#ChartModel model = fpChart1.Model;XmlTextReader reader = new XmlTextReader("c:\\home\\temp\\test.xml");model.ReadXml(reader);reader.Close();

VBDim model As ChartModel = fpChart1.ModelDim reader As New XmlTextReader("c:\home\temp\test.xml")model.ReadXml(reader)reader.Close()

UsingtheDesigner

1. Selectthearrowiconatthetoprightedgeofthecontrolafterdrawingthecontrolontheformtoseethemenuoptions.

2. ChooseSavetoXMLorLoadfromXML.

Using the Chart Designer

Thechartdesignergraphicalinterfacesavestimeandeffortandprovidesavisualrepresentationofthechartcontrolasyouchangesettingsinthedesigner.YoucanapplythechangestothecontrolorsavethechangestoanXMLformattedfile.

Spread Windows Forms Developer’s Guide 639

Copyright © GrapeCity, inc. All rights reserved.

Page 641: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

HerearetopicstohelpyouusetheChartDesigner:

OpeningtheChartDesignerCreatingaChartControlChartCollectionEditorsChartDesignerToolbar

Opening the Chart Designer

YoucanopenthedesignerbyclickingonthearrowatthetoprightedgeofthecontrolwhenitisonaforminVisualStudio.ThenclickontheDesignermenuoptiontoloadthechartdesigner.

Thisopensthedesignerwiththevariouseditorsthatcanbeusedtocustomizethechartcontrol.

Spread Windows Forms Developer’s Guide 640

Copyright © GrapeCity, inc. All rights reserved.

Page 642: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Creating a Chart Control

ThefollowingstepsshowhowtocreateaPiechartusingthedesigner.

1.Openthedesigner(clickonthearrowatthetoprightedgeofthecontrolwhenitisonaforminVisualStudioorclickontheDesignermenuoptiontoloadthechartdesigner).

2.ClickonthePlotAreaCollectiondrop-downbutton.TheYPlotAreaisalreadyselected.ClickRemove.ThenclickAddandselectthePiePlotArea.

3.SelecttheSeriesCollectiondrop-downbutton.

Spread Windows Forms Developer’s Guide 641

Copyright © GrapeCity, inc. All rights reserved.

Page 643: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4.ClicktheAddbuttonintheSeriesCollectionEditor.ThenselecttheValuesCollectiondrop-downbutton.

5.ClicktheAddbuttonandaddmultipledatavalues.Typeadoublevalueinthetextareaontherightsideoftheeditor.

Spread Windows Forms Developer’s Guide 642

Copyright © GrapeCity, inc. All rights reserved.

Page 644: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

6.SelectOKonthethreedialogs.ClickApplyandOKtoapplythedesignerchangestothecontrolandclosethedesigner.TheLabelAreaCollectioneditorcanbeusedtochangethetextofthelegend(fromBartoPie,forexample).

Spread Windows Forms Developer’s Guide 643

Copyright © GrapeCity, inc. All rights reserved.

Page 645: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Chart Collection Editors

Thereareseveraleditorsthatcanbeusedtoeditareasofthechartcontrol.Openthechartdesignerandselecttheappropriatecollectiondrop-downundertheMiscsection.

LabelCollectionEditorLegendCollectionEditorPlotCollectionEditorLightCollectionEditorSeriesCollectionEditor

Label Collection Editor

TheLabelAreaCollectionEditorcanbeusedtocreatelabelsforthechartandappearsasfollows:

Spread Windows Forms Developer’s Guide 644

Copyright © GrapeCity, inc. All rights reserved.

Page 646: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Legend Collection Editor

TheLegendAreaCollectionEditorcanbeusedtocreatelegendsforthechartandappearsasfollows:

Plot Collection Editor

Spread Windows Forms Developer’s Guide 645

Copyright © GrapeCity, inc. All rights reserved.

Page 647: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThePlotAreaCollectionEditorcanbeusedtocreateplotsforthechartandappearsasfollows:

Light Collection Editor

TheLightCollectionEditorcanbeusedtocreatelightingeffectsforthechartandappearsasfollows:

Spread Windows Forms Developer’s Guide 646

Copyright © GrapeCity, inc. All rights reserved.

Page 648: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheLightCollectionEditorisundertheAppearancesectionafteryouselectthePlotAreasCollection.YoucanalsoselectaplotareafromthediagramontheleftsideofthedesignerandthenselecttheLightCollectionundertheAppearancesection.

Series Collection Editor

TheSeriesCollectionEditorcanbeusedtosetborders,barshapes,andfilloptions,addchartdata,specifylabelsandnames,andotheroptions.Theeditorappearsasfollows:

TheSeriesCollectionEditorisundertheDatasectionafteryouselectthePlotAreasCollection.YoucanalsoselectaplotareafromthediagramontheleftsideofthedesignerandthenselecttheSeriesCollectionundertheDatasection.

Chart Designer Toolbar

TheChartDesignericonscanbeusedtosavethecharttoafile,changethechartviewtype,addorremoveitems,elevateorrotatethechart,andeditdatapoints.

Spread Windows Forms Developer’s Guide 647

Copyright © GrapeCity, inc. All rights reserved.

Page 649: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Icon DescriptionOpen ThisallowsyoutoopenthechartcontrolfromanXMLfile.

Save ThisallowsyoutoopenthechartcontroltoanXMLfile.

ChartViewType

Thisallowsyoutochangetheviewtypeto2Dor3D.

AddItems Thisallowsyoutoadditemstothechart(drop-downlistundertheAddoption).

RemoveItems

Thisallowsyoutomoveupordownthelistifyouhavecreatedmultipleseries.

Elevation Thisallowsyoutorotatethegraphcounterclockwisearoundthehorizontalaxis.

Rotation Thisallowsyoutorotatethegraphcounterclockwisearoundtheverticalaxis.

EndPointData

Thisallowsyoutobringupthedatapointsinthechart(addedwiththeDoubleCollectionEditorunderPlotAreas,Series,andValues).

Using the Chart Control

Youcanaddchartsusingcode,theSpreaddesigner,ortheChartdesigner.Youcanalsobindchartsandlettheendusermakechangestothechartatruntime.Formoreinformation,seethefollowingtopics:

AddingaChartControlChangingChartOptionsUsingtheChartDesignerBindingtheChartControlAllowingtheUsertoChangetheChartAddingaContextMenu

Adding a Chart Control

YoucanaddachartcontroltothesheetusingcodeortheSpreaddesigner.Youcanalsoallowtheusertoresizethechartandtherangeofdatausedinthechartcontrol.ThefollowingimageshowstheChartsectionintheSpreadDesignerundertheInsertmenu.ThesecondimageshowstheChartToolsmenuoptionwhichisdisplayedafterachartisadded.

Spread Windows Forms Developer’s Guide 648

Copyright © GrapeCity, inc. All rights reserved.

Page 650: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheSpreadDesignerorEditChartVerb

1. OpentheSpreadDesignerandtypechartdatainthecells(similartothedatainthecodeexampleafterthissection).

2. Selectarangeofcellswithdata.3. ClickontheInsertmenuoptionandthenpickthecharttype(seetheaboveimage).4. TheChartToolmenuwillappearwithadditionaloptions.5. ClosetheSpreadDesignerandsavethechanges.

or

1. ClickontheFpSpread1_Sheet1objectatthebottomofthepage.2. ClickonthearrowatthetoprightoftheobjectandselectEditCharts.

3. ThisbringsuptheSpreadChartCollectionEditor.ClickAddtoaddachartandthensetthechartproperties.

Spread Windows Forms Developer’s Guide 649

Copyright © GrapeCity, inc. All rights reserved.

Page 651: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

4. TheAddbuttonhasadrop-downmenuwithcharttypeoptions(bar,forexample).

Spread Windows Forms Developer’s Guide 650

Copyright © GrapeCity, inc. All rights reserved.

Page 652: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

5. SelectModelintheSpreadChartCollectionEditortobringupthechartdesignerorchoosethePlotAreasCollectionunderModel.UsetheAddbuttondrop-downmenutoselectaplotareatype(YPlotArea,forexample).

6. UsetheSeriesCollectiontoaddaseriestype(BarSeries,forexample).TheAddbuttonhasadrop-downforthetypesofseriesyoucanadd.

7. UsetheValuesCollectiontobringuptheDoubleCollectionEditorthatcanbeusedtoadddatatothechart.

Spread Windows Forms Developer’s Guide 651

Copyright © GrapeCity, inc. All rights reserved.

Page 653: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

8. SelectOKforeachdialog.

UsingCode

YoucanaddachartcontroltotheSpreadcontrolusingcode.Thisexamplecreatesdataincellsandthenaddsthechartcontrol.

Example

C#fpSpread1.Sheets[0].Cells[0, 1].Value = "c1";fpSpread1.Sheets[0].Cells[0, 2].Value = "c2";fpSpread1.Sheets[0].Cells[0, 3].Value = "c3";fpSpread1.Sheets[0].Cells[1, 0].Value = "s1";fpSpread1.Sheets[0].Cells[2, 0].Value = "s2";fpSpread1.Sheets[0].Cells[3, 0].Value = "s3";fpSpread1.Sheets[0].Cells[4, 0].Value = "s4";fpSpread1.Sheets[0].Cells[5, 0].Value = "s5";fpSpread1.Sheets[0].Cells[6, 0].Value = "s6";fpSpread1.Sheets[0].Cells[1, 1].Value = 1;fpSpread1.Sheets[0].Cells[2, 1].Value = 2;fpSpread1.Sheets[0].Cells[3, 1].Value = 3;fpSpread1.Sheets[0].Cells[4, 1].Value = 4;fpSpread1.Sheets[0].Cells[5, 1].Value = 5;fpSpread1.Sheets[0].Cells[6, 1].Value = 6;

Spread Windows Forms Developer’s Guide 652

Copyright © GrapeCity, inc. All rights reserved.

Page 654: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.Sheets[0].Cells[1, 2].Value = 7;fpSpread1.Sheets[0].Cells[2, 2].Value = 8;fpSpread1.Sheets[0].Cells[3, 2].Value = 9;fpSpread1.Sheets[0].Cells[4, 2].Value = 10;fpSpread1.Sheets[0].Cells[5, 2].Value = 11;fpSpread1.Sheets[0].Cells[6, 2].Value = 12;fpSpread1.Sheets[0].Cells[1, 3].Value = 13;fpSpread1.Sheets[0].Cells[2, 3].Value = 14;fpSpread1.Sheets[0].Cells[3, 3].Value = 15;fpSpread1.Sheets[0].Cells[4, 3].Value = 16;fpSpread1.Sheets[0].Cells[5, 3].Value = 17;fpSpread1.Sheets[0].Cells[6, 3].Value = 18;FarPoint.Win.Spread.Model.CellRange range = new FarPoint.Win.Spread.Model.CellRange(0, 0, 7, 4);fpSpread1.Sheets[0].AddChart(range, typeof(FarPoint.Win.Chart.BarSeries), 400, 300, 0, 0, FarPoint.Win.Chart.ChartViewType.View3D, false);

VBFpSpread1.Sheets(0).Cells(0, 1).Value = "c1"FpSpread1.Sheets(0).Cells(0, 2).Value = "c2"FpSpread1.Sheets(0).Cells(0, 3).Value = "c3"FpSpread1.Sheets(0).Cells(1, 0).Value = "s1"FpSpread1.Sheets(0).Cells(2, 0).Value = "s2"FpSpread1.Sheets(0).Cells(3, 0).Value = "s3"FpSpread1.Sheets(0).Cells(4, 0).Value = "s4"FpSpread1.Sheets(0).Cells(5, 0).Value = "s5"FpSpread1.Sheets(0).Cells(6, 0).Value = "s6"FpSpread1.Sheets(0).Cells(1, 1).Value = 1FpSpread1.Sheets(0).Cells(2, 1).Value = 2FpSpread1.Sheets(0).Cells(3, 1).Value = 3FpSpread1.Sheets(0).Cells(4, 1).Value = 4FpSpread1.Sheets(0).Cells(5, 1).Value = 5FpSpread1.Sheets(0).Cells(6, 1).Value = 6FpSpread1.Sheets(0).Cells(1, 2).Value = 7FpSpread1.Sheets(0).Cells(2, 2).Value = 8FpSpread1.Sheets(0).Cells(3, 2).Value = 9FpSpread1.Sheets(0).Cells(4, 2).Value = 10FpSpread1.Sheets(0).Cells(5, 2).Value = 11FpSpread1.Sheets(0).Cells(6, 2).Value = 12FpSpread1.Sheets(0).Cells(1, 3).Value = 13FpSpread1.Sheets(0).Cells(2, 3).Value = 14FpSpread1.Sheets(0).Cells(3, 3).Value = 15FpSpread1.Sheets(0).Cells(4, 3).Value = 16FpSpread1.Sheets(0).Cells(5, 3).Value = 17FpSpread1.Sheets(0).Cells(6, 3).Value = 18Dim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, 7, 4)FpSpread1.Sheets(0).AddChart(range, GetType(FarPoint.Win.Chart.BarSeries), 400, 300, 0, 0, FarPoint.Win.Chart.ChartViewType.View3D, False)

UsingCode

YoucanaddachartcontroltotheSpreadcontrolusingcode.Thisexamplecreatesachartcontrol,addsdatatothechartcontrol,andthenaddsthechartcontroltoSpread.

Example

Spread Windows Forms Developer’s Guide 653

Copyright © GrapeCity, inc. All rights reserved.

Page 655: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ThisexamplehascodefortheAddmethodusedtoaddachartcontroltoSpreadandtheModelpropertyusedforthechartcontroloutsideoftheSpreadcontrol.

C#FarPoint.Win.Chart.BarSeries series = new FarPoint.Win.Chart.BarSeries();series.Values.Add(2.0);series.Values.Add(4.0);series.Values.Add(3.0);series.Values.Add(5.0);FarPoint.Win.Chart.YPlotArea plotArea = new FarPoint.Win.Chart.YPlotArea();plotArea.Location = new PointF(0.2f, 0.2f);plotArea.Size = new SizeF(0.6f, 0.6f);plotArea.Series.Add(series);FarPoint.Win.Chart.LabelArea label = new FarPoint.Win.Chart.LabelArea();label.Text = "Bar Chart";label.Location = new PointF(0.5f, 0.02f);label.AlignmentX = 0.5f;label.AlignmentY = 0.0f;FarPoint.Win.Chart.LegendArea legend = new FarPoint.Win.Chart.LegendArea();legend.Location = new PointF(0.98f, 0.5f);legend.AlignmentX = 1.0f;legend.AlignmentY = 0.5f;FarPoint.Win.Chart.ChartModel model = new FarPoint.Win.Chart.ChartModel();model.LabelAreas.Add(label);model.LegendAreas.Add(legend);model.PlotAreas.Add(plotArea);//How to add the Chart to Spread, requires the chart assembly//FarPoint.Win.Spread.Chart.SpreadChart chart = new FarPoint.Win.Spread.Chart.SpreadChart();//chart.Size = new Size(200, 200);//chart.Location = new Point(100, 100);//chart.Model = model;//fpSpread1.Sheets[0].Charts.Add(chart);//Or//How to use the chart outside of Spread, requires a chart control//fpChart1.Model = model;

VBDim series As New FarPoint.Win.Chart.BarSeries()series.Values.Add(2.0)series.Values.Add(4.0)series.Values.Add(3.0)series.Values.Add(5.0)Dim plotArea As New FarPoint.Win.Chart.YPlotArea()plotArea.Location = New PointF(0.2F, 0.2F)plotArea.Size = New SizeF(0.6F, 0.6F)plotArea.Series.Add(series)Dim label As New FarPoint.Win.Chart.LabelArea()label.Text = "Bar Chart"label.Location = New PointF(0.5F, 0.02F)label.AlignmentX = 0.5Flabel.AlignmentY = 0.0FDim legend As New FarPoint.Win.Chart.LegendArea()legend.Location = New PointF(0.98F, 0.5F)legend.AlignmentX = 1.0F

Spread Windows Forms Developer’s Guide 654

Copyright © GrapeCity, inc. All rights reserved.

Page 656: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

legend.AlignmentY = 0.5FDim model As New FarPoint.Win.Chart.ChartModel()model.LabelAreas.Add(label)model.LegendAreas.Add(legend)model.PlotAreas.Add(plotArea)'How to add the Chart to Spread, requires the chart assembly'Dim chart As New FarPoint.Win.Spread.Chart.SpreadChart()'chart.Size = New Size(200, 200)'chart.Location = New Point(100, 100)'chart.Model = model'FpSpread1.Sheets(0).Charts.Add(chart)'Or'How to use the chart outside of Spread, requires a chart control'fpChart1.Model = model;

Changing Chart Options

ManyoftheoptionsintheChartToolstabintheSpreadDesignerarealsoavailablewhenyouright-clickonachartcontrolthathasbeenaddedtotheSpreadcontrol.Youcanaccesstheseoptionsatdesigntimeorruntime.

Thefollowingoptionsareavailable:

TheCut,Copy,andPasteoptionsallowyoutocut,copy,andpastethechartcontrol.Deleteallowsyoutodeletethechartcontrol.TheChangeChartTypeoptionallowsyoutochangethecharttype(bartopie,forexample).TheSelectDatadialogallowsyoutochangetherangeofdatainthechartaswellasedittheseriesorcategorynames.TheSwitchRow/Columnoptionswapsthecategoryandseriesnamesandswapstherowsandcolumnsofdata.TheMoveChartoptionbringsupaMoveChartdialogthatallowsyoutomovethecharttoanothersheet

Spread Windows Forms Developer’s Guide 655

Copyright © GrapeCity, inc. All rights reserved.

Page 657: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

vieworanewsheet.TheFormatChartAreaoptionallowsyoutosetbackcolor,seriesshapes,etc.Theareathatyoucanformatdependsonwhatwasselectedbeforeyouright-clickedonthechart.TheChartDesigneroptionbringsupthechartdesigner.TheViewoptionallowsyoutosetthecharttoa3Dor2Dview.

TheChangeChartTypeoptionappearsasfollows:

TheSelectDatadialogappearsasfollows:

TheMoveChartdialogappearsasfollows:

Spread Windows Forms Developer’s Guide 656

Copyright © GrapeCity, inc. All rights reserved.

Page 658: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

TheFormatChartAreadialogappearsasfollows:

Using the Chart Designer

Youcanaddachartwiththechartdesigner.

UsingtheChartDesigner

Spread Windows Forms Developer’s Guide 657

Copyright © GrapeCity, inc. All rights reserved.

Page 659: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

1. UsetheEditChartsverbtoaddachartcontrol(orusetheInsertmenuintheSpreadDesigner).ThiscreatesaSpreadChartobjectontheform.

2. ClickthesmarttagorverboftheSpreadChartobject.3. SelecttheChartDesigner.

4. TheChartDesignerallowsyoutocreateachartandsetadditionaloptions.UsethePlotAreasCollectiontocreateplots,series,andadddata.UsetheLegendAreasCollectiontocreatealegendforthechart.UsetheLabelAreasCollectiontocreatelabelsforthechart.

5. ClickApplytosavethechanges.

Binding the Chart Control

Spread Windows Forms Developer’s Guide 658

Copyright © GrapeCity, inc. All rights reserved.

Page 660: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Aseriescontainsthreeparts(category,seriesname,anddata).Youcanbindeachparttoaninstanceoftheseriesdatafield.Theentirechartcontrolcannotbebound;however,youcanuseacellrangeoraformulatoputdatainthechart.

UsingCode

YoucanaddvaluestoSpreadwithanarrayordatasetandthenuseacellrangetoputthosevaluesinachartcontrol.Thisexampleusesanarraytoputdatainthecontrol.

Example

C#private void Form1_Load(object sender, System.EventArgs e){object[,] values = { { "lg1", "lg2", "lg3" }, { "tt1", 2.0, 5.0 }, {"tt2",4.0,5.0 } };fpSpread1.Sheets[0].SetArray(0, 0, values);FarPoint.Win.Spread.Model.CellRange cellRange = new FarPoint.Win.Spread.Model.CellRange(0,0,values.GetLength(0),values.GetLength(1));fpSpread1.Sheets[0].AddChart(cellRange, typeof(FarPoint.Win.Chart.BarSeries), 400, 400, 0, 0);}private void button1_Click(object sender, EventArgs e){FarPoint.Win.Chart.BarSeries series = (FarPoint.Win.Chart.BarSeries)fpSpread1.Sheets[0].Charts[0].Model.PlotAreas[0].Series[0];FarPoint.Win.Spread.Chart.SeriesDataField data = (FarPoint.Win.Spread.Chart.SeriesDataField)series.Values.DataSource;data.Formula = "Sheet1!$B$2:$E$1";}

VBPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim values As Object(,) = {{"lg1", "lg2", "lg3"}, {"tt1", 2.0R, 5.0R}, {"tt2", 4.0R, 5.0R}}FpSpread1.Sheets(0).SetArray(0, 0, values)Dim cellRange As New FarPoint.Win.Spread.Model.CellRange(0, 0, values.GetLength(0), values.GetLength(1))FpSpread1.Sheets(0).AddChart(cellRange, GetType(FarPoint.Win.Chart.BarSeries), 400, 400, 0, 0)End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim series As FarPoint.Win.Chart.BarSeries = DirectCast(FpSpread1.Sheets(0).Charts(0).Model.PlotAreas(0).Series(0), FarPoint.Win.Chart.BarSeries)Dim data As FarPoint.Win.Spread.Chart.SeriesDataField = DirectCast(series.Values.DataSource, FarPoint.Win.Spread.Chart.SeriesDataField)data.Formula = "Sheet1!$B$2:$E$1"End Sub

UsingCode

YoucanaddvaluestoSpreadwithanarrayordatasetandthenuseacellrangetoputthosevaluesinachartcontrol.Thisexampleusesadatatabletoputdatainthecontrol.

Spread Windows Forms Developer’s Guide 659

Copyright © GrapeCity, inc. All rights reserved.

Page 661: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Example

C#DataTable dt = new DataTable("Test");DataRow dr = default(DataRow);dt.Columns.Add("Series1");dt.Columns.Add("Series2");dr = dt.NewRow();dr[0] = 1;dr[1] = 4;dt.Rows.Add(dr);dr = dt.NewRow();dr[0] = 2;dr[1] = 5;dr = dt.NewRow();dt.Rows.Add(dr);dr[0] = 3;dr[1] = 6;dt.Rows.Add(dr);fpSpread1.DataSource = dt;FarPoint.Win.Spread.Model.CellRange cellRange = new FarPoint.Win.Spread.Model.CellRange(0,0,2,2);fpSpread1.Sheets[0].AddChart(cellRange, typeof(FarPoint.Win.Chart.BarSeries), 400,400,0,0);

VBDim dt As New DataTable("Test")Dim dr As DataRowdt.Columns.Add("Series1")dt.Columns.Add("Series2")dr = dt.NewRow()dr(0) = 1dr(1) = 4dt.Rows.Add(dr)dr = dt.NewRow()dr(0) = 2dr(1) = 5dt.Rows.Add(dr)dr = dt.NewRow()dr(0) = 3dr(1) = 6dt.Rows.Add(dr)FpSpread1.DataSource = dtDim cellRange As New FarPoint.Win.Spread.Model.CellRange(0, 0, 2, 2)FpSpread1.Sheets(0).AddChart(cellRange, GetType(FarPoint.Win.Chart.BarSeries), 400, 400, 0, 0)

Allowing the User to Change the Chart

Youcanallowtheuserstoresize,move,orchangetherangeofelementsdisplayedbythechart.TheusercanalsoselectelementsonthechartandtherelatedcellrangeintheSpreadcontrolwillbeselected.

Theusercanmakethefollowingchangesatruntime.

Spread Windows Forms Developer’s Guide 660

Copyright © GrapeCity, inc. All rights reserved.

Page 662: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Theusercanselectthechartandthenmoveorresizethechart.Theusercanselectthechartandthentherangeofdatausedbythechart.Thentheycanresizetheblockofselecteddatatochangetherangeofdatainthechart.Theusercaneditthecellsusedbythecharttochangethevalues.

Thefollowingimageshowsaselectedrangeofdatausedbythechart.Putthemousepointeroverthebluesquaretogetresizearrows.

Youcanpreventtheuserfrommovingorresizingthechart.TheLockedpropertypreventstheuserfrommovingandresizingthechartcontrol.

UsingCode

ThisexamplesetstheLocked,CanMove,andCanResizeproperties.

Example

C#FarPoint.Win.Spread.Chart.SpreadChart chart;chart = fpSpread1.Sheets[0].AddChart(0, 0, typeof(FarPoint.Win.Chart.BarSeries), 400, 400, 200, 80, FarPoint.Win.Chart.ChartViewType.View2D, true);chart.Locked = true;//chart.CanSize = FarPoint.Win.Spread.DrawingSpace.Sizing.None;//chart.CanMove = FarPoint.Win.Spread.DrawingSpace.Moving.Horizontal;

VBDim chart As FarPoint.Win.Spread.Chart.SpreadChartDim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, 7, 4)chart = FpSpread1.Sheets(0).AddChart(range, GetType(FarPoint.Win.Chart.BarSeries), 400, 300, 300, 80, FarPoint.Win.Chart.ChartViewType.View3D, False)chart.Locked = True'chart.CanSize = FarPoint.Win.Spread.DrawingSpace.Sizing.None'chart.CanMove = FarPoint.Win.Spread.DrawingSpace.Moving.Horizontal

Spread Windows Forms Developer’s Guide 661

Copyright © GrapeCity, inc. All rights reserved.

Page 663: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Adding a Context Menu

Youcanaddacontextmenutotheformforthechartcontrolsothatwhenyouright-clickonthechart,youseethecontextmenu.Youcanaddthecontextmenuatdesigntimeorwithcode.Formoreinformationonusingcode,seetheContextMenuStrip('ContextMenuStripProperty'intheon-linedocumentation)property.

UsingtheDesigner

1. Addacontextmenucontroltotheform.2. AddachartcontroltotheformusingtheSpreadDesigner.3. ClickontheSpreadChartsmarttagorverb.

4. Selectthecontextmenuyouwishtoassociatewiththechartcontrol.

Spread Windows Forms Developer’s Guide 662

Copyright © GrapeCity, inc. All rights reserved.

Page 664: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Using Touch Support with the Component

Spreadsupportstouchgesturesinmanyareasofthecontrol.Youcanusetouchgestureswithfiltering,grouping,sorting,andwithmanyothertypesofinteractionsinSpread.Atouchscreenisrequired(eitheratouchmonitororasmartbook-typelaptopwithatouchscreen).

Thefollowingtopicsprovideinformationabouttouchsupportandtheareaswheretouchsupportisavailable:

UnderstandingTouchSupportUsingTouchSupport

Understanding Touch Support

Touchsupportrequiresthatthecontrolsupportbasictouchgestures.Touchmessagesareprocessedbythecontrolwhentouchgesturesareused.

Thefollowingtopicsprovideadditionalinformation:

UnderstandingTouchGesturesUnderstandingTouchMessages

Understanding Touch Gestures

Thereareseveraltypesoftouchgesturessuchasbasicorcommonandpinchorstretch.

Basictouchgesturesincludethefollowing:

Gesture Description

Tap Onefingertouchesthescreenandliftsup.

Pressandhold Onefingertouchesthescreenandstaysinplace.

Slide Oneormorefingerstouchthescreenandmoveinthesamedirection.

Swipe Oneormorefingerstouchthescreenandmoveashortdistanceinthesamedirection.

Pinch Twoormorefingerstouchthescreenandmovefartherapartorclosertogether.

Rotate Twoormorefingerstouchthescreenandmoveinaclockwiseorcounter-clockwisearc.

Switch Twoormorefingerstouchthescreenandmovefartherapart.

FpSpreadusesstandardpinchandstretchgestureswhenzooming.Formoreinformation,seehttp://msdn.microsoft.com/en-us/library/windows/apps/hh465415.aspx.

Understanding Touch Messages

Touchmessagesareprocessedincellareas(Tap,Panning,Pinch,andsoon);however,inheaderandfooterareas(columnheader,rowheader,corner,andcolumnfooter)andthescrollbararea,touchmessagesaretreatedasmousemessages.

Forexample,apanningoperationonthecolumnheaderbecomesacolumnselectionaction(similartousingthemouse).Spreaddoesnotscroll.

FpSpreadprovidesanInputDeviceType('InputDeviceTypeProperty'intheon-linedocumentation)propertythatreturnsthemessage'sdevicetype.

Spread Windows Forms Developer’s Guide 663

Copyright © GrapeCity, inc. All rights reserved.

Page 665: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Using Touch Support

YoucanusetouchsupportinmanyareasandinmanytypesofinteractionswiththeSpreadcontrol.

Thefollowingtopicsexplainwheretouchsupportisavailable:UsingaTouchKeyboardUsingtheTouchMenuBarUsingTouchSupportwithAutoFitUsingTouchSupportwithCellNotesUsingTouchSupportwithChartsUsingTouchSupportwithClipboardOperationsUsingTouchSupportwithDragandFillUsingTouchSupportwithDrop-DownElementsUsingTouchSupportwithEditableCellsUsingTouchSupportwithInputManCellsUsingTouchSupportwithFilteringUsingTouchSupportwithGroupingUsingTouchSupportwithRangeGroupingUsingTouchSupportwhenMovingColumnsorRowsUsingTouchSupportwhenResizingColumnsorRowsUsingTouchSupportwithScrollingUsingTouchSupportwithSelectionsUsingTouchSupportwithShapesUsingTouchSupportwhenSortingUsingTouchSupportwiththeTabStripUsingTouchSupportwithViewportsUsingTouchSupportwithZooming

Using a Touch Keyboard

Youcandisplayatouchkeyboardwheneditingacell.

UsetheShowTouchKeyboard('ShowTouchKeyboardMethod'intheon-linedocumentation)methodtodisplaythekeyboardasinthefollowingimage.

YoucanalsospecifywhetherthecellbeingeditedscrollsintoviewwhenthetouchkeyboardisdisplayedbysettingtheAutoScrollWhenKeyboardShowing('AutoScrollWhenKeyboardShowingProperty'intheon-linedocumentation)property.FpSpreadwillscrollupassoonaspossible,butifthereisnotenoughspacetoscroll,theactivecellmaynotbevisible.Forexample,ifthecontroliscompletelycoveredbythetouchkeyboard,thecontrolscrolls

Spread Windows Forms Developer’s Guide 664

Copyright © GrapeCity, inc. All rights reserved.

Page 666: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

theactivecelltothefirstrow(cellstillhiddenbykeyboard).

FpSpreadprovidesanInputScope('InputScopeProperty'intheon-linedocumentation)propertythatcanbeusedtospecifythetouchkeyboard'slayout.ThispropertyissupportedinMicrosoftWindows8andWindowsServer2012.

YoucanusetheShowTouchKeyboard('ShowTouchKeyboardMethod'intheon-linedocumentation)andHideTouchKeyboard('HideTouchKeyboardMethod'intheon-linedocumentation)methodsintheEditModeOn('EditModeOnEvent'intheon-linedocumentation)eventtoshowthetouchkeyboardwhenthecellgoesintoeditmode.

UsingCode

Thefollowingexampledisplaysthetouchkeyboardwhenthecellisineditmodeandhidesitwhenthecellisnolongerineditmode.

CSprivate void Form1_Load(object sender, EventArgs e) { fpSpread1.AutoScrollWhenKeyboardShowing = true; fpSpread1.InputScope = FarPoint.Win.InputScopeNameValue.Default; }

private void fpSpread1_EditModeOn(object sender, EventArgs e) { fpSpread1.ShowTouchKeyboard(); }

private void fpSpread1_EditModeOff(object sender, EventArgs e) { fpSpread1.HideTouchKeyboard(); }

VBPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load FpSpread1.AutoScrollWhenKeyboardShowing = True FpSpread1.InputScope = FarPoint.Win.InputScopeNameValue.DefaultEnd Sub

Private Sub FpSpread1_EditModeOn(sender As Object, e As System.EventArgs) Handles FpSpread1.EditModeOn FpSpread1.ShowTouchKeyboard()End Sub

Private Sub FpSpread1_EditModeOff(sender As Object, e As System.EventArgs) Handles FpSpread1.EditModeOff FpSpread1.HideTouchKeyboard()End Sub

Using the Touch Menu Bar

Youcanusethedefaulttouchmenubarortouchstriptocut,copy,andpastecells.Youcanalsocustomizethetouchstriptoprovideadditionaloptions.

Tapaselectedrangetodisplaythetouchmenubarstrip.

Spread Windows Forms Developer’s Guide 665

Copyright © GrapeCity, inc. All rights reserved.

Page 667: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanusetheTouchStripOpening('TouchStripOpeningEvent'intheon-linedocumentation)eventtodisplayacustomizedtouchstrip.Youcanalsoaddmenuitemstothetouchstrip.

UsingCode

Youcanaddadrop-downmenuitemwithfollowingcode.Thisexamplealsohidesthe"Cut"optioninthetouchstrip.

1. CancelthedefaulttouchstripintheTouchStripOpening('TouchStripOpeningEvent'intheon-linedocumentation)event.

2. Createacustomizedtouchstripitem.3. Createandaddamenuitem4. Addthenewitemstothetouchstrip.

CSvoid autoFill_Click(object sender, EventArgs e) { FarPoint.Win.Spread.SpreadView activeView = fpSpread1.GetRootWorkbook().GetActiveWorkbook(); if (activeView != null) { activeView.ShowAutoFillIndicator(); } }

private void fpSpread1_TouchStripOpening(object sender, FarPoint.Win.Spread.TouchStripOpeningEventArgs e) { e.Cancel = true; FarPoint.Win.Spread.CellTouchStrip touchStrip = new FarPoint.Win.Spread.CellTouchStrip(this.fpSpread1); touchStrip.Items["Cut"].Visible = false; ToolStripSeparator separator1 = new ToolStripSeparator(); FarPoint.Win.Spread.TouchStripButton autoFill = new FarPoint.Win.Spread.TouchStripButton("AutoFill", System.Drawing.Image.FromFile("C:\\SpreadWin7\\dragfill.png")); autoFill.Click += autoFill_Click;

ToolStripSeparator separator2 = new ToolStripSeparator(); ToolStripDropDownButton dropDownMenu = new ToolStripDropDownButton(System.Drawing.Image.FromFile("C:\\SpreadWin7\\dropdown.png")); dropDownMenu.ShowDropDownArrow = false; dropDownMenu.ImageScaling = ToolStripItemImageScaling.None; ContextMenuStrip menu = new System.Windows.Forms.ContextMenuStrip(); menu.Items.Add("Item1"); dropDownMenu.DropDown = menu;

touchStrip.Items.AddRange(new ToolStripItem[] { separator1, autoFill, separator2, dropDownMenu }); touchStrip.Show(new Point(e.X - 20, e.Y - 35 - touchStrip.Height));

Spread Windows Forms Developer’s Guide 666

Copyright © GrapeCity, inc. All rights reserved.

Page 668: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

}

VBPrivate Sub autoFill_Click(sender As Object, e As EventArgs)Dim activeView As FarPoint.Win.Spread.SpreadView = fpSpread1.GetRootWorkbook().GetActiveWorkbook()If activeView IsNot Nothing ThenactiveView.ShowAutoFillIndicator()End IfEnd Sub

Private Sub fpSpread1_TouchStripOpening(sender As Object, e As FarPoint.Win.Spread.TouchStripOpeningEventArgs)e.Cancel = TrueDim touchStrip As New FarPoint.Win.Spread.CellTouchStrip(Me.fpSpread1)touchStrip.Items("Cut").Visible = FalseDim separator1 As New ToolStripSeparator()Dim autoFill As New FarPoint.Win.Spread.TouchStripButton("AutoFill", System.Drawing.Image.FromFile("C:\SpreadWin7\dragfill.png")) AddHandler autoFill.Click, AddressOf autoFill_Click

Dim separator2 As New ToolStripSeparator()Dim dropDownMenu As New ToolStripDropDownButton(System.Drawing.Image.FromFile("C:\SpreadWin7\dropdown.png"))dropDownMenu.ShowDropDownArrow = FalsedropDownMenu.ImageScaling = ToolStripItemImageScaling.NoneDim menu As ContextMenuStrip = New System.Windows.Forms.ContextMenuStrip()menu.Items.Add("Item1")dropDownMenu.DropDown = menu

touchStrip.Items.AddRange(New ToolStripItem() {separator1, autoFill, separator2, dropDownMenu})touchStrip.Show(New Point(e.X - 20, e.Y - 35 - touchStrip.Height))End Sub

Using Touch Support with AutoFit

Youcanusetouchsupportgestureswithautomaticfit.

Taptoselectacolumn(resizehandlerbecomesvisible).Double-taptoresizethecolumnautomatically.Taptoselectarowanddouble-taptoresizetherowautomatically.TheResizable('ResizableProperty'intheon-linedocumentation)propertymustbetrueforthecolumnandrow.

Using Touch Support with Cell Notes

Youcanusetouchgestureswitheditablecellnotes.

Tapacellnotetoselectit.Double-tapthecellnotetoeditit.Presstheedgeofthecellnoteandslidethenotetomoveit.

SettheCanMove('CanMoveProperty'intheon-linedocumentation)andCanSize('CanSizeProperty'intheon-linedocumentation)propertiestotrueinordertomoveorresizethecellnote.TheNoteStyle('NoteStyleProperty'intheon-linedocumentation)propertymustbesettoStickyNotefortouchsupport.

Using Touch Support with Charts

Spread Windows Forms Developer’s Guide 667

Copyright © GrapeCity, inc. All rights reserved.

Page 669: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanusetouchgestureswiththeChartcontrol.

TheChartcontrolusesthefollowingtouchgestures:

TouchGesture MouseAction Action

Tap Click Selectsacellnote,shape,orchart.

Double-tap Double-Click Editsacellnote,shape,orchartifeditingissupported.

Pressedgethenslide Pressleftbuttononedgethenmove Resizesacellnote,shape,orchartifCanSizeissettotrue.

Presschartthenslide Pressleftbuttononchartthenmove Movesacellnote,shape,orchartifCanMoveissettotrue.

Pressrotatedhandleandslide

Pressleftbuttononrotatedhandleandmove

RotatesashapeorchartifCanRotateissettotrue.

Using Touch Support with Clipboard Operations

Youcanusetouchgesturesandthetouchmenubartocut,copy,andpaste.

Selectarangeofcells.Taptheselectedrangetodisplaythetouchmenubaroptions.TaptheCut,Copy,orPastemenuitems.

TheClipboardOptions('ClipboardOptionsProperty'intheon-linedocumentation)propertyspecifieswhatareasarepartofthecut,copy,orpaste.

Using Touch Support with Drag and Fill

Spread Windows Forms Developer’s Guide 668

Copyright © GrapeCity, inc. All rights reserved.

Page 670: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanusetouchsupportgesturesandthetouchmenubarortoolbarwithdragandfill.

Selectarange.Taptherangetodisplaythetouchmenubar.TaptheAutoFillmenuitemtodisplaythedragfillhandleatthebottom-rightedgeoftheselectedrange.Pressandslidethehandletodragandfilltherange.TheAllowDragFill('AllowDragFillProperty'intheon-linedocumentation)propertymustbetruetodisplayandusethedragfillhandle.

UsingCode

Thisexampleaddsthedragfillicontothetouchmenubar.

1. SettheAllowDragFill('AllowDragFillProperty'intheon-linedocumentation)propertytotrue.2. CreateanewtouchstripbuttonandseparatorintheTouchStripOpening('TouchStripOpeningEvent'intheon-linedocumentation)event.

3. Createanimageforthenewbutton.4. Addthenewitemstothetouchstrip.5. Createanduseaneventtodisplaytheautofillindicator.

CSvoid autoFill_Click(object sender, EventArgs e) { FarPoint.Win.Spread.SpreadView activeView = fpSpread1.GetRootWorkbook().GetActiveWorkbook(); if (activeView != null) { activeView.ShowAutoFillIndicator(); } }

private void Form1_Load(object sender, EventArgs e) { fpSpread1.AllowDragFill = true; } private void fpSpread1_TouchStripOpening(object sender, FarPoint.Win.Spread.TouchStripOpeningEventArgs e) { e.Cancel = true; FarPoint.Win.Spread.CellTouchStrip touchStrip = new FarPoint.Win.Spread.CellTouchStrip(fpSpread1); ToolStripSeparator separator = new ToolStripSeparator(); FarPoint.Win.Spread.TouchStripButton autoFill = new

Spread Windows Forms Developer’s Guide 669

Copyright © GrapeCity, inc. All rights reserved.

Page 671: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FarPoint.Win.Spread.TouchStripButton("AutoFill", System.Drawing.Image.FromFile("C:\\SpreadWin7\\dragfill.png") ); autoFill.Click += autoFill_Click; touchStrip.Items.AddRange(new ToolStripItem[] { separator, autoFill }); touchStrip.Show(new Point(e.X - 20, e.Y - 35 - touchStrip.Height)); }

VBPrivate Sub autoFill_Click(sender As Object, e As EventArgs) Dim activeView As FarPoint.Win.Spread.SpreadView = fpSpread1.GetRootWorkbook().GetActiveWorkbook() If activeView IsNot Nothing Then activeView.ShowAutoFillIndicator() End IfEnd Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load FpSpread1.AllowDragFill = TrueEnd SubPrivate Sub fpSpread1_TouchStripOpening(sender As Object, e As FarPoint.Win.Spread.TouchStripOpeningEventArgs) e.Cancel = True Dim touchStrip As New FarPoint.Win.Spread.CellTouchStrip(fpSpread1) Dim separator As New ToolStripSeparator() Dim autoFill As New FarPoint.Win.Spread.TouchStripButton("AutoFill", System.Drawing.Image.FromFile("C:\SpreadWin7\dragfill.png")) AddHandler autoFill.Click, AddressOf autoFill_Click touchStrip.Items.AddRange(New ToolStripItem() {separator, autoFill}) touchStrip.Show(New Point(e.X - 20, e.Y - 35 - touchStrip.Height))End Sub

Using Touch Support with Drop-Down Elements

Youcanusetouchgesturesindrop-downcells,calendars,andotherelementsinthecontrol.

Thefollowingitemsaredrop-downelementsorwindows:

FilterDropDown(Gadget)FilterDropDown(FilterBar'sDropDown)DropDownList(ComboCellType)DropDownCalendar(DateTimeCellType)DropDownCalendar(GcDateTimeCellType)DropDownEdit(GcTextCellType)

SettheTouchDropDownScale('TouchDropDownScaleProperty'intheon-linedocumentation)propertytochangethescaleoftheelementsinthedrop-downwindow.Thedefaultvalueis1.5.Thefollowingdrop-downfilterhasascaleof2.

Spread Windows Forms Developer’s Guide 670

Copyright © GrapeCity, inc. All rights reserved.

Page 672: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Note:IftheTouchDropDownScale('TouchDropDownScaleProperty'intheon-linedocumentation)propertyissetto0,alldrop-downwindowsarezoomedinmouseortouchmode.IftheTouchDropDownScale('TouchDropDownScaleProperty'intheon-linedocumentation)propertyissettoavalidvalue(1fto4f),thenpaddingisincreasedfortouchsupportbasedonthepropertyvalue.

UsingCode

SettheTouchDropDownScale('TouchDropDownScaleProperty'intheon-linedocumentation)propertytochangethescaleofthedrop-downwindow.

CSFpSpread1.TouchDropDownScale = 1.0F;FpSpread1.TouchSelectionGripperBackColor = Color.Aqua;FpSpread1.TouchSelectionGripperLineColor = Color.BurlyWood;FpSpread1.TouchSelectionGripperThickness = 2;

VBFpSpread1.TouchDropDownScale = 1.0FFpSpread1.TouchSelectionGripperBackColor = Color.AquaFpSpread1.TouchSelectionGripperLineColor = Color.BurlyWoodFpSpread1.TouchSelectionGripperThickness = 2

Using Touch Support with Editable Cells

Youcanusetouchgesturestoeditcellsthatallowediting.

Double-tapacelltogointoeditmode.TapacelltogointoeditmodeiftheEditModePermanent('EditModePermanentProperty'intheon-linedocumentation)propertyistrue.Typingacharacterinthecellalsostartseditmode.

Button,checkbox,multipleoption,hyperlink,slider,andfilterbarcellsusethefollowingtouchgestures:

TouchGesture MouseAction

Tap Click

Double-tap Double-click

Pressandslide Pressleftmousebuttonandmove

GcTextBox,GcDateTime,number,regularexpression,percent,currency,datetime,general,andtextcellshavesimilartouchbehaviors.

Spread Windows Forms Developer’s Guide 671

Copyright © GrapeCity, inc. All rights reserved.

Page 673: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Listboxandrichtextcellssupporttouchgesturessimilartostandardcontrols.

IftheEditablepropertyistrueforthecomboboxandmultiple-columncomboboxcells,thegripperisdisplayed.Thefollowingimagedisplaysagripperinthecell.

UsingCode

YoucansettheShowGrippersInEditingStatus('ShowGrippersInEditingStatusProperty'intheon-linedocumentation)propertytotruetodisplayagripperwhilethecellisineditmode.

CSprivate void Form1_Load(object sender, EventArgs e) { fpSpread1.ShowGrippersInEditingStatus = true; }

private void button1_Click(object sender, EventArgs e) { fpSpread1.ShowGrippersInEditingStatus = false; }

private void fpSpread1_ShowGrippersInEditingStatusChanged(object sender, EventArgs e) { listBox1.Items.Add("Status Changed"); }

VBPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load FpSpread1.ShowGrippersInEditingStatus = TrueEnd Sub

Private Sub FpSpread1_ShowGrippersInEditingStatusChanged(sender As Object, e As EventArgs) Handles FpSpread1.ShowGrippersInEditingStatusChanged ListBox1.Items.Add("Status Changed")End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click FpSpread1.ShowGrippersInEditingStatus = FalseEnd Sub

Using Touch Support with InputMan Cells

YoucanusetouchsupportwithGcDateTimeandGcTextBoxcells.

Youcantapsidebuttonsinthecellstochangethecellvalues.

Spread Windows Forms Developer’s Guide 672

Copyright © GrapeCity, inc. All rights reserved.

Page 674: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingCode

ThefollowingexamplecreatessidebuttonsforGcDateTimecellsandaGcTextBoxcell.TheDropDownOpeningeventhasaByTouchpropertythatreturnswhetherthedrop-downbuttonwasopenedwithatouchgesture.

CSGrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo testbutton = new GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo();testbutton.Behavior = GrapeCity.Win.Spread.InputMan.CellType.SideButtonBehavior.SpinDown;testbutton.Delay = 300;testbutton.Interval = 5;testbutton.Text = "1";

GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType dateCellType = new GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType();dateCellType.SideButtons.Add(new GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo() { Text = "A" });this.fpSpread1_Sheet1.Columns[0].CellType = dateCellType;

GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType textCellType = new GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();textCellType.SideButtons.Add(new GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo() { Text = "B" });this.fpSpread1_Sheet1.Columns[1].CellType = textCellType;

GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType dateCellType2 = new GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType();dateCellType2.SideButtons.Add(testbutton);this.fpSpread1_Sheet1.Columns[2].CellType = dateCellType2;

void IMCellType_DropDownOpening(object sender, GrapeCity.Win.Spread.InputMan.CellType.DropDownOpeningEventArgs e) { listBox1.Items.Add(e.ByTouch.ToString()); }

private void fpSpread1_EditModeOn(object sender, EventArgs e) { if (fpSpread1.EditingControl is

Spread Windows Forms Developer’s Guide 673

Copyright © GrapeCity, inc. All rights reserved.

Page 675: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

GrapeCity.Win.Spread.InputMan.CellType.GcDateTime) ((GrapeCity.Win.Spread.InputMan.CellType.GcDateTime)fpSpread1.EditingControl).DropDownOpening += new EventHandler(IMCellType_DropDownOpening); }

private void fpSpread1_EditModeOff(object sender, EventArgs e) { if (fpSpread1.EditingControl is GrapeCity.Win.Spread.InputMan.CellType.GcDateTime) ((GrapeCity.Win.Spread.InputMan.CellType.GcDateTime)fpSpread1.EditingControl).DropDownOpening -= new EventHandler(IMCellType_DropDownOpening); }

VBDim testbutton As New GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo()testbutton.Behavior = GrapeCity.Win.Spread.InputMan.CellType.SideButtonBehavior.SpinDowntestbutton.Delay = 300testbutton.Interval = 5testbutton.Text = "1"

Dim dateCellType As New GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType()dateCellType.SideButtons.Add(New GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo() With {.Text = "A"})FpSpread1_Sheet1.Columns(0).CellType = dateCellType

Dim textCellType = New GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType()textCellType.SideButtons.Add(New GrapeCity.Win.Spread.InputMan.CellType.SideButtonInfo() With {.Text = "B"})FpSpread1_Sheet1.Columns(1).CellType = textCellType

Dim dateCellType2 As New GrapeCity.Win.Spread.InputMan.CellType.GcDateTimeCellType()dateCellType2.SideButtons.Add(testbutton)FpSpread1_Sheet1.Columns(2).CellType = dateCellType2

Private Sub IMCellType_DropDownOpening(ByVal sender As Object, ByVal e As GrapeCity.Win.Spread.InputMan.CellType.DropDownOpeningEventArgs) ListBox1.Items.Add(e.ByTouch.ToString()) End Sub

Private Sub FpSpread1_EditModeOff(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOff If TypeOf (FpSpread1.EditingControl) Is GrapeCity.Win.Spread.InputMan.CellType.GcDateTime Then RemoveHandler CType(FpSpread1.EditingControl, GrapeCity.Win.Spread.InputMan.CellType.GcDateTime).DropDownOpening, AddressOf IMCellType_DropDownOpening End If End Sub

Private Sub FpSpread1_EditModeOn(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOn If TypeOf (FpSpread1.EditingControl) Is GrapeCity.Win.Spread.InputMan.CellType.GcDateTime Then AddHandler CType(FpSpread1.EditingControl, GrapeCity.Win.Spread.InputMan.CellType.GcDateTime).DropDownOpening, AddressOf IMCellType_DropDownOpening End If

Spread Windows Forms Developer’s Guide 674

Copyright © GrapeCity, inc. All rights reserved.

Page 676: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

End Sub

Using Touch Support with Filtering

Youcanusetouchgestureswhenfiltering.

UsetheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)propertytoincreasethesizeofthedrop-downlist.TheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)propertymustbetruetoallowfilteringwithtouchgestures.

Note:Iftheuserselectsacolumnthatcontainssortingandfilteringindicators,theresizegripperisdisplayed.Thegripperhasahigherprioritythanthefilterlistorsortoperation.SettheHeaderIndicatorPositionAdjusting('HeaderIndicatorPositionAdjustingProperty'intheon-linedocumentation)propertytospecifythedistancebetweenthesortingandfilteringindicatorsandtherightedgeofthecolumnsothattheusercansortorfilterthecolumnwhilethegripperisdisplayed.

UsingCode

ThefollowingexamplesetstheAllowAutoFilter('AllowAutoFilterProperty'intheon-linedocumentation)andZoomFactor('ZoomFactorProperty'intheon-linedocumentation)properties.

CSfpSpread1.ActiveSheet.Columns[1].AllowAutoFilter = true;fpSpread1.ActiveSheet.ZoomFactor = 2;

VBFpSpread1.ActiveSheet.Columns(1).AllowAutoFilter = TrueFpSpread1.ActiveSheet.ZoomFactor = 2

Using Touch Support with Grouping

Youcanusetouchgestureswhengrouping.

Pressdownonacolumnheaderandthenslidetothegroupbararea.Releasetocreateagroup.

Tapthegroupheaderbuttonareatosort.

Youcanchangethegrouporder.Pressdownonthegroupheaderbuttonandthenslide.Releaseoverthetargetpositiontochangetheorder.

Youcanexpandorcollapsethegroupbytappingtheplusorminussymbol.

SettheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)propertytochangethesizeofthe

Spread Windows Forms Developer’s Guide 675

Copyright © GrapeCity, inc. All rights reserved.

Page 677: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

control.Touchgesturesareeasiertouseifthecontroliszoomed.

SettheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation),AllowGroup('AllowGroupProperty'intheon-linedocumentation),andGroupBarInfo.Visible('VisibleProperty'intheon-linedocumentation)propertiestotruetoallowgroupingwithtouchgestures.

UsingCode

ThefollowingexamplesetstheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation),AllowGroup('AllowGroupProperty'intheon-linedocumentation),GroupBarInfo.Visible('VisibleProperty'intheon-linedocumentation),andZoomFactor('ZoomFactorProperty'intheon-linedocumentation)properties.

CSfpSpread1.AllowColumnMove = true;fpSpread1.ActiveSheet.GroupBarInfo.Visible = true;fpSpread1.ActiveSheet.AllowGroup = true;fpSpread1.ActiveSheet.ZoomFactor = 2;

VBFpSpread1.AllowColumnMove = TrueFpSpread1.ActiveSheet.GroupBarInfo.Visible = TrueFpSpread1.ActiveSheet.AllowGroup = TrueFpSpread1.ActiveSheet.ZoomFactor = 2

Using Touch Support with Range Grouping

Youcanusetouchgestureswhenexpandingorcollapsingrangegroups.

Taptheexpandorcollapsebuttontoexpandorcollapsetherangegroup.

SettheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)propertytochangethesizeofthecontrol.Touchgesturesareeasiertouseifthecontroliszoomed.

UsingCode

ThefollowingcodecreatesarangeoroutlinegroupandsetstheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)property.

CSfpSpread1.ActiveSheet.Rows.Count = 11;

Spread Windows Forms Developer’s Guide 676

Copyright © GrapeCity, inc. All rights reserved.

Page 678: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.ActiveSheet.Columns.Count = 6;fpSpread1.InterfaceRenderer = null;fpSpread1.ActiveSheet.RangeGroupBackgroundColor = Color.LightGreen;fpSpread1.ActiveSheet.RangeGroupButtonStyle = FarPoint.Win.Spread.RangeGroupButtonStyle.Enhanced;fpSpread1.ActiveSheet.AddRangeGroup(0, 8, true);fpSpread1.ActiveSheet.AddRangeGroup(0, 5, true);fpSpread1.ActiveSheet.AddRangeGroup(1, 3, false);fpSpread1.ActiveSheet.AddRangeGroup(1, 2, false);fpSpread1.ZoomFactor = 2;

VBFpSpread1.ActiveSheet.Rows.Count = 11FpSpread1.ActiveSheet.Columns.Count = 6FpSpread1.InterfaceRenderer = NothingFpSpread1.ActiveSheet.RangeGroupBackgroundColor = Color.LightGreenFpSpread1.ActiveSheet.RangeGroupButtonStyle = FarPoint.Win.Spread.RangeGroupButtonStyle.EnhancedFpSpread1.ActiveSheet.AddRangeGroup(0, 8, True)FpSpread1.ActiveSheet.AddRangeGroup(0, 5, True)FpSpread1.ActiveSheet.AddRangeGroup(1, 3, False)FpSpread1.ActiveSheet.AddRangeGroup(1, 2, False)FpSpread1.ZoomFactor = 2

Using Touch Support when Moving Columns or Rows

Youcanusetouchgesturestomovecolumnsorrows.

Pressthecolumnheaderorrowheadertoselectit,thenslidetothetargetlocation.Releasetomovethecolumnorrow.

Selectacolumnorrowheaderrangeandthenpressandslidetomovetherange.Releasetocompletetheaction.

TheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)propertymustbetruetomovecolumns.AllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)andAllowColumnMoveMultiple('AllowColumnMoveMultipleProperty'intheon-linedocumentation)mustbetruetomovemultiplecolumns.TheAllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)propertymustbetruetomoverows.AllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)andAllowRowMoveMultiple('AllowRowMoveMultipleProperty'intheon-linedocumentation)mustbetruetomovemultiplerows.TheAllowRowMoveDataAllowAddNew

Spread Windows Forms Developer’s Guide 677

Copyright © GrapeCity, inc. All rights reserved.

Page 679: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

('AllowRowMoveDataAllowAddNewProperty'intheon-linedocumentation)propertymustbetruetomovearowbelowtheaddnewroworasteriskrow.

RefertoUsingTouchSupportwithSelectionsformoreinformationonhowtoselectacolumnorrow.

UsingCode

ThisexamplesetstheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation),AllowColumnMoveMultiple('AllowColumnMoveMultipleProperty'intheon-linedocumentation),AllowRowMove('AllowRowMoveProperty'intheon-linedocumentation),andAllowRowMoveMultiple('AllowRowMoveMultipleProperty'intheon-linedocumentation)properties.

CSfpSpread1.AllowColumnMove = true;fpSpread1.AllowColumnMoveMultiple = true;fpSpread1.AllowRowMove = true;fpSpread1.AllowRowMoveMultiple = true;

VBFpSpread1.AllowColumnMove = TrueFpSpread1.AllowColumnMoveMultiple = TrueFpSpread1.AllowRowMove = TrueFpSpread1.AllowRowMoveMultiple = True

UsingCode

ThisexamplesetstheAllowRowMoveDataAllowAddNew('AllowRowMoveDataAllowAddNewProperty'intheon-linedocumentation)propertyafterbindingthecontrol.TheDataAllowAddNew('DataAllowAddNewProperty'intheon-linedocumentation)propertymustbetruetoallowtheasteriskrow.

CSDataSet ds = new DataSet();DataTable emp = new DataTable("Employees");DataTable div = new DataTable("Division");emp.Columns.Add("LastName");emp.Columns.Add("FirstName");emp.Rows.Add(new Object[] { "Jones", "Marianne" });emp.Rows.Add(new Object[] { "Fieldes", "Anna" });div.Columns.Add("Section");div.Columns.Add("Specialty");div.Rows.Add(new Object[] { "Finance", "Taxes" });div.Rows.Add(new Object[] { "Mergers", "Legal" });ds.Tables.AddRange(new DataTable[] { emp, div });fpSpread1.DataSource = ds;fpSpread1.DataMember = "Division";fpSpread1.AllowRowMove = true;fpSpread1.AllowRowMoveMultiple = true;fpSpread1.ActiveSheet.DataAllowAddNew = true;fpSpread1.AllowRowMoveDataAllowAddNew = true;

VBDim ds As New DataSet()Dim emp As New DataTable("Employees")Dim div As New DataTable("Division")

Spread Windows Forms Developer’s Guide 678

Copyright © GrapeCity, inc. All rights reserved.

Page 680: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

emp.Columns.Add("LastName")emp.Columns.Add("FirstName")emp.Rows.Add(New Object() {"Jones", "Marianne"})emp.Rows.Add(New Object() {"Fieldes", "Anna"})div.Columns.Add("Section")div.Columns.Add("Specialty")div.Rows.Add(New Object() {"Finance", "Taxes"})div.Rows.Add(New Object() {"Mergers", "Legal"})ds.Tables.AddRange(New DataTable() {emp, div})fpSpread1.DataSource = dsfpSpread1.DataMember = "Division"fpSpread1.AllowRowMove = TruefpSpread1.AllowRowMoveMultiple = TruefpSpread1.ActiveSheet.DataAllowAddNew = TruefpSpread1.AllowRowMoveDataAllowAddNew = True

Using Touch Support when Resizing Columns or Rows

Youcanresizecolumnsorrowsusingtouchgestures.

Selectacolumnorrow(taptoselect),pressthecolumnorrowresizehandleandslidetochangethewidthorheight,andthenrelease.

FpSpreadprovidesaResizeZeroIndicator('ResizeZeroIndicatorProperty'intheon-linedocumentation)propertythatspecifiesthepolicywhenacolumnorrowisresizedtozero.IfthepropertyissettoDefaultwhenusingtouchgestures,acolumnwithzerowidthcannotberesized(orarowwithaheightofzero).IfthepropertyvalueisEnhanced,thenazerowidthcolumn(orzeroheightrow),canberesized.Selectthecolumnorrow,andpressandholdtheresizehandletoresizethevisiblecolumnorrow.Tapthecenterofthetwoshortlinestoselectthecolumnwithawidthofzero(orrowwithaheightofzero),thenpressandholdtheresizehandletoresizethecolumn(orrow).

Thefollowingimagedisplaysaselected,zerowidthcolumn.

ThecolumnorrowResizable('ResizableProperty'intheon-linedocumentation)propertymustbetruetoresizeacolumnorrow.

FpSpreadprovidesaResizeZeroIndicator('ResizeZeroIndicatorProperty'intheon-linedocumentation)propertythatspecifiesthepolicywhenacolumnorrowisresizedtozero.Whenusingthemouse,thedefaultvaluedisplaysthesamemousecursorforresizingandresizing-out.TheEnhancedvaluedisplaysaresizecursortotheleftofacolumnheaderborderandaresize-outcursortotherightofacolumnheaderborder.

UsingCode

ThefollowingexampleallowstheusertoresizezerowidthcolumnsorzeroheightrowsbysettingtheResizeZeroIndicator('ResizeZeroIndicatorProperty'intheon-linedocumentation)propertytoEnhanced.

Spread Windows Forms Developer’s Guide 679

Copyright © GrapeCity, inc. All rights reserved.

Page 681: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CSfpSpread1.ResizeZeroIndicator = FarPoint.Win.Spread.ResizeZeroIndicator.Enhanced;fpSpread1.ActiveSheet.Columns[0, 5].Resizable = true;fpSpread1.ActiveSheet.Rows[0, 10].Resizable = true;fpSpread1.ActiveSheet.Columns[2].Width = 0;

VBFpSpread1.ResizeZeroIndicator = FarPoint.Win.Spread.ResizeZeroIndicator.EnhancedFpSpread1.ActiveSheet.Columns(0, 5).Resizable = TrueFpSpread1.ActiveSheet.Rows(0, 10).Resizable = TrueFpSpread1.ActiveSheet.Columns(2).Width = 0

Using Touch Support with Scrolling

Youcanusetouchgestureswhenscrollinginthecontrol.

Youcantapthescrollbarorpressandslidethescrollbartoscroll.Youcanalsousepanninggesturesinthecellareaofthecontrol(vertical,horizontal,diagonal,oroblique).Panninginthediagonaldirectionscrollshorizontallyandvertically.SpecifythetypeofpanningmodewiththePanningMode('PanningModeProperty'intheon-linedocumentation)property.

Spread Windows Forms Developer’s Guide 680

Copyright © GrapeCity, inc. All rights reserved.

Page 682: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

YoucanspecifyfeedbackwhenscrollingwiththeBoundaryFeedbackMode('BoundaryFeedbackModeProperty'intheon-linedocumentation)property(standardorsplit).Formoreinformationonstandard,seehttp://msdn.microsoft.com/en-us/library/windows/desktop/dd317331(v=vs.85).aspx.TheSplitoptionseparatesfrozenandscrollableareasorheadersandscrollableareas.

UsingCode

ThisexamplesetsthePanningMode('PanningModeProperty'intheon-linedocumentation)propertytoallowhorizontalandverticalpanningandspecifiesthetypeoffeedback.

CSfpSpread1.PanningMode = FarPoint.Win.Spread.SpreadPanningMode.Both;fpSpread1.BoundaryFeedbackMode = FarPoint.Win.Spread.BoundaryFeedbackMode.Split;

VBFpSpread1.PanningMode = FarPoint.Win.Spread.SpreadPanningMode.BothFpSpread1.BoundaryFeedbackMode = FarPoint.Win.Spread.BoundaryFeedbackMode.Split

Using Touch Support with Selections

Spread Windows Forms Developer’s Guide 681

Copyright © GrapeCity, inc. All rights reserved.

Page 683: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Youcanselectcolumns,rows,cellranges,andtheentirecontrolusingtouchgestures.

Tapacelltoselectthecellanddisplaytheselectiongripper.Pressthecellselectiongripperandslide.Releasetoselectacellrange.

Tapacolumnheader(orrowheader)toselectacolumn(orrow).Youcanthenpresstheselectiongripperandslidetoselectacolumnrange(orrowrange).Releasetocompletetheselection.Youcanalsoselectacolumnorrowrangebytappingaheaderandthenslidingintheheaderarea.Releasetocompletetheselection.ThisactionrequiresthattheAllowColumnMove('AllowColumnMoveProperty'intheon-linedocumentation)property(orAllowRowMove('AllowRowMoveProperty'intheon-linedocumentation)property)besettofalse.

Youcanselecttheentirecontrolbytappingthecornerheader.

Youcanchangethesizeofthecellrangeselectionbypressingtheselectiongripperandslidinginanydirection.Releasetocompletetheaction.

Youcanselectmultipleranges.Selectarange,thentapacellinadifferentlocationtostartthenextselection.Usethegrippertoselectthesecondrange.SettheTapToAddSelection('TapToAddSelectionProperty'intheon-linedocumentation)propertytotrue.TheSelectionPolicy('SelectionPolicyProperty'intheon-linedocumentation)propertymustbesettoMultiRangeandtheUseOptimizedSelectionForTouch('UseOptimizedSelectionForTouchProperty'intheon-linedocumentation)propertymustbetrue.SettheOperationMode('OperationModeProperty'intheon-linedocumentation)propertytoNormalorReadOnly.Thefollowingimagedisplaysmultipleselectionsandgrippersaroundoneselectedcellrange.

YoucantaptoselectorunselectarowwhentheOperationMode('OperationModeProperty'intheon-linedocumentation)propertyissettoMultiSelect.ThegripperisnotdisplayedwhenusingMultiSelect.IftheOperationModepropertyissettoExtendedSelect,youcantaptoselectarow,butnottounselecttherow.ThegripperisdisplayedwithExtendedSelectandcanbeusedtoselectarangeofrows.

SettheUseOptimizedSelectionForTouchtotruetodisplayaselectiongripperforselectingacellrange.Thegripperisdisplayedwhentouchingthecell,column,orrow.Thegripperisnotdisplayedwhenusingthemouseorkeyboard.

Theborderisdisplayedaroundtheselectedcellrangewhenusingtouchoperations.

Theselectiongrippersaredisplayedontheoutsideedgeoftherange(top-leftandbottom-rightedges,bydefault).YoucancustomizethegripperappearanceusingtheTouchSelectionGripperThickness('TouchSelectionGripperThicknessProperty'intheon-linedocumentation),TouchSelectionGripperLineColor('TouchSelectionGripperLineColorProperty'intheon-linedocumentation),andTouchSelectionGripperBackColor('TouchSelectionGripperBackColorProperty'intheon-linedocumentation)properties.YoucanchangethelocationofthegripperswiththeRightToLeftproperty.

UsingCode

ThefollowingexampleallowsmultipleselectionsusingtouchsupportandsetstheTouchSelectionGripperBackColor('TouchSelectionGripperBackColorProperty'intheon-linedocumentation),TouchSelectionGripperLineColor('TouchSelectionGripperLineColorProperty'intheon-linedocumentation),andTouchSelectionGripperThickness('TouchSelectionGripperThicknessProperty'intheon-linedocumentation)properties.

CSfpSpread1.TouchSelectionGripperBackColor = Color.Aquamarine;fpSpread1.TouchSelectionGripperLineColor = Color.DarkMagenta;

Spread Windows Forms Developer’s Guide 682

Copyright © GrapeCity, inc. All rights reserved.

Page 684: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fpSpread1.TouchSelectionGripperThickness = 2;fpSpread1.TapToAddSelection = true;fpSpread1.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRange;fpSpread1.UseOptimizedSelectionForTouch = true;

VBFpSpread1.TouchSelectionGripperBackColor = Color.AquamarineFpSpread1.TouchSelectionGripperLineColor = Color.DarkMagentaFpSpread1.TouchSelectionGripperThickness = 2FpSpread1.TapToAddSelection = TrueFpSpread1.ActiveSheet.SelectionPolicy = FarPoint.Win.Spread.Model.SelectionPolicy.MultiRangeFpSpread1.UseOptimizedSelectionForTouch = True

Using Touch Support with Shapes

Youcanusetouchgestureswithshapes.

Usethefollowingtouchgestureswithshapes:

TouchGesture

MouseAction Action

Tap Click Selectsacellnote,shape,orchart.

Double-tap Double-Click Editsacellnote,shape,orchartifeditingissupported.

Pressedgethenslide

Pressleftbuttononedgethenmove

Resizesacellnote,shape,orchartifCanSize('CanSizeProperty'intheon-linedocumentation)issettotrue.

Pressshapethenslide

Pressleftbuttononshapethenmove

Movesacellnote,shape,orchartifCanMove('CanMoveProperty'intheon-linedocumentation)issettotrue.

Pressrotatedhandleandslide

Pressleftbuttononrotatedhandleandmove

RotatesashapeorchartifCanRotate('CanRotateProperty'intheon-linedocumentation)issettotrue.

Using Touch Support when Sorting

Youcanusetouchgestureswhensorting.

Tapthesortindicatortosort.TheAllowAutoSort('AllowAutoFilterProperty'intheon-linedocumentation)propertymustbetruetousetouchgestures.Thefollowingimagedisplayssortindicators.

SettheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)propertytochangethesizeofthe

Spread Windows Forms Developer’s Guide 683

Copyright © GrapeCity, inc. All rights reserved.

Page 685: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

control.Sometouchgesturesareeasiertouseifthecontroliszoomed.

Note:Iftheuserselectsacolumnthatcontainssortingandfilteringindicators,theresizegripperisdisplayed.Thegripperhasahigherprioritythanthefilterlistorsortoperation.SettheHeaderIndicatorPositionAdjusting('HeaderIndicatorPositionAdjustingProperty'intheon-linedocumentation)propertytospecifythedistancebetweenthesortingandfilteringindicatorsandtherightedgeofthecolumnsothattheusercansortorfilterthecolumnwhilethegripperisdisplayed.

UsingCode

Thefollowingexampleallowssortingandzoomsthecontrol.

CSfpSpread1.ActiveSheet.Columns[0, 3].AllowAutoSort = true;fpSpread1.ActiveSheet.ZoomFactor = 2;

VBFpSpread1.ActiveSheet.Columns(0, 3).AllowAutoSort = TrueFpSpread1.ActiveSheet.ZoomFactor = 2

Using Touch Support with Viewports

Youcanusetouchgestureswithviewports.

Pressthesplitboxandslidetodisplaythesplitlineorbar.Pressonthelineandslidetochangethesizeoftheviewport.

Youcandouble-tabasplitlinetoremovetheviewport.

Using Touch Support with the Tab Strip

Youcanusetouchgestureswiththetabstrip.Youcanchangetabs,selectasheet,editasheet,andscroll.

Tapthetabstripbuttonstonavigatethetabstrip.Tapasheetnameinthetabstriptoselectthesheet.Double-tapasheetnameinthetabstriptoeditthesheetname.Youcanusepanningtoscrollthroughthesheetsinthetabstripiftherearemoresheetsthancanbedisplayedinthetabstriparea.TheEditable('EditableProperty'intheon-linedocumentation)propertymustbetrueforthetabstripinordertoeditthesheetnames.

SettheZoomFactor('ZoomFactorProperty'intheon-linedocumentation)propertytochangethesizeofthetabstripbuttons.Sometouchgesturesareeasiertouseifthecontroliszoomed.

Spread Windows Forms Developer’s Guide 684

Copyright © GrapeCity, inc. All rights reserved.

Page 686: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

Using Touch Support with Zooming

Youcanusethepinchoperationwhenzooming.

SettheAllowUserToTouchZoom('AllowUserToTouchZoomProperty'intheon-linedocumentation)propertytoallowzoomingusingthepinchoperation.

YoucanusetheTouchZoomSnapPoints('TouchZoomSnapPointsProperty'intheon-linedocumentation)propertytoconfiguresnappoints.Whenzooming,ifthefinalzoomfactoriscloseto(lessthantheTouchZoomSnapDistance('TouchZoomSnapDistanceProperty'intheon-linedocumentation)propertyvalue)asnappoint,thefinalzoomfactorchangestothesnappoint.Forexample,add1tothesnappoint.Whentheuserchangesthezoomfactorto103%,thezoomfactorchangesto100%.

FpSpreadusesstandardpinchandstretchgestureswhenzooming.Formoreinformation,seehttp://msdn.microsoft.com/en-us/library/windows/apps/hh465415.aspx.

UsingCode

Thefollowingexampleallowszoomingwiththepinchoperation.

CSfpSpread1.AllowUserToTouchZoom = true;fpSpread1.MinZoomFactor = .1F;fpSpread1.TouchZoomSnapDistance = 1;fpSpread1.TouchZoomSnapPoints.Add(1f);fpSpread1.TouchZoomSnapPoints.Add(2f);

VBFpSpread1.AllowUserToTouchZoom = TrueFpSpread1.MinZoomFactor = .1FFpSpread1.TouchZoomSnapDistance = 1FpSpread1.TouchZoomSnapPoints.Add(1f)FpSpread1.TouchZoomSnapPoints.Add(2f)

Spread Windows Forms Developer’s Guide 685

Copyright © GrapeCity, inc. All rights reserved.

Page 687: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

2 Index

celltypes

multipleoptionbutton,365-367

cells

formatter,308

columnheaders

gridlines,153-156

cursors

forresizing,264-265

Excelfile

openinginSpread,527-528

including

cellnotesinsearch,238

celltagsinsearch,238

multiple

headers,79-82

parts

splitboxes,218-220

renderers

focusindicator,395-398

settingcelltype

combobox(multiplecolumn),362-365

listbox,360-362

sheetcorner

colors,128-129

images,128-129

styles

XPthemes,113-114

tabs

sheetnames,200-205

themes

XPthemes,113-114

abortdialog

printing,550-554

accessibility

HitTest,212-213

actions

undo,211-212

undoandredo(overview),58

active

cell,84-85

Spread Windows Forms Developer’s Guide 686

Copyright © GrapeCity, inc. All rights reserved.

Page 688: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

celltypeofactivecell,309

sheet,66-67

sheettab,200-205

add,223-224

adding

cellspans,176-178,56

columns,75-76

controlstosheet,221-222

customfunction,429-432

customnames,428-429

notes,404-407

rows,75-76

shapes,254-256

sheets,68-69

spans,176-178,56

styles,182-185

tags,248-249,247-248,247

AddingaChartControl,648-655

AddingaComponenttoaProject,30-32

AddingaComponenttoaVisualStudio2013Project,28-30

AddingaComponenttoaVisualStudio2015or2017Project,26-28

AddingaContextMenu,662

AddingaContextMenutoaComponent,208-209

AddingaGradienttoHeaderCells,152-153

AddingaNotetoaCell,404-407

AddingaPageBreak,563-564

AddingaRoworColumn,75-76

AddingaRowtoaBoundSheet,447-448

AddingaSheet,68-69

AddingaSparklinetoaCell,185-187

AddingaTable,223-224

AddingaTableFormula,232-233

AddingaTagtoaCell,248-249

AddingaTagtoaRoworColumn,247-248

AddingaTagtoaSheet,247

AddingaTitleandSubtitletoaSheet,120-121

AddingaWatermarktoaPrintedPage,564-565

AddinganUnboundColumntoaBoundSheet,450-451

AddinganUnboundRowtoaBoundSheet,448-450

addingdata,635

AddingFormulastoCalculateBalances,46-47

AddingSpreadtotheCheckbookProject,42

AddingSupportforHighDPISettings,37-38

Spread Windows Forms Developer’s Guide 687

Copyright © GrapeCity, inc. All rights reserved.

Page 689: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

AddingtoBoundData,447

advancedoptions

includingcellnotes,238

includingcelltags,238

includingheaders,238

advancedsearchdialog,238

AligningCellContents,164-166

alignment

cellcontents,164-166

allowing

formulaediting,427-428

mergingcells,178-180

userresizing,264-265

zooming,207

AllowingaComboBoxCelltoHandleaDoubleClick,379-380

AllowingCellDatatoOverflow,180-182

AllowingCellstoMergeAutomatically,178-180

AllowingtheDisplayofButtonsinaCell,394-395

AllowingtheUsertoAutomaticallySortRows,301-303

AllowingtheUsertoChangetheChart,660-661

AllowingtheUsertoDrawwithaTabletPC,257-258

AllowingtheUsertoEnterDatainRowsorColumns,261-262

AllowingtheUsertoEnterFormulas,427-428

AllowingtheUsertoFilterRows,271-272

AllowingtheUsertoGroupRows,291-292

AllowingtheUsertoMoveRowsorColumns,262-264

AllowingtheUsertoPerformaStandardSearch,237-238

AllowingtheUsertoPerformanAdvancedSearch,238

AllowingtheUsertoResizeRowsorColumns,264-265

AllowingtheUsertoZoomtheDisplayoftheComponent,207

AllowingUserFunctionality,249-251

AllowingUserInteractionwithRowsandColumns,261

alternatesearch,237-238

alternatingrows,143-145

anchorcells,176-178

annotationmode,256-257

overview,55-56

appearance

cellborders,168-172

cellsettings,159-160,84

columnsettings,139,73

groupingaffecton,295-296

Spread Windows Forms Developer’s Guide 688

Copyright © GrapeCity, inc. All rights reserved.

Page 690: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

headers,145-146,78

overallcomponent,99

rowsettings,139,73

Seealsostyles,182-185

selections,243-246

settingsingeneral,99,66

sheetsettings,115,66

visualstyles,113-114

applicationtags,248-249,247-248,247

ApplyingaSkintoaSheet,124-126

ApplyingaSkintotheComponent,101-102

AreaCharts,576-578

arranging

columns,303-305,303

rows,303-305,303

arrows

scrollbar,194-198

sortindicators,301-303

ascending

sortindicator,301-303

assembly

TextRenderer,57

autocomplete,385-386

autofit,264-265,667

automatic

completion,385-386,352-355

mergingcells,178-180,56

text,146-148

automaticcompletion,385-386,352-355

automaticfit,667

axis,605-606

AxisandOtherLines,605-606

axismodel,87-89

background

colors,160-162

imageincell,162-164

imageprinting,564-565

BarCharts,578-581,575

barcode

celltype,336-341

bars

grouping,292-293

progress,367-370

Spread Windows Forms Developer’s Guide 689

Copyright © GrapeCity, inc. All rights reserved.

Page 691: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

basemodels,87-89

bestsize,141-142

cells,166-167

bidirectionaldisplay,114-115

BIFF12format

opening,527-528

BIFF8format

opening,527-528

BindingaCellRangeinSpreadasaDataSourcetoanExternalControl,441-443

BindingaCellRangeinSpreadtoanExternalDataSource,439-441

BindingaComboBoxtoaDataReader,446-447

BindingSpreadtoanExternalDataSet,438-439

BindingtheChartControl,658-660

BindingtoData,438

bindingtodatasets

addingunboundrows,447-448,450-451,448-450

celltypes,453-455

changingcolumnassignment,443-446

columnheaders,451-453

defaultbinding,438-439

overview,51

blocks(Seeranges),85-86

borders,168-172,605-606

cells,168-172

creating,168-172

customizing,168-172

introduction,168-172

kinds,168-172

multiplelines,174-176

overallcomponent,110-111

printing,556-557,550-554

printingsheetborders,550-554

styles,168-172

bound,635-637

bubblecharts,575

built-infunctions,52-53

buttons

about,394-395

celltype,341-345

displaying,394-395

gradient,341-345

tabstrip,200-205

Spread Windows Forms Developer’s Guide 690

Copyright © GrapeCity, inc. All rights reserved.

Page 692: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

visualstyles,113-114

XPthemes,113-114

calculator

notdisplaying,326-331

pop-up,384-385

calendar

pop-up,382-384

CameraShapes,50-51

cell,672-675

cellborders,168-172

styles,168-172

celleditor

validation,473-477

cellnotes,404-407

includinginsearch,238

NoteStyle,404-407

celloverflow,180-182

cellranges

printing,547-548,544-545,550-554,545-547

cellreferences

style,421-423

cellspans,176-178

adding,176-178

columnheaders,157-159

removing,176-178

rowheaders,157-159

CellSpansintheSheetCorner,135-136

celltags

includinginsearch,238

celltypes,63-65,308

informulas,420-421

activecell,309

barcode,336-341

basics,308-309

button,341-345

checkbox,345-348

colorpicker,348-352

combobox,352-355

controls,335-336

currency,314-315

currency(tutorial),466-467

custom,387-390

databinding,453-455

Spread Windows Forms Developer’s Guide 691

Copyright © GrapeCity, inc. All rights reserved.

Page 693: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

date-time,315-317

default,323-325

double,326-331

editable,313-314

feature,51

general,323-325

graphical,335-336

headers,308-309

hyperlink,355-359

image,359-360

listbox,360-362

mask,325-326

multiplecolumncombobox,362-365

percent,331-333

progressindicator,367-370

regularexpression,333-334

richtext,370-373

setting,313-314,335-336

slidercontrol,373-377

sorting,300-301

text,334-335

time(Seedate-time),315-317

validation,473-477

CellTypesforCellFunctionality,51

cells

imagein,359-360

activecell,84-85

aligningcontents,164-166

anchorcell,176-178

appearancesettings,159-160,84

automaticmerging,178-180

backgroundimage,162-164

bestsize,166-167

borders,168-172

buttons,394-395

clearing,479-480

colorsetting,160-162

combiningintospan,176-178

conditionalformatting,417-419

copyingdata,477

customname,428-429

editmode,391-392

Spread Windows Forms Developer’s Guide 692

Copyright © GrapeCity, inc. All rights reserved.

Page 694: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

editor,308

fillingrange,472-473

focusindicator,395-398

formatter,323-325

gradientinheader,152-153

headers,145-146,78

hidingselectionhighlights,247

locking,392-394

merging,56

movingdata,477-478

multiplelineborder,174-176

notes,404-407

overflow,180-182

printingnotes,548-549

ranges,85-86

referencestyle,421-423

removing,479-480

renderer,308

resizing,166-167

searching,238-239

settingcelltypesfordatabinding,453-455

settingcolor,160-162

shortcutobject,159-160,59-62,84

sorting,56

spanning,176-178,56

swappingdata,478-479

tags,248-249

texttips,402-404

types,308

validation,473-477

centering

printing,556-557

ChanginganInputMapforaChildView,509-512

ChangingChartOptions,655-657

ChangingtheDefaultKeyboardMap,502-503

charactermask,325-326

chart,648,667-668

adding,648-655

binding,658-660

contextmenu,662

overview,648

plottypes,648

ChartCollectionEditors,644

Spread Windows Forms Developer’s Guide 693

Copyright © GrapeCity, inc. All rights reserved.

Page 695: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ChartControlsonaSheet,51

chartdesigner,648

ChartDesignerToolbar,647-648

ChartLineStyle,609-611

ChartObjectModel,572-573

ChartTypesandViews,573-575

ChartUserInterfaceElements,571-572

checkbox

includingcelltags,238

includingheaders,238

celltype,345-348

includingcellnotes,238

child

inputmap,509-512

childcontrols,221-222

overview,51

ChildControlsonaSheet,51

childsheets,455-461

printing,542

childviews,455-461

printing,542

circularformula,424-425

circularreferences,424-425

classid,209

clearing

data,479-480

ClearingorRemovingPartsoftheInterface,253

ClickEvent

inFpSpreadcontrol,213

ClickingActions,514-517

Clipboard,668

contents,209-211

deactivating,209-211

excludingheaders,209-211

incode,209-211

operations,209-211

pasting,209-211

scope,209-211

clock

pop-up,382-384

collapsing

grouping,292-293

Spread Windows Forms Developer’s Guide 694

Copyright © GrapeCity, inc. All rights reserved.

Page 696: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

icon,205-207

collectioneditors,644

colorpicker

celltype,348-352

ColorScaleRules,409-411

ColoringaCell,160-162

colors

cellsetting,160-162

colorpicker,348-352

gradient,152-153

gradientinprogressindicator,367-370

gridlines,118-120

printing,556-557,550-554

rich-textcell,370-373

selections,243-246

sheetcorner,128-129

sheets,116-117

columnbar,264-265

columnfilterdefinition,283,276

ColumnFootersandGroupFooters,51

columnheaders,78-79

automatictext,146-148

content,148-150

customtext,148-150

displaying,82-84

hiding,82-84

multiple,53

multiplerows,79-82

printing,550-554

spans,157-159

style,150-152

text,146-148,148-150

width,156-157

columnwidth

preferredsize,141-142

columns

adding,75-76

appearancesettings,139,73

filterdefinition,283,276

freezing,265-267

headers,78-79

hiding,77-78

leadingfrozen,265-267

Spread Windows Forms Developer’s Guide 695

Copyright © GrapeCity, inc. All rights reserved.

Page 697: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

moving,262-264

number,73-75

removing,262-264,76-77

resizing,264-265,141-142

restrictingentry,261-262

shortcutobject,139,59-62,73

sortindicators,301-303

sorting,56,303-305,303

tags,247-248

trailingfrozen,265-267

width,139-141

combining

cellsintospan,176-178

mergingcells,178-180

CombiningPlotTypes,633-635

combobox

bindingtoDataReader,446-447

celltype,352-355,362-365

double-clicking,379-380

comma-delimitedfile

opening,527-528

comparing

conditionalformat,417-419

comparison

formatting,417-419

operators,417-419

completingentry(autocomplete),385-386

complexborder

multiplelines,174-176

ComplexBorderSideClass

using,174-176

component,28-30

components

appearance,99

borderstyle,110-111

contextmenu,208-209

resetting,253,251-253

Spread,48-49

compositeofsettings,62

CompoundBorderArrayProperty

using,174-176

computedvalue

Spread Windows Forms Developer’s Guide 696

Copyright © GrapeCity, inc. All rights reserved.

Page 698: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

customname,428-429

ConceptsOverview,59

conditionalformatting,417-419,51

conditionaloperators,408-409

conditions,417-419

ConnectingtoData,635

connectingtodatabase

tutorial,463-464

contents

copying,477

moving,477-478

swapping,478-479

context

customfunction,429-432

contextmenu

FpSpreadcomponent,208-209

rich-textcell,370-373

control

namebox,436-437

ControlClass(FpSpreadbasedon),213

controllayer,221-222

controls

appearance,99

borderstyle,110-111

calculator,384-385

calendar,382-384

childonsheet,221-222

clock,382-384

contextmenu,208-209

progress,367-370

slider,373-377

subeditor,386-387

zooming,207

copy,668

copying

data,477

filling,472-473

sheets,69-70

sheetsbetweencomponents,67-68

copying(SeeClipboardoperations),209-211

CopyingandInsertingaSheet,69-70

CopyingDataonaSheet,477

CopySheetMethod,69-70

Spread Windows Forms Developer’s Guide 697

Copyright © GrapeCity, inc. All rights reserved.

Page 699: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

corners(seesheetcorner),128-129

count

parameters,429-432

create,223-224

creating

customnames,428-429

cellborders,168-172

contextmenu,208-209

customfunction,429-432

datasettutorial,465-466

outlines,296

styles,182-185

CreatingaBuildLicense,22-23

CreatingaChartControl,641-644

CreatingaComplexBorderwithMultipleLines,174-176

CreatingaCustomCellType,387-390

CreatingaCustomFilter,283

CreatingaCustomGroup,295

CreatingaCustomSheetModel,96-97

CreatingaCustomSkinforaComponent,102-105

CreatingaCustomSkinforaSheet,126-128

CreatingaHeaderwithMultipleRowsorColumns,79-82

CreatingaHierarchicalDisplayManually,461-463

CreatingaPiePlot,625-627

CreatingaPolarPlot,627-630

CreatingaRadarPlot,630-633

CreatingaRangeofCells,85-86

CreatingaSpaninaHeader,157-159

CreatingaSpanofCells,176-178

CreatingaYPlot,618-620

CreatingAlternatingRows,143-145

CreatinganXYPlot,620-622

CreatinganXYZPlot,622-625

CreatingandApplyingaStyleforCells,182-185

CreatingandCustomizingCellBorders,168-172

CreatingandUsingaCustomFunction,429-432

CreatingandUsingaCustomName,428-429

CreatingBorderswithDiagonalLines,172-174

CreatingCameraShapes,258-260

CreatingCharts,617,617-618

CreatingConditionalFormattingwithRules,409

CreatingCustomHierarchyIcons,463

Spread Windows Forms Developer’s Guide 698

Copyright © GrapeCity, inc. All rights reserved.

Page 700: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CreatingPlotTypes,617-618

CreatingTables,222-223

criteria

filter,283,276

culture,26

currency

minimumandmaximumvalues,380-382

celltype,314-315

decimalsymbol,314-315

formatting,314-315

separators,314-315

symbol,314-315

cursors

display,111-112

HitTestforlocating,212-213

insplitbar,214-218

locating(HitTest),212-213

setting,111-112

tabstrip,200-205

custom

celltypes,387-390

defaultinputmap,502-503

functions,429-432

functions,errorvalue,429-432

functions,numberofparameters,429-432

names,428-429

parametersincustomfunctions,429-432

rowfilters,283

textinheaders,148-150

custompainting,112-113,114-115

customstyles,182-185,56-57

CustomizableCellintheSheetCorner,134-135

customizing

cellborders,168-172

datamodel,96-97

focusindicator,395-398

gridlines,118-120

images,205-207

printing,550-554

selections,243-246

CustomizingAutomaticCompletion(TypeAhead),385-386

CustomizingCellBorders,168

CustomizingCellTypesforBoundSheets,453-455

Spread Windows Forms Developer’s Guide 699

Copyright © GrapeCity, inc. All rights reserved.

Page 701: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingClipboardOperationOptions,209-211

CustomizingColumnandFieldBinding,443-446

CustomizingColumnHeadersforBoundSheets,451-453

CustomizingDataBinding,451

CustomizingDrawing,253-254

CustomizingEnhancedFiltering,286

CustomizingHeaderLabelText,148-150

CustomizingInteractionBasedonEvents,213

CustomizingInteractioninCells,391

CustomizingInteractionintheOverallComponent,194

CustomizingInteractionwithaSheet,214

CustomizingInteractionwithCellTypes,308

CustomizingMarkersandPoints,187-189

CustomizingPaintingofPartsoftheComponent,112-113

CustomizingRoworColumnInteraction,261

CustomizingRow,Column,andCellAppearance,139

CustomizingScrollBarTips,198-200

CustomizingSheetInteraction,194

CustomizingSimpleFiltering,272

CustomizingSplitBoxes,218-220

CustomizingtheAppearanceofaCell,159-160

CustomizingtheAppearanceofanOutline(RangeGroup),298-299

CustomizingtheAppearanceofHeaders,145-146

CustomizingtheAppearanceofthePrinting,550

CustomizingtheDefaultHeaderLabels,146-148

CustomizingtheDimensionsoftheComponent,109-110

CustomizingtheDisplayofthePointer,111-112

CustomizingtheFilterBar,290-291

CustomizingtheFilterList,276

CustomizingtheFocusIndicatorforaCell,395-398

CustomizingtheGroupBar,294-295

CustomizingtheHeaderGridLines,153-156

CustomizingtheIndividualSheetAppearance,115

CustomizingtheInputMaps,507-509

CustomizingtheNumberofRowsorColumns,73-75

CustomizingtheOutlineoftheComponent,110-111

CustomizingtheOverallComponentAppearance,99

CustomizingthePop-UpCalculatorControl,384-385

CustomizingthePop-UpDate-TimeControl,382-384

CustomizingthePositionintheDisplay,220-221

CustomizingthePrintJobSettings,554-556

CustomizingthePrintedPageHeaderorFooter,557-562

Spread Windows Forms Developer’s Guide 700

Copyright © GrapeCity, inc. All rights reserved.

Page 702: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

CustomizingthePrintedPageLayout,556-557

CustomizingtheRenderers,105-109

CustomizingtheRoworColumnAppearance,139

CustomizingtheScaleMode,207-208

CustomizingtheScrollBarsoftheComponent,194-198

CustomizingtheSelectionAppearance,243-246

CustomizingtheSheetAppearance,99

CustomizingtheSheetCornerAppearance,128-129

CustomizingtheSheetNameTabsoftheComponent,200-205

CustomizingtheStyleofHeaderCells,150-152

CustomizingtheUserErrorMessages,214

CustomizingtheUserInterfaceImages,205-207

CustomizingUndoandRedoActions,211-212

CustomizingUserSearchingofData,236-237

CustomizingUserSelectionofData,239

CustomizingViewports,214-218

cut,668

cutting(SeeClipboardoperations),209-211

data

clearing,479-480

copying,477

filtering,269-271

moving,477-478

removing,479-480

searching,238-239

sorting,300-301

swapping,478-479

viewinghierarchically,455-461

databar,411-413

DataBarRule,411-413

databinding,51

addingunboundrows,447-448,450-451,448-450

celltypes,453-455

changingcolumnassignments,443-446

columnheaders,451-453

comboboxtoDataReader,446-447

defaultbinding,438-439

overview,51

tutorial,466,463

datacharts,601-602

datamodel,87-89

customizing,96-97

optionalinterfaces,97-98

Spread Windows Forms Developer’s Guide 701

Copyright © GrapeCity, inc. All rights reserved.

Page 703: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

dataonly

savingtoXML,525-526

DataPlotTypes,601-602

dataset

tutorial,465-466

datasource,635-637

datatypes

informulas,420-421

databaseconnection

tutorial,463-464

DataReader

bindingcombbox,446-447

dates

pop-upcalendar,382-384

date-time

celltype,315-317

DeactivatingtheDefaultKeyboardMap,501-502

decimal

currency,314-315

default

celltype,323-325

headerstyle,150-152

inputmapchange,502-503

maps,493-494,487-493

models,87-89

DefaultKeyboardMaps,493-494

DefaultKeyboardNavigation,487-493

DefaultMapforExcelCompatibility,494-495

DefaultMapforExtendedSelectandWhenAncestorOfFocused,500-501

DefaultMapforExtendedSelectandWhenFocused,500

DefaultMapforMultiSelectandWhenAncestorOfFocused,500

DefaultMapforMultiSelectandWhenFocused,500

DefaultMapforNormalandWhenAncestorOfFocused,495-497

DefaultMapforNormalandWhenFocused,495

DefaultMapforReadOnlyandWhenAncestorOfFocused,497-498

DefaultMapforReadOnlyandWhenFocused,497

DefaultMapforRowModeandWhenAncestorOfFocused,498-499

DefaultMapforRowModeandWhenFocused,498

DefaultMapforSingleSelectandWhenAncestorOfFocused,499-500

DefaultMapforSingleSelectandWhenFocused,499

DefiningtheContentsoftheFilterItemList,276-280

DefiningtheOrderoftheItemsintheFilterItemList,280-281

Spread Windows Forms Developer’s Guide 702

Copyright © GrapeCity, inc. All rights reserved.

Page 704: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

deleting(Seeremoving.),71-72

descending

sortindicator,301-303

designer,639-640

SpreadDesigner,56

DeterminingtheCellTypeoftheActiveCell,309

DeterminingWhichHeaderRowDisplaystheIndicators,285-286

Developer'sGuide,0

FarPointSpreadforWindowsForms,0

diagonal,172-174

dialog

abortprinting,569

displayingforuser,568-569

printing,569

dialogs

colordialog,348-352

printing,550-554

search,238,237-238

dimensions,109-110

directions

fillingcells,399-401

display

customizing,112-113,114-115

displaying

activecell,84-85

activesheet,66-67

buttons,394-395

cursors,111-112

dateandtime,315-317

gridlines,118-120

hidingsheets,72-73

positioning,220-221

printabortdialog,569

printdialog,569

printpreview,570

rowsfiltered,276

sheettabstrip,200-205

texttips,402-404

userdialog,568-569

DisplayingaFooterforColumnsorGroups,121-124

DisplayingaPrintDialogfortheUser,569

DisplayinganAbortMessagefortheUser,569

DisplayingDialogsforUsers,568-569

Spread Windows Forms Developer’s Guide 703

Copyright © GrapeCity, inc. All rights reserved.

Page 705: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

DisplayingErrorIconsinCellsorRows,408

DisplayingGridLinesonaSheet,118-120

DisplayingSpinButtons,377-379

DisplayingTextTipsinaCell,402-404

displays

groupingaffecton,295-296

double-clicking

combobox,379-380

double-precision

celltype,326-331

double-precisionfloating-pointnumber(celltype),326-331

DoughnutCharts,592-593,575

drag,70-71

draganddrop,398-399

dragandfill,399-401

filldirection,399-401

dragandmove

columns,262-264

dragfill,668-670

drawing,256-257

annotationmode,256-257

buttons,394-395

Drawing(Rendering)Style,137-138

drawingspace

defined,253-254

drawingtext,57

drawings

annotations,256-257

inknotation,257-258

dropdown,670-671

drop-downlistcell,352-355,360-362,362-365

editmode,391-392

editable,671-672

EditBaseCellTypeClass

about,308-309

editing

automaticcompletion,385-386

editmode,391-392

formulas,420-421

editingformulas

allowinguseredit,427-428

editor

Spread Windows Forms Developer’s Guide 704

Copyright © GrapeCity, inc. All rights reserved.

Page 706: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

celltypes,308-309

editors

subeditors,386-387,213-214

elevation,611-612

ElevationandRotation,611-612

embedding

controlsonsheet,221-222

controlstosheet,221-222

End-UserLicenseAgreement,21-22

EnterEvent

inFpSpreadcontrol,213

EnteringDataActions,518

error

icon,408

row,408

errorvalue

asparameter,429-432

estimating(GoalSeek),427

evaluationorder,formulas,424-425

events

inFpSpread,213

overview,213

scrollbars,194-198

splitbars,214-218

validation,473-477

viewports,214-218

Excelcompatibility,512

Excelcompatibilityoption,494-495

Excelfile

opening,527-528

ExcelSupportwithImportandExportCapabilities,51-52

Excel-stylegrouping,296

exchanging

data,478-479

expanding

grouping,292-293

icon,205-207

exporting,51-52

PDFfile,540-542

expressions

namesinformulas,428-429

extendedcharactersets

probleminrich-textcell,370-373

Spread Windows Forms Developer’s Guide 705

Copyright © GrapeCity, inc. All rights reserved.

Page 707: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FactorsofKeyboardMapUsage,485-487

FeatureOverview,49-50

features

groupingaffecton,295-296

undoandredo,58

files

.SKN(skin),536-537

OfficeOpenXML,527-528

PDFfile,540-542

zero-basedsheetindex,527-528

fill

copy,399-401

series,399-401

FillEffects,606-609

filling

rangeofcells,472-473

FillingCellswithDragandDrop,398-399

FillingCellswithDragandFill,399-401

FillingCellswithDragandMove,401-402

FillRangeMethod

illustrated,472-473

fills

direction,399-401

filter,272,224-227,675

bar,290-291

enhanced,286-289,290-291,286

filtercriteria,283,276

filtering,269-271

columnfilterdefinition,283,276

custom,283

hidingindicators,283

indicatorrow,283

indicators,283,205-207

introduction,269-271

rows,276

styles,273-276

FilteringDataonaSheet,52

filteringindicators

hiding,283

rowlocation,283

financial

celltype,314-315

Spread Windows Forms Developer’s Guide 706

Copyright © GrapeCity, inc. All rights reserved.

Page 708: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

finddialog,238,237-238

finding,238-239

formulavaluewithGoalSeek,427

sheetbyname,67-68

FindingaValueUsingGoalSeek,427

FindingMoreDetailsontheSheetModels,89-90

FindingRowsorColumnsThatHaveData,142-143

FindingtheDocumentation,39-41

firstcondition,417-419

fitting

data,166-167,141-142

floatingobjects(shapes),253-254

floatingpoint

celltype,326-331

floatingtoolbars,432-433

floating-pointnumber(celltype),326-331

focusindicators

customizing,395-398

hiding,247

hidingrectangle,247

focuslocation(inmapping),485-487

fonts

rich-textcell,370-373

styleinrich-textcell,370-373

footers

printing,557-562,550-554,562-563

foreground

color,160-162

formatstring

generalcell,323-325

FormattedversusUnformattedData,62-63

formatter,323-325

celltypes,308-309

generalcell,323-325

formatting

cellsconditional,417-419

currency,314-315

currencycell,314-315

generalcelltype,323-325

inheriting,62

richtextcell,370-373

formula,236,232-233

formulabars,433-434

Spread Windows Forms Developer’s Guide 707

Copyright © GrapeCity, inc. All rights reserved.

Page 709: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

FormulaEditor,420-421

FormulaProviderControl,52

FormulaTextBox(FormulaBar),52

formulas,52-53

allowinguseredit,427-428

cellreference,421-423

celltypes,420-421

circularreference,424-425

customfunctions,429-432

customname,428-429

customnames,428-429

datatypes,420-421

floatingtoolbar,433-434

FormulaEditor,420-421

GoalSeek,427

nestingfunctions,425

one-based,421-423,423-424

orderofevaluation,424-425

placingincell,420-421

sheetreference,423-424

workingwith,419

FpSpread

events,213

fractions,326-331

free-handdrawing,256-257

freezing

rowsorcolumns,265-267

frozen

leadingrowsorcolumns,265-267

trailingrowsorcolumns,265-267

frozenrowsorcolumns,265-267

functions,52-53

custom,429-432

parametersincustomfunctions,429-432

FunctionsandFormulas,52-53

GDI

drawingtext,57

general

celltype,323-325

formatter,323-325

GeneralStyleoftheSheetCorner,129-131

genericcell(Seegeneralcelltype),323-325

Spread Windows Forms Developer’s Guide 708

Copyright © GrapeCity, inc. All rights reserved.

Page 710: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

gestures,663

GetReservedCursorMethod

using,111-112

GettingMorePractice,39

GettingStarted,21

GettingTechnicalSupport,41

globalinputmaps,485-487

GoalSeek,427

using,427

gradient

overview,53

gradients,152-153,341-345

button,341-345

header,152-153

inheadercells,152-153

progressindicatorcell,367-370

GradientsforButtonCells,Headers,andMore,53

graphics

incell,359-360

sheetcorner,128-129

gridlines,118-120

about,118-120

cellborders,168-172

colors,118-120

columnheaders,153-156

headers,153-156

printing,556-557,550-554

rowheaders,153-156

style,118-120

three-dimensional,118-120

group,675-676

grouping,292-293,291,676-677

bar,292-293

interoperability,295-296

multiplelevels,292-293

outline,296

overview,53

primary,292-293

secondary,292-293

spacingbetweengroupnames,294-295

GroupingRowsintheDisplay,53

GroupingRowsorColumnsinanOutline,53

HandlingDataUsingCellProperties,471-472

Spread Windows Forms Developer’s Guide 709

Copyright © GrapeCity, inc. All rights reserved.

Page 711: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

HandlingDataUsingSheetMethods,468-471

HandlingEventsofSubeditors,213-214

HandlingInstallation,21

HandlingRedistribution,23-25

HandlingRight-to-LeftLayouts,114-115

HeaderCountSynchronizationintheSheetCorner,136-137

headers,78-79

appearance,145-146,78

automatictext,146-148

celltypes,308-309

corner,128-129

defaultstyle,150-152

displaying,82-84

gradient,152-153

gridlines,153-156

height,156-157

hiding,82-84

includinginsearch,238

introduction,78-79

labeltext,148-150

labels,146-148

multiple,53,79-82

printing,557-562,550-554,562-563

resizingbasedon,141-142

setting,145-146,78

shortcutobject,78-79,59-62

size,156-157

sortindicators,301-303

spans,157-159

width,156-157

HeaderswithMultipleColumnsandRows,53

height

determiningbest,141-142

headerrow,156-157

rows,139-141

hidden

cellswhenspanned,176-178

hiding

cellsbyspanning,176-178

focusrectangle,247

headers,82-84

pop-upcalculator,326-331

Spread Windows Forms Developer’s Guide 710

Copyright © GrapeCity, inc. All rights reserved.

Page 712: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

rowsorcolumn,77-78

selections,247

sheets,72-73

HidingtheSelectionWhenFocusisLost,247

hierarchicalcollection,455-461

HierarchicalDisplay,53

hierarchy,455-461,53

collection,455-461

grouping,292-293

icons,205-207

inputmap,509-512

printing,542

HighlightingRules,413-415

highlights

selection,247

HitTest,212-213

general,212-213

HitTestforLocatingtheCursor,53

horizontal

alignment,164-166

scrollbars,198-200

host

overview,51

hosting

Webpage,209

HostingtheComponentonaWebPage,209

HTML

savingdata,521

savingtoTableelement,524-525

hyperlink

celltype,355-359

IconSetRule,415-416

icons

customizing,205-207

hierarchy,205-207

imagecell,359-360

images

backgroundincell,162-164

customizing,205-207

sheetcorner,128-129

transparent,359-360

ImplementingaSerializerClass,530-536

importing,51-52

Spread Windows Forms Developer’s Guide 711

Copyright © GrapeCity, inc. All rights reserved.

Page 713: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fromExcelfile,527-528

improving

performance,480-483

ImprovingPerformancebySuspendingtheLayout,480-483

including

headersinsearch,238

index

zero-basedsheetinExcel,527-528

indicators

ascendingingrouping,292-293

cellnoteindicatorsize,404-407

currency,314-315

customizing,205-207

expandingingrouping,292-293

filter,283,205-207

filtering,283

focus,395-398

hidingfiltering,283

hidingsort,305-307

progress,367-370

resizingroworcolumn,264-265

rowlocation,283,305-307

selection,243-246

sort,305-307,301-303,205-207

IndicatorsandIconsintheInterface,53-54

inheritingformatting,62

inknotation,257-258

overview,54

InkNotationSupport,54

inking,257-258

overview,54

inputmapmode,485-487

inputmaps,494-495,495,54,484,507-509,512

childview,509-512

default,493-494,487-493

global,485-487

xml,512-513

inserting

columns,75-76

rows,75-76

sheets,68-69,69-70

InstallingtheProduct,21

Spread Windows Forms Developer’s Guide 712

Copyright © GrapeCity, inc. All rights reserved.

Page 714: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

InteractivityActions,519

interfaces

models,87-89

optionalmodel,97-98

interoperability

grouping,295-296

outline,296

InteroperabilityofGroupingwithOtherFeatures,295-296

InteroperabilityofOutlineswithOtherFeatures,299-300

invisible

headers,82-84

hidingsheets,72-73

rowsorcolumns,77-78

IsReservedLocationMethod

using,111-112

iterations,424-425

orderofevaluation,424-425

justification

printing,556-557

keyboard,664-665

KeyboardActionMapping,54

keyboardmapping

default,493-494,487-493

keys

mapping,495,54,507-509

keystrokemapping,485-487

LabelCollectionEditor,644-645

labels,615-616

automatictextinheaders,146-148

headertext,148-150

headers,146-148

landscapeorientation(printing),556-557

language,26

lastcondition,417-419

layers

drawingspace,253-254

layout

objects,480-483

resume,480-483

suspend,480-483

suspended,480-483

leading

frozenrowsorcolumns,265-267

Spread Windows Forms Developer’s Guide 713

Copyright © GrapeCity, inc. All rights reserved.

Page 715: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

legend,616-617

LegendCollectionEditor,645

Legends,616-617

LicensingaTrialProjectafterInstallation,21

light,612-614

LightCollectionEditor,646-647

lightcolor,612-614

Lighting,Shapes,andBorders,612-614

limiting

currencyvalues,380-382

LimitingValuesforaNumericCell,380-382

linechart,575

LineCharts,581-582

lines,605-606

cellborders,168-172

linkcell(Seehyperlinkcelltype),355-359

listboxes

celltype,360-362

load

inputmaps,512-513

loading

RTFfileinrich-textcell,370-373

skins,537-538

LoadingaSkin,537-538

LocatingthePointerUsingHitTest,212-213

locations

sheettabstrip,200-205

spreadsheet,220-221

locking

cells,392-394

LockingaCell,392-394

ManagingDataBinding,438

ManagingDataonaSheet,468

ManagingEventsfromUserActions,514

ManagingFileOperations,521

ManagingFilteringofRowsofUserData,269-271

ManagingFormulasinCells,419

ManagingGroupingofRowsofUserData,291

ManagingKeyboardInteraction,484

ManagingOutlines(RangeGroups)ofRowsandColumns,296

ManagingPrinting,539

ManagingSortingofRowsofUserData,300-301

Spread Windows Forms Developer’s Guide 714

Copyright © GrapeCity, inc. All rights reserved.

Page 716: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

mappingkeys,495,54,507-509

maps

defaultinputmapchange,502-503

defaultkeyboardmapping,493-494,487-493

inputmapforchildview,509-512

margins

printing,556-557,550-554

markers,187-189

marketcharts,582-584

MarketData(High-Low)Charts,582-584

mask

celltype,325-326

matching

insearch,237-238

maximumiteration,424-425

menu

contextmenu,208-209

mergepolicy,178-180

merging,178-180

cells,178-180,56

contrastwithspanning,178-180

introduction,178-180

message,663

models

axis,87-89

base,87-89

basisforcustomization,65,87

data,87-89

default,87-89

interfaces,87-89

optionalinterfaces,97-98

selection,87-89

sorting,300-301

span,87-89

style,87-89

types,87-89

modes

annotation,256-257

buttondisplay,394-395

gradient,152-153

gradientinprogressindicator,367-370

Inking,257-258

operation,240-243

Spread Windows Forms Developer’s Guide 715

Copyright © GrapeCity, inc. All rights reserved.

Page 717: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

monetary

celltype,314-315

move,677-679

moving

columns,262-264

data,477-478

rows,columns,262-264

sheets,70-71

splitbar,214-218

MovingaSheet,70-71

MovingDataonaSheet,477-478

multioptioncell,365-367

multiple

borderlines,174-176

headers,53

optionscelltype,365-367

panes,54,214-218

sheets,54,68-69,67-68

viewports,54,214-218

MultipleSheets,54

NameBoxControl,54

namemanager,436-437

namedexpressionsinformulas,428-429

namedrange

customname,428-429

namedstyles,182-185

names

custom,428-429

sheettab,200-205

tabstrip,200-205

NamespacesOverview,58-59

navigation,495,487-493

navigationkeys,495,54,507-509

NestingFunctionsinaFormula,425

notation

ink,257-258

note,667

notes

cells,404-407

includinginsearch,238

indicatorsize,404-407

printing,548-549

Spread Windows Forms Developer’s Guide 716

Copyright © GrapeCity, inc. All rights reserved.

Page 718: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

NotesforCells,54-55

NoteStyleproperty

forcellnotetodisplay,404-407

numbercell(Seeintegerordoublecelltype),326-331

numbers

columns,73-75

fractions,326-331

pop-upcalculator,384-385

rows,73-75

objectmodels,65,87-89

using,65

ObjectParentage,62

objects

parentage,62

OleDbDataAdaptercontrol

tutorial,464-465

one-basedref.s

informulas,421-423,423-424

opening,521

datafromfile,526

BIFF8formatfile,527-528

fromExcelfile,527-528

fromSpread6file,528-529

fromSpreadXMLfile,526-527

fromtextfile,529-530

skins,537-538

OpeningaCustomTextFile,529-530

OpeningaSpreadCOMFile,528-529

OpeningaSpreadXMLFile,526-527

OpeninganExcelFile,527-528

OpeningExistingFiles,526

OpeningtheChartDesigner,640-641

operationmode,240-243

inkeyboardmapping,485-487

introduction,240-243

operators

conditionalformatting,417-419

OptimizingthePrinting,565

OptimizingthePrintingUsingRules,565-568

OptimizingthePrintingUsingSize,568

optionbuttonscell,365-367

optional

interfaces,97-98

Spread Windows Forms Developer’s Guide 717

Copyright © GrapeCity, inc. All rights reserved.

Page 719: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

orderofprecedence,62

orientation,172-174

printing,568,556-557,550-554,565-568

outlinegrouping,296

Outlook-stylegrouping,292-293,291

overflow

contentsofcell,180-182

overviews

Spreadproduct,48-49

pagefooters

printing,557-562,550-554,562-563

pageheaders

printing,557-562,550-554,562-563

pagemargins

printing,550-554

pageorientation,556-557

pageranges

printing,542-544

pages

numberingprinted,550-554

printing,550-554

printingrangesof,542-544

painting

custom,112-113

customizing,112-113,114-115

palette

colorsinrich-textcell,370-373

panes,54,214-218

(seeviewports),214-218

PanesorViewports,55

parameters

count,429-432

customfunction,429-432

customfunctions,429-432

errorvalue,429-432

parents

hierarchy,455-461

inheritformatting,62

sheet,455-461

paretocharts,633-635

ParsingFormulasinCustomXMLDeserialization,536

parts

Spread Windows Forms Developer’s Guide 718

Copyright © GrapeCity, inc. All rights reserved.

Page 720: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

scrollbars,194-198

viewports,214-218

paste,668

pasting(SeeClipboardoperations),209-211

PDF,540-542

percent

celltype,331-333

performance

improving,480-483

PICmask,325-326

picture

imagecelltype,359-360

pictures

sheetcorner,128-129

PieCharts,593,575

pieplot,592

PiePlotTypes,592

pixels

scrolling,194-198

PlacingaFormulainCells,420-421

PlacingandRetrievingData,468

PlacingChildControlsonaSheet,221-222

PlotCollectionEditor,645-646

PlotTypes,575

PlotsandSeries,602-604

PointCharts,584-585,575

pointers,187-189

locating(HitTest),212-213

resizingroworcolumn,264-265

splitbars,214-218

pointers(Seecursors),111-112

polar,575

PolarAreaCharts,596-597

PolarLineCharts,595-596

PolarPlotTypes,593-594

PolarPointCharts,594-595

PolarStripeCharts,597

policy

merging,178-180

pop-upcalculator,384-385

notdisplaying,326-331

pop-upcalendar,382-384

pop-upclock,382-384

Spread Windows Forms Developer’s Guide 719

Copyright © GrapeCity, inc. All rights reserved.

Page 721: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

portraitorientation(printing),556-557

positioning

cell,220-221

horizontal,220-221

vertical,220-221

precedence

orderof,62

preferred

cellsize,166-167

columnwidth,141-142

height,141-142

rowheight,141-142

roworcolumnsize,141-142

width,141-142

preferredsize,166-167,141-142

PreventingaCellfromReceivingFocus,407

preview

control,570

printing,570

primarybuttons,394-395

PrintActions,519-520

printdialog,550-554

printpagecount,563-564,542-544

printing,563-564,539,542-544

abortdialog,550-554

automaticallydeterminingsettings,568,565-568

border,556-557

borders,550-554

canceling,550-554

cellnotes,548-549

cellranges,547-548,544-545,550-554,545-547

cellswithdata,550-554

centering,556-557

color,550-554

colors,556-557

columnheaders,550-554

columns,550-554

customizing,550-554

data,550-554

dialog,569,569

dialogs,550-554

fittingonpages,550-554

Spread Windows Forms Developer’s Guide 720

Copyright © GrapeCity, inc. All rights reserved.

Page 722: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fittingtopages,568,565-568

footers,557-562,562-563

grid,556-557

gridlines,550-554

headers,557-562,562-563

hierarchy,542

introduction,539

jobname,550-554

justification,556-557

margins,556-557,550-554

namingjobs,550-554

numbering,550-554

orderofprintedpages,550-554

orientation,568,556-557,550-554,565-568

pagefooter,557-562,550-554,562-563

pageheader,557-562,550-554,562-563

pagemargins,550-554

pagenumbers,550-554

pageranges,550-554,542-544

PDFfile,540-542

preview,570

printdialog,550-554

printername,550-554

ranges,547-548,544-545,550-554,542-544,545-547

rowheaders,550-554

rows,550-554

scaling,568,550-554,565-568

sendingtotheprinter,539-540

shading,550-554

shadows,556-557

shapes,549-550

sheetborders,550-554

sheets,539-540

sizing,568,550-554,565-568

SmartPrint,568,565-568

specifyingprinteddata,547-548,568,544-545,542-544,545-547,565-568

specifyingtheprinter,550-554

watermark,564-565

whitespace,556-557

zoom,568,550-554,565-568

zooming,556-557

PrintingaChildViewofaHierarchicalDisplay,542

PrintingaRangeofCellsonaSheet,545-547

Spread Windows Forms Developer’s Guide 721

Copyright © GrapeCity, inc. All rights reserved.

Page 723: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

PrintingaSheetwithCellNotes,548-549

PrintingaSheetwithShapes,549-550

PrintinganAreaoftheSheet,547-548

PrintinganEntireSheet,539-540

PrintingandPDF,55

PrintingParticularPages,542-544

PrintingthePortionoftheSheetwithData,544-545

PrintingtoPDF,540-542

ProductOverview,48-49

Spread,48-49

ProductRequirements,25

progressindicator,367-370

gradient,367-370

project,28-30

protecting

cells,392-394

ProvidingaPreviewofthePrinting,570

QuickStartWizard,55

radar,575

RadarAreaCharts,600

RadarLineCharts,599-600

RadarPlotTypes,597-598

RadarPointCharts,598-599

RadarStripeCharts,600-601

radiobuttoncell(Seemultioptioncell),365-367

rangegrouping,296

ranges

cells,85-86

customname,428-429

filling,472-473

grouping,296

savingtoHTMLTableelement,524-525

sorting,56

sortingdata,303-305

ratio

tabstriptoscrollbarwidths,200-205

RearrangingDataonaSheet,477

recalculating

formulasautomatically,425-426

RecalculatingandUpdatingFormulasAutomatically,425-426

recalculationcycle,424-425

recalculations

Spread Windows Forms Developer’s Guide 722

Copyright © GrapeCity, inc. All rights reserved.

Page 724: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

suspending,480-483

recursing,424-425

redo,211-212

redo(undo)

overview,58

redrawing

suspending,480-483

reference,233-234,236

referencestyles

cells,421-423

sheets,423-424

references

circular,424-425

toacell,421-423

toasheet,423-424

regionalsettings(Windows),314-315

regularexpression

celltype,333-334

relocating

rows,columns,262-264

removing

cellspans,176-178

columns,76-77

data,479-480

headers(turningoff),82-84

rows,76-77

rows,columns,262-264

sheets,71-72

splitbars,214-218

RemovingaRoworColumn,76-77

RemovingaSheet,71-72

RemovingDatafromaSheet,479-480

renderer,105-109

renderers

celltypes,308-309

text,57

rendering

customizing,112-113

renderingtext,57

repainting

layout,480-483

suspending,480-483

repeat

Spread Windows Forms Developer’s Guide 723

Copyright © GrapeCity, inc. All rights reserved.

Page 725: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

fillingcells,472-473

RepeatedlyFillingaRangeofCellswithCopiedCells,472-473

RepeatingRowsorColumnsonPrintedPages,562-563

replacing

data,478-479

resetting

partsofcomponent,253,251-253

ResettingPartsoftheInterface,251-253

resize,167-168,227-228,679-680

resizeroworcolumncursor,264-265

resizing

allowinguser,264-265

cells,166-167

columns,264-265,141-142

includingheaders,141-142

rows,264-265,141-142

rowsandcolumns,264-265

ResizingaCelltoFittheData,166-167

ResizingaTable,227-228

ResizingtheDatatoFittheCell,167-168

ResizingtheRoworColumntoFittheData,141-142

restricting

columnentry,261-262

rowentry,261-262

resuming

layout,480-483

ReturningInformationforaClickedCell,407-408

richtext

format,370-373

celltype,370-373

rich-textcell

loadingRTFfile,370-373

rich-textcells

messagebox,370-373

RichTextBox

inrich-textcell,370-373

right-clickmenu,208-209

Right-To-LeftLayouts,55

right-to-leftsupport,114-115

rotation,611-612

rowheaders,78-79

automatictext,146-148

Spread Windows Forms Developer’s Guide 724

Copyright © GrapeCity, inc. All rights reserved.

Page 726: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

content,148-150

customtext,148-150

displaying,82-84

gridlines,153-156

height,156-157

hiding,82-84

multiple,53

multiplecolumns,79-82

printing,550-554

spans,157-159

style,150-152

text,146-148,148-150

rowheight

preferredsize,141-142

RowPreview,55

rows

adding,75-76

alternating,143-145

appearancesettings,139,73

customfilters,283

filtering,276,269-271

freezing,265-267

grouping,292-293,291,296

headers,78-79

height,139-141

hiding,77-78

leadingfrozen,265-267

moving,262-264

number,73-75

patterns,143-145

removing,262-264,76-77

resizing,264-265,141-142

restrictingentry,261-262

shortcutobject,139,59-62,73

sorting,56,303-305,303

stylesoffilteredrows,273-276

tags,247-248

trailingfrozen,265-267

RTFfile

rich-textcell,370-373

RTLsupport,114-115

rule

average,416-417

Spread Windows Forms Developer’s Guide 725

Copyright © GrapeCity, inc. All rights reserved.

Page 727: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

color,409-411

databar,411-413

highlight,413-415

icon,415-416

scale,409-411

top10,416-417

rules,408-409

save,638-639

inputmaps,512-513

saving,521

dataasXML,525-526

datatofile,521

PDFfile,540-542

skins,537

toExcelfile,522-523

toHTMLtable,521

toHTMLTableelement,524-525

toSpreadXMLfile,521-522

totextfile,523-524

toXML(rawdata),521

SavingaSkin,537

SavingandLoadingaSkin,536-537

SavingandLoadingMapFiles,512-513

SavingDatatoaFile,521

SavingorLoadingaChart,638-639

SavingSpreadsheetDatatoSimpleXML,525-526

SavingtoaSpreadXMLFile,521-522

SavingtoaTextFile,523-524

SavingtoanExcelFile,522-523

SavingtoanHTMLTable,524-525

scale

dpi,207-208

scaling

allowinguser,207

printing,556-557

scroll,680-681

scrollarrows,194-198

scrollbarshaft,194-198

scrollbars,194-198

events,194-198

horizontal,198-200

introduction,194-198

Spread Windows Forms Developer’s Guide 726

Copyright © GrapeCity, inc. All rights reserved.

Page 728: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

tips,198-200

tracking,194-198

using,194-198

vertical,198-200

scrollboxes,194-198

scrolltips,198-200

scrollableviewports,214-218

scrolling

scrollbars,194-198

scrolltips,198-200

smooth,194-198

search

cells,238-239

searchdialog

advancedoptions,238

standardoptions,237-238

searching,238-239

alternate,237-238

cells,238-239

includingcellnotes,238

includingcelltags,238

includingheaders,238

methods,238-239

withdialog,238,237-238

SearchingandSearchDialog,55

SearchingforDatawithCode,238-239

secondarybuttons,394-395

security

hostingcomponentonWebpage,209

SelectingActions,517-518

selection,681-683

Selectionmodel,87-89

selections

appearance,243-246

colors,243-246

customizing,243-246

hiding,247

indicator,243-246

operationmode,240-243

overview,239

using,239

semi-transparentlayer

selectioncolor,243-246

Spread Windows Forms Developer’s Guide 727

Copyright © GrapeCity, inc. All rights reserved.

Page 729: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

separators

currency,314-315

viewports,214-218

series,602-604

SeriesCollectionEditor,647

setting

activecell,84-85

activesheet,66-67

cellcolor,160-162

columnwidth,139-141

currencyminmax,380-382

richtextcell,370-373

rowheight,139-141

SettingaBackgroundImageforaSheet,117-118

SettingaBackgroundImagetoaCell,162-164

SettingaBarcodeCell,336-341

SettingaButtonCell,341-345

SettingaCheckBoxCell,345-348

SettingaColorPickerCell,348-352

SettingaComboBoxCell,352-355

SettingaCurrencyCell,314-315

SettingaDate-TimeCell,315-317

SettingaGcDateTimeCell,317-319

SettingaGcNumberCell,319-321

SettingaGcTextBoxCell,321-323

SettingaGeneralCell,323-325

SettingaHyperlinkCell,355-359

SettingaListBoxCell,360-362

SettingaMaskCell,325-326

SettingaMultipleOptionCell,365-367

SettingaMultiple-ColumnComboBoxCell,362-365

SettingaNumberCell,326-331

SettingaPercentCell,331-333

SettingaProgressIndicatorCell,367-370

SettingaRegularExpressionCell,333-334

SettingaRichTextCell,370-373

SettingaSliderCell,373-377

SettingaTextCell,334-335

SettinganImageCell,359-360

SettingandResettingUserInteraction,249

settingcelltype

barcode,336-341

Spread Windows Forms Developer’s Guide 728

Copyright © GrapeCity, inc. All rights reserved.

Page 730: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

button,341-345

checkbox,345-348

colorpicker,348-352

combobox,352-355,360-362,362-365

currency,314-315

datetime,315-317

double,326-331

general,323-325

hyperlink,355-359

image,359-360

mask,325-326

multipleoption,365-367

percent,331-333

progressindicator,367-370

regularexpression,333-334

slider,373-377

text,334-335

SettingFixed(Frozen)RowsorColumns,265-267

SettingTableStyles,229-232

SettingtheAppearanceofFilterIndicators,283

SettingtheAppearanceofFilteredRows,273-276

SettingtheAppearanceofGroupedRows,293-294

SettingtheAppearanceofSortIndicators,305-307

SettingtheAppearanceoftheDisplayoftheFilterItemList,281-283

SettingtheBackgroundColorsforaSheet,116-117

SettingtheCellTypesoftheRegister,44-46

SettingtheComponenttotheOriginalAppearance,99-101

SettingtheHeightorWidthofHeaderCells,156-157

SettingtheRowHeightorColumnWidth,139-141

SettingupConditionalFormattingofaCell,417-419

SettingupPreviewRows,267-269

SettinguptheFormulaProvider,434-436

SettinguptheFormulaTextBox,433-434

SettinguptheNameBox,436-437

SettingUptheRowsandColumnsoftheRegister,42-44

settings

appearance,99,66

Clipboardoptions,209-211

composite,62

shadows

printing,556-557

shape,683

camera,258-260,50-51

Spread Windows Forms Developer’s Guide 729

Copyright © GrapeCity, inc. All rights reserved.

Page 731: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ShapeActions,519

shapes,487-493,605-606

adding,254-256

feature,55-56

floatingobjects,253-254

overview,253-254

printing,549-550

Shapes,Drawings,andAnnotations(FreehandDrawing),55-56

sheetcorner,128-129

sheetindex

zero-basedinExcel,527-528

sheetnametabs,200-205

sheetnames

tabstrip,200-205

sheetskins(Seeskins),537,124-126

sheettab

custompainting,112-113,114-115

sheettabs,200-205

custompainting,112-113

Sheet-LevelActions,518-519

sheets

activesheet,66-67

adding,68-69

Annotationmode,256-257

appearancesettings,115,66

childviews,455-461

colors,116-117

controlon,221-222

copying,69-70

copyingtoanothercomponent,67-68

corner,128-129

filtering,276

findingbyname,67-68

headers,78-79

hiding,72-73

moving,70-71

multiple,54,67-68

names,200-205

printing,539-540

printingborders,550-554

referencestyle,423-424

removing,71-72

Spread Windows Forms Developer’s Guide 730

Copyright © GrapeCity, inc. All rights reserved.

Page 732: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

shortcutobject,115,59-62,66

skins,124-126,126-128

stylesoffilteredrows,273-276

tabstrip,200-205

tabs,200-205

tags,247

templates,124-126,126-128

shortcutkeys

Clipboardoperations,209-211

shortcutobjects,59-62

cell,159-160,59-62,84

column,139,59-62,73

header,78-79,59-62

row,139,59-62,73

sheet,115,59-62,66

ShowingorHidingaRoworColumn,77-78

ShowingorHidingaSheet,72-73

ShowingorHidingFilterIndicators,285

ShowingorHidingHeaders,82-84

ShrinkToFit,167-168

size,614-615

cells,166-167

determiningbest,166-167

headers,156-157

ofroworcolumn,141-142

Size-Height,Width,andDepth,614-615

sizing

cellnoteindicator,404-407

skins,56-57,124-126

applying,124-126

creating,126-128

custom,56-57

defined,124-126

editor,126-128

files,536-537

loading,537-538

predefined,56-57

saving,537

SheetSkinEditor,124-126,126-128

SheetSkinEditorverb,124-126

spreadsheet,124-126,126-128

SkinsandStylesforCustomizedAppearance,56-57

slidercontrol,373-377

Spread Windows Forms Developer’s Guide 731

Copyright © GrapeCity, inc. All rights reserved.

Page 733: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

smartclient,209

SmartPrintfeature,568,565-568

smoothscrolling,194-198

sort,228-229,683-684

sortindicators,301-303

hiding,305-307

rowlocation,305-307

sorting,56,300-301

affectondatamodels,300-301

celltypes,300-301

columnsautomatically,303

datainrange,303-305

grouping,292-293

hidingindicators,305-307

inSpreadDesigner,303-305

indicatorrow,305-307

indicators,305-307,205-207

introduction,300-301

rowsautomatically,303

rowsorcolumns,303-305

SortingaTable,228-229

SortingRowsorColumns,56

SortingRows,Columns,orRanges,303-305

spacing

betweengroupnames,294-295

spanmodel,87-89

SpannableCells,56

spanning

cells,176-178,56

headercells,157-159

spans

adding,176-178

columnheaders,157-159

headercells,157-159

removing,176-178

rowheaders,157-159

sparkline,56

add,185-187

graph,185

grouping,190-193

horizontalaxis,189-190

switch,190-193

Spread Windows Forms Developer’s Guide 732

Copyright © GrapeCity, inc. All rights reserved.

Page 734: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

ungroup,190-193

verticalaxis,189-190

Sparklines,56

SpecifyingaCellReferenceinaFormula,421-423

SpecifyingaSheetReferenceinaFormula,423-424

SpecifyingHorizontalandVerticalAxes,189-190

SpecifyingWhattheUserCanSelect,240-243

SpecifyingWhattoPrint,539

spinbuttons,377-379

splitbars,54,214-218

events,214-218

removing,214-218

splitboxes,218-220

alignment,218-220

display,218-220

parts,218-220

using,214-218

splitdisplay,54

splitpointer,214-218

Spread

skins,126-128

SpreadDesigner,56

overview,56

StartingtheSpreadWizard,38

Step1:AddingSpreadtoaDataBindingProject,463

Step2:SettinguptheDatabaseConnection,463-464

Step3:SpecifyingtheDatatoUse,464-465

Step4:CreatingtheDataSet,465-466

Step5:BindingSpreadtotheDatabase,466

Step6:ImprovingtheDisplaybyChangingtheCellType,466-467

sticky,404-407

StripeCharts,585-586,575

structured,236

style,229-232

stylemodel,87-89

styles,56-57

cellborders,168-172

filteredrows,273-276

fontinrich-textcell,370-373

forcells,182-185

headers,150-152

named,182-185

sheetcorner,128-129

Spread Windows Forms Developer’s Guide 733

Copyright © GrapeCity, inc. All rights reserved.

Page 735: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

sheettabstrip,200-205

XPthemesoverview,58

subeditors,386-387,213-214

subregion

forcursorcustomization,111-112

surfacecharts,575

suspending

layout,480-483

swapping

data,478-479

SwappingDataonaSheet,478-479

symbols

currency,314-315

decimal,314-315

tab,684

tabstrip,200-205

appearance,200-205

buttons,200-205

cursors,200-205

custompainting,112-113,114-115

display,200-205

placement,200-205

width,200-205

TabStripandSheetNameTabs,57

table,236,223-224,224-227,227-228,228-229,229-232,222-223,232-233

TableDisplayintheSheetCorner,132-134

Tables,57

tabletPCinking,257-258

TabletPCsupport

overview,54

tabs

sheetnames,200-205

tags,248-249,247-248,247

incells,248-249

incolumns,247-248

inrows,247-248

insheets,247

includinginsearch,238

template

skinas,126-128

templates

cells,182-185

Spread Windows Forms Developer’s Guide 734

Copyright © GrapeCity, inc. All rights reserved.

Page 736: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

sheets,536-537

skins,536-537

styles,182-185

text

automaticcompletionincombobox,352-355

celltype,334-335

columnheaders,146-148,148-150

rowheaders,146-148,148-150

searching,238-239

textcell(seegeneralcelltype),323-325

textcolor

setting,160-162

TextDisplayintheSheetCorner,131-132

TextProperty

inFpSpreadcontrol,213

textrenderer,57

TextRenderingwithGDI,57

texttips,402-404

appearance,402-404

scrolltips,198-200

TextChangedEvent

inFpSpreadcontrol,213

TextRendererassembly,57

TextRendererclass,57

theme

skinas,126-128

thinclient,209

tick,373-377

times

pop-upclock,382-384

tips

texttips,402-404

TitleandSubTitle,57-58

tooltips

cell,402-404

toolbars

floatingtoolbar,433-434

tooltip,665-667

Top,Bottom,orAverageRules,416-417

TouchSupport,58,663

track,373-377

tracking

scrollbars,194-198

Spread Windows Forms Developer’s Guide 735

Copyright © GrapeCity, inc. All rights reserved.

Page 737: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

trailing

frozenrowsorcolumns,265-267

transparency

imagecell,359-360

transparent

image,359-360

trusted

hostingcomponentonWebpage,209

Tutorial:BindingtoaCorporateDatabase(OlderVisualStudio),463

Tutorial:CreatingaCheckbookRegister,41-42

tutorials

databinding,463

typeahead,385-386

unboundrows

adding,447-448,450-451,448-450

UnderlyingKeystrokeProcessing,484-485

UnderlyingModels,65

UnderstandingAdditionalFeaturesofCellTypes,377

UnderstandingCellTypeBasics,308-309

UnderstandingCharts,571

UnderstandingEditModeinaCell,391-392

UnderstandingEnhancedRowFiltering,286-289

UnderstandingHeaders,78-79

UnderstandingHowCellTypeAffectsModelData,312-313

UnderstandingHowCellTypesDisplayandFormatData,309-312

UnderstandingHowCellTypesWork,308

UnderstandingPartsoftheComponent,32

UnderstandingSimpleRowFiltering,272-273

UnderstandingStructuredReferenceSyntaxRules,235-236

UnderstandingStructuredReferences,233-234

UnderstandingtheAxisModel,91-92

UnderstandingtheDataModel,90-91

UnderstandingtheOptionalInterfaces,97-98

UnderstandingthePrintingOptions,550-554

UnderstandingtheProduct,48

UnderstandingtheSelectionModel,92-93

UnderstandingtheSheetModelClassesandInterfaces,87-89

UnderstandingtheSpanModel,93

UnderstandingtheSpreadWizard,38

UnderstandingtheSpreadsheetObjects,66

UnderstandingtheStyleModel,93-96

UnderstandingtheTypesofSheetModels,87

Spread Windows Forms Developer’s Guide 736

Copyright © GrapeCity, inc. All rights reserved.

Page 738: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UnderstandingtheUnderlyingModels,87

UnderstandingTouchGestures,663

UnderstandingTouchMessages,663

UnderstandingTouchSupport,663

undo,211-212

overview,58

UndoandRedoActions,58

updating

formulasautomatically,425-426

userdialog

abortprinting,569

displaying,568-569

printpreview,570

printing,569

userentry

validation,473-477

userselection,240-243

user-defined

functions,429-432

names,428-429

UsingaBoundDataSource,635-637

UsingaCircularReferenceinaFormula,424-425

UsingaTouchKeyboard,664-665

UsinganOutline(RangeGroup)ofRowsorColumns,296-298

UsinganUnBoundDataSource,637

UsingApplicationTags,247

UsingAutomaticSorting,303

UsingConditionalFormattingofCells,408-409

UsingCustomFilterIndicatorImages,283-285

UsingDragOperationstoFillCells,398

UsingEditModeandFocus,391

UsingGrouping,292-293

UsingInputMapswithActionMaps,503-507

UsingOperatorsandSpecialItems,234-235

UsingRawandRepresentedData,637-638

UsingSatelliteAssembliesforLanguages,26

UsingSerialization,530

UsingSmartTagsDrop-Down,32-34

UsingSparklines,185

UsingStructuredReferences,236

UsingTableFilters,224-227

UsingtheAdditionalSpreadControls,432-433

UsingtheChartControl,648

Spread Windows Forms Developer’s Guide 737

Copyright © GrapeCity, inc. All rights reserved.

Page 739: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

UsingtheChartDesigner,639-640,657-658

UsingtheExcelCompatibilityInputMaps,512

UsingtheSpreadWizard,38-39

UsingtheTouchMenuBar,665-667

UsingTouchSupport,663-664

UsingTouchSupportwhenMovingColumnsorRows,677-679

UsingTouchSupportwhenResizingColumnsorRows,679-680

UsingTouchSupportwhenSorting,683-684

UsingTouchSupportwithAutoFit,667

UsingTouchSupportwithCellNotes,667

UsingTouchSupportwithCharts,667-668

UsingTouchSupportwithClipboardOperations,668

UsingTouchSupportwithDragandFill,668-670

UsingTouchSupportwithDrop-DownElements,670-671

UsingTouchSupportwithEditableCells,671-672

UsingTouchSupportwithFiltering,675

UsingTouchSupportwithGrouping,675-676

UsingTouchSupportwithInputManCells,672-675

UsingTouchSupportwithRangeGrouping,676-677

UsingTouchSupportwithScrolling,680-681

UsingTouchSupportwithSelections,681-683

UsingTouchSupportwithShapes,683

UsingTouchSupportwiththeComponent,663

UsingTouchSupportwiththeTabStrip,684

UsingTouchSupportwithViewports,684

UsingTouchSupportwithZooming,684-685

UsingVerbsinthePropertiesWindow,34-36

UsingVisibleIndicatorsintheCell,402

UsingWindowsRegionalSettingsorOptions,25-26

UsingXPThemeswiththeComponent,113-114

validating

userinput,473-477

ValidatingUserInput,473-477

validation,473-477

celltypes,473-477

event-based,473-477

IsValidmethod,473-477

userinput,473-477

verbs

SheetSkins,124-126

vertical

alignment,164-166

Spread Windows Forms Developer’s Guide 738

Copyright © GrapeCity, inc. All rights reserved.

Page 740: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

indent,betweengroupnames,294-295

scrollbars,198-200

viewport,684

viewports,54

columns,214-218

events,214-218

parts,214-218

rows,214-218

separator,214-218

setting,214-218

splitboxes,218-220

views

hierarchy,455-461

panes,54

zooming,207

visible

rowsorcolumns,77-78

visualstyles,113-114

overview,58

VisualStylesforXPThemes,58

Walls,604-605

watermark

whenprinting,564-565

Webpage

hostingthecomponent,209

Webpages

usercontrolon,209

WhenAncestorOfFocused,inmapping,485-487

WhenFocused,inmapping,485-487

whitespace(printing),556-557

width

columns,139-141

headercolumn,156-157

sheettabstrip,200-205

widthdeterminingbest,141-142

wildcards

insearch,237-238

Windowsregionalsettings,314-315

WorkingwithaSubEditor,386-387

WorkingwithAnnotations,256-257

WorkingwithCells,84

WorkingwithCollectionEditors,36-37

WorkingwithEditableCellTypes,313-314

Spread Windows Forms Developer’s Guide 739

Copyright © GrapeCity, inc. All rights reserved.

Page 741: Spread Windows Forms Developer’s Guide · Drawing (Rendering) Style 137-138 Customizing Row, Column, and Cell Appearance 139 Customizing the Row or Column Appearance 139 Setting

WorkingwithGraphicalCellTypes,335-336

WorkingwithHeaders,78

WorkingwithHierarchicalDataDisplay,455-461

WorkingwithMultipleSheets,67-68

WorkingwithSelections,246-247

WorkingwithShapesinCode,254-256

WorkingwithSheets,66

WorkingwithSparklines,190-193

WorkingwiththeActiveCell,84-85

WorkingwiththeActiveSheet,66-67

WorkingwiththeChartControl,571

WorkingwiththeComponent,26

WorkingwiththeRowsandColumns,73

XLSXformat

opening,527-528

XML

savingdatato,525-526

savingrawdata,521

XPthemes,113-114

overview,58

XYBubbleCharts,586-587

XYLineCharts,587

XYPlotTypes,586

XYPointCharts,587-588

XYStripeCharts,588

XYZLineCharts,590-591

XYZPlotTypes,588-589

XYZPointCharts,589-590

XYZStripeCharts,592

XYZSurfaceCharts,591-592

YPlotTypes,575-576

zoom,684-685

zooming

allowinguser,207

printing,556-557

Spread Windows Forms Developer’s Guide 740

Copyright © GrapeCity, inc. All rights reserved.