TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
11 | Page 
end
Binary streams 
procedure SaveToBinStream(Stream: TStream); 
procedure LoadFromBinStream(Stream: TStream); 
procedure SaveRectToBinStream(Rect: TRect; Stream: TStream); 
procedure LoadAtPointFromBinStream(Point: TPoint; Stream: TStream); 
SaveToStream saves cell data and cell properties to a binary stream. LoadFromStream loads cell 
data and cell properties from a binary stream. SaveRectToBinStream saves only cells with in 
rectangle coordinates specified through the Rect parameter. Finally, the method 
LoadAtPointFromBinStream loads cell data and cell properties from the binary stream starting from 
the specified cell coordinate as first top left cell of the data loaded. 
CSV files 
procedure SaveToCSV(FileName: String); 
procedure LoadFromCSV(FileName: String; MaxRows: integer= -1); 
procedure LoadFromStream(AStream: TStream; MaxRows: integer= -1); 
procedure AppendToCSV(FileName: String); 
procedure InsertFromCSV(FileName: String; MaxRows: integer= -1); 
SaveToCSV saves cell data to a CSV file. LoadFromCSV loads cell data from a CSV file. The method 
LoadFromCSVStream loads cell data from a stream as if the stream contains data structured as in a 
CSV file. AppendToCSV appends cell data to an existing CSV file. InsertFromCSV inserts cell data 
loaded from the CSV file as extra rows in the grid. Note that LoadFromCSV & InsertFromCSV have a 
default parameter MaxRows. Without this parameter, all rows in the CSV file are loaded in the grid. 
When the 2
nd
parameter MaxRows is used, this sets the maximum number of rows that will be 
loaded.  
Several properties affect the CSV methods: 
Grid.Delimiter: Char;  
This specifies the delimiter to use for saving and loading with CSV files. By default the Delimiter is 
set to #0. With Delimiter equal to #0, an automatic delimiter guess is used to load data from the 
CSV file. To save to a CSV file, the ; character is used as separator when delimiter is #0. Setting the 
delimiter to another character than #0 forces the CSV functions to operate with this delimiter only. 
Grid.QuoteEmptyCells: Boolean; 
When true, an empty cell in the CSV file is saved as “”, otherwise no characters are written to the 
CSV file. 
Grid.AlwaysQuotes: Boolean; 
When true, every cell value is saved with prefix and suffix quotes, otherwise quotes are only used if 
the cell data contains the delimiter character.  Note that when the cell data contains quotes, the 
data is written with doubled quotes to the file. 
Fixed files 
procedure SaveToFixed(FileName: string;positions: TIntList); 
Pdf links - insert, remove PDF links in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Free C# example code is offered for users to edit PDF document hyperlink (url), like inserting and deleting
add hyperlinks to pdf; add hyperlink to pdf acrobat
Pdf links - VB.NET PDF url edit library: insert, remove PDF links in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Help to Insert a Hyperlink to Specified PDF Document Page
add links to pdf document; clickable pdf links
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
12 | Page 
procedure LoadFromFixed(FileName:string;positions:TIntList; DoTrim: boolean 
= true; MaxRows: integer = -1); 
SaveToFixed saves cell data and column widths to a text file with fixed column lengths. 
LoadFromFixed loads cell data and column widths from a text file with fixed column lengths. The 
TIntList parameter is a list of integer values specifying the character offsets where a column starts 
in the file. TintList is defined in the AdvObj unit, so to use this, include AdvObj in the uses clause of 
your form .PAS file.  
Example: loading from a fixed file 
var 
Il: TintList; 
begin 
Il := TintList.Create(0,0); 
Il.Add(0);   // first column offset 
Il.Add(15);  // second column offset 
Il.Add(30);  // third column offset 
Il.Add(40);  // fourth column offset 
Grid.LoadFromFixedFile(‘myfile.txt’,il); 
Il.Free; 
end; 
Note that LoadFromFixed has two additional default parameters: DoTrim & MaxRows. When DoTrim  
is false, spaces before or after words are not removed. Without MaxRows, all rows in the text file 
are loaded in the grid. When the last parameter MaxRows is used, this sets the maximum number of 
rows that will be loaded. 
HTML files 
procedure SaveToHTML(FileName: String); 
procedure AppendToHTML(FileName: String); 
SavetoHTMLFile saves the cell data to a HTML file and uses the grid.HTMLSettings to control the 
method for saving. The cell data is saved to a HTML table. AppendToHTML appends the cell data to 
an existing HTML file. 
With HTMLSettings, following settings can be done: 
property BorderSize: Integer  
Sets the border size for the HTML table  
property CellSpacing: Integer 
Sets the cellspacing value for the HTML table 
property CellPadding: Integer 
Sets the cellpadding value for the HTML table 
property SaveColor: Boolean 
If true, grid color information is written to the HTML table 
cells 
property SaveFonts: Boolean 
If true, grid font information is written to the HTML table 
cells 
property FooterFile: string 
File that is to be appended after the HTML table in the 
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Embed zoom setting (fit page, fit width). Turn PDF form data to HTML form. Export PDF images to HTML images. Embed PDF hyperlinks to HTML links.
adding hyperlinks to pdf documents; pdf hyperlink
C# Image: Tutorial for Document Management Using C#.NET Imaging
more detailed C# tutorials on each part by following the links respectively are dedicated to provide powerful & profession imaging controls, PDF document, image
add links to pdf online; pdf link to email
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
13 | Page 
final HTML file 
property HeaderFile: string 
File that is inserted before the HTML table in the final 
HTML file 
property TableStyle: string 
Sets additional HTML table style properties 
property PrefixTag: string 
Sets any text that should be written in the HTML file 
before the table is output 
property SuffixTag: string 
Sets any text that should be written in the HTML file after 
the table is output 
property ConvertSpecialChars: Boolean  When true, special characters as >, <, & … are exported 
as respectively &gt; , &lt; , &amp; … 
property ImageBaseName: string; 
Stes the identifier prefix for images in HTML. It is 
important that, when exporting multiple different grids to 
a single HTML file, that each grid uses a unique 
ImageBaseName. 
Property ImageFolder: string; 
Specifies the folder where images that belong in the HTML 
export are stored 
property NonBreakingText: Boolean 
When true, all text is exported as non breaking text, ie. 
all spaces are exported as &nbsp; 
property Summary: string 
Sets the HTML TABLE summary attribute for the exported 
grid 
property AutoPreview: Boolean 
When true, the exported HTML file is automatically 
previewed in an instance of the default browser 
property ExportImages: Boolean 
When true, images in the grid are also exported 
property Width: Integer 
Sets the width percentage of the HTML table 
property XHTML: Boolean 
When true, the output is xHTML compatible 
.NET PDF Document Viewing, Annotation, Conversion & Processing
PDF Write. Insert text, text box into PDF. Edit, delete text from PDF. Insert images into PDF. Edit, remove images from PDF. Add, edit, delete links. Form Process
adding links to pdf in preview; change link in pdf file
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Turn PDF images to HTML images in VB.NET. Embed PDF hyperlinks to HTML links in VB.NET. Available zoom setting (fit page, fit width).
add links to pdf file; add hyperlink to pdf
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
14 | Page 
XML files 
procedure SaveToXML(FileName: String; ListDescr, 
RecordDescr:string;FieldDescr:TStrings); 
Saves the cell data in an XML file with following structure: 
<ListDescr> 
<RecordDescr> 
<FieldDescr[0]>Cell 0,0</FieldDescr[0]
<FieldDescr[1]>Cell 1,0</FieldDescr[1]
<FieldDescr[2]>Cell 2,0</FieldDescr[2]
</RecordDescr> 
<RecordDescr> 
<FieldDescr[0]>Cell 0,1</FieldDescr[0]
<FieldDescr[1]>Cell 1,1</FieldDescr[1]
<FieldDescr[2]>Cell 2,1</FieldDescr[2]
</RecordDescr> 
</ListDescr> 
procedure LoadFromXML(FileName: String; LevelToRow: Boolean = false); 
Loads the grid data from an XML file. When the optional LevelToRow parameter is true, a new row 
is used for every new XML node level, otherwise, XML nodes are added in additional columns. 
Example: 
This code snippet save a grid with 5 columns to XML and uses the text in the column headers as field 
descriptors in the XML file: 
var 
sl: TStringList; 
i: integer; 
begin 
sl := TStringList.Create; 
for i := 0 to grid.ColCount – 1 do  
sl.Add(grid.Cells[I,0]); 
grid.SaveToXML(‘mygrid.xml’, ‘xmllist’‘xmlrecord’, sl); 
sl.Free; 
end; 
A public property that is used for exporting to XML file is XMLEncoding that defaults to 'ISO-8859-1'. 
This property can be used to set a different XML encoding attribute that is saved to the XML file. 
JSON files 
procedure SaveToJSON(FileName: String; 
RecordDescr:string;FieldDescr:TStrings); 
Saves the cell data in an JSON file with following structure: 
{"grid":[{"row":[{"col1":"1:1"},{"col2":"2:1"},{"col3":"3:1"},{"col4":"4:1"}]} 
,{"row":[{"col1":"1:2"},{"col2":"2:2"},{"col3":"3:2"},{"col4":"4:2"}]} 
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
keeps the elements (like images, tables and chats) of original PDF file and maintains the original text style (including font, size, color, links and boldness
pdf email link; add hyperlink to pdf in preview
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET allows C# developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
adding links to pdf; pdf links
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
15 | Page 
,{"row":[{"col1":"1:3"},{"col2":"2:3"},{"col3":"3:3"},{"col4":"4:3"}]} 
,{"row":[{"col1":"1:4"},{"col2":"2:4"},{"col3":"3:4"},{"col4":"4:4"}]} 
,{"row":[{"col1":"1:5"},{"col2":"2:5"},{"col3":"3:5"},{"col4":"4:5"}]} 
,{"row":[{"col1":"1:6"},{"col2":"2:6"},{"col3":"3:6"},{"col4":"4:6"}]} 
,{"row":[{"col1":"1:7"},{"col2":"2:7"},{"col3":"3:7"},{"col4":"4:7"}]} 
,{"row":[{"col1":"1:8"},{"col2":"2:8"},{"col3":"3:8"},{"col4":"4:8"}]} 
,{"row":[{"col1":"1:9"},{"col2":"2:9"},{"col3":"3:9"},{"col4":"4:9"}]} 
]} 
Where “row” is the record descriptor and col1, col2, col3, col4 are the field descriptors for column 
1,2,3 and 4. 
This is the sample code snippet that would product this JSON file: 
var 
SLTStringList
iinteger
begin 
AdvStringGrid1.LinearFill(false); 
AdvStringGrid1.SaveFixedCells := false
SL := TStringList.Create
try 
for i := AdvStringGrid1.FixedCols to AdvStringGrid1.ColCount - 1 do 
SL.Add('col'+inttostr(i)); 
AdvStringGrid1.SaveToJSON('myfile.json','row',SL); 
finally 
SL.Free
end
end; 
ASCII files 
procedure SaveToASCII(FileName: String); 
SaveToASCII saves the cell data to an ASCII file, automatically using column widths to fit the widest 
data in cells available.  A difference with fixed column width files is also that SaveToAscii will 
correctly split cell contents across multiple lines when MultiLineCells is set True. 
procedure AppendToASCII(FileName: String); 
This procedure is identical to SaveToASCII, except that it appends the data to an existing file. Note 
that TAdvStringGrid also comes with a component TAdvGridImportDialog. This dialog can be used to 
allow the user to set the fixed column widths at runtime. From a preview dialog, this is done by 
clicking to set the fixed column widths. The use of this dialog is explained further in this guide. 
VB.NET PDF: Basic SDK Concept of XDoc.PDF
XDoc.PDF for .NET allows VB.NET developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
check links in pdf; convert excel to pdf with hyperlinks
C# Create PDF Library SDK to convert PDF from other file formats
file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc. Create fillable PDF document with fields.
add link to pdf file; pdf edit hyperlink
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
16 | Page 
Access files 
procedure LoadFromMDB(FileName:string; Table: string); 
procedure LoadFromMDBSQL(FileName:string; SQL: string);  
LoadFromMDB loads data from a table in an Access MDB file. All rows and columns are loaded in the 
grid. LoadFromMDB relies on ADO and as such requires that ADO is installed on the machine. 
LoadFromMDBSQL loads data from an Access table with a SQL SELECT command. Note that 
LoadFromMDB is equivalent to LoadFromMDBSQL with the SELECT statement: 
SELECT * from TABLE 
Microsoft Word files 
procedure SaveToDoc(FileName: string; CreateNewDocument: boolean = true); 
This procedure saves the grid data as a table in a MS Word document. By default, this is in a new 
document. When the parameter CreateNewDocument is true, a new document is explicitely 
created, when false, the table will be saved in the default active Word document. 
procedure AppendToDoc(FileName, Bookmark: string); 
Call grid.AppendToDoc(FileName) to add the grid data to an existing MS Word document at the end 
of a document. To insert the grid data at a specific bookmark present in the MS Word document, 
call grid.SaveToDoc(FileName, BookmarkName); 
Microsoft Excel files 
TAdvStringGrid supports importing & exporting Microsoft Excel files in two ways. With the methods 
grid.LoadFromXLS, grid.SaveToXLS, the grid imports & exports XLS files using OLE automation. 
Secondly, a separate component TAdvGridExcelIO offers native import & export without requiring 
that Excel is installed on the machine. It is highly recommended to use TAdvGridExcelIO as it is 
significantly faster, has more features and does not require Microsoft Excel to be installed.  
Using SaveToXLS / LoadFromXLS 
procedure SaveToXLS(Filename:string; CreateNewSheet: boolean = true); 
procedure SaveToXLSSheet(Filename,Sheetname:string); 
Using these methods, the grid contents are saved to a worksheet  in the XLS file, either a default 
worksheet when SaveToXLS(filename) is used, forced to a new worksheet with SaveToXLS(filename, 
true) or saved to a specific named worksheet when calling SaveToXLSSheet(Filename, Sheetname); 
procedure LoadFromXLS(Filename:string); 
procedure LoadFromXLSSheet(Filename, SheetName:string); 
LoadFromXLS loads data from the default worksheet in the grid. With LoadFromXLSSheet, data from 
the named worksheet is loaded. 
Using TAdvGridExcelIO 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
17 | Page 
This is explained in a separate chapter: TAdvStringGrid import/export to XLS via TAdvGridExcelIO 
RTF files 
Via a separate component TAdvGridRTFIO, it is possible to save contents of the grid as RTF file. This 
is a Microsoft Word compatible RTF file with a table that contains the grid data. Using 
TAdvGridRTFIO is explained in the separate chapter: TAdvStringGrid export to RTF files via 
TAdvGridRTFIO. 
Advanced topics on exporting & importing  
To apply transformations on cell data for loading and saving it is easy to create a descendent class 
from TAdvStringGrid and override the SaveCell and LoadCell methods. In these overridden methods 
a transformation such as encryption or decryption can be applied. The basic technique is: 
TEncryptedGrid = class(TAdvStringGrid) 
protected 
function SaveCell(ACol,ARow: Integer):string; override; 
procedure LoadCell(ACol,ARow: Integer; Value: string); override; 
end; 
function TEncryptedGrid.SaveCell(ACol,ARow: Integer): string; 
begin 
Result := Encrypt(GridCells[ACol,ARow]); 
end; 
procedure TEncryptedGrid.LoadCell(ACol,ARow: Integer; Value: string); 
begin 
GridCells[ACol,ARow] := Decrypt(Value); 
end; 
As such, when using methods like SaveToCSV, SaveToXLS, … the information will be exported in 
encrypted format automatically. 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
18 | Page 
TAdvStringGrid sorting capabilities 
TAdvStringGrid supports various ways to sort data inside the grid. Sorting can be triggered by a 
mouse click on a column header or programmatically with various methods. The settings that 
control the behaviour of sorting in the grid are grouped in the SortSettings property. In addition, the 
OnGetFormat event is used to dynamically instruct the grid to the data type to use for the sort. By 
default, sorting on a given column starts comparing cells for the sort for the given column but upon 
finding equal cells, will use columns right from the main sort index column to do further comparing. 
SortSettings 
The settings that control the various sorting capabilities of TAdvStringGrid can be found under the 
property SortSettings. This contains following subproperties: 
AutoColumnMerge: Boolean; 
When true, merged cells in multiple columns are taken 
into account for sorting. Cell merging is explained in 
detail later. 
AutoFormat: Boolean; 
When true, the grid tries to automatically guess the 
format of the data in cells for the compare method 
AutoSortForGrouping: Boolean 
When true, the grid is automatically sorted first before 
a grouping is performed. The sorting is performed on 
the column for which the grouping will be applied. 
BlankPos: TSortBlankPosition; 
Sets the position empty cells get after sorting. This can 
be either blFirst or blLast, specifying empty cells 
should always come first or come last after sorting 
Column: Integer; 
Specifies the main sort index column 
Direction: TSortDirection; 
Sets the sort direction to either ascending or 
descending 
DownGlyph: TBitmap; 
Specifies the glyph to use for indicating a descending 
sort. If no glyph is specified a triangle is drawn. 
FixedCols: Boolean; 
When true, fixed columns are affected by the sort, 
otherwise, fixed columns remain in the original 
sequence after the sort. 
Full: Boolean; 
When true, all columns are taken into account for 
comparing from left to right, starting from the main 
sort index column 
HeaderColor: TColor; 
When different from clNone, the fixed column header 
cell can be painted in a different color for the column 
that is sorted. HeaderColor sets the top gradient start 
color. 
HeaderColorTo: TColor; 
Idem as HeaderColor but sets the top gradient end 
color. 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
19 | Page 
HeaderMirrorColor: TColor; 
Idem as HeaderColor but sets the bottom gradient start 
color. 
HeaderMirrorColorTo: TColor; 
Idem as HeaderColor but sets the bottom gradient end 
color. 
IgnoreBlanks: Boolean; 
When true, empty cells are ignored during the sort and 
can be positioned in the sort either at top or at bottom 
IgnoreCase: Boolean; 
When true, case sensitivity is automatically ignored 
when performing the sort. 
IndexColor: TColor; 
Sets the color of the indexed sort indicators 
IndexDownGlyph: TBitmap; 
Specifies the glyph to use for indicating an descending 
indexed sort. If no glyph is specified a triangle is 
drawn. 
IndexShow: Boolean; 
When true, sorting on an arbitrary column sequence is 
enabled and the indexes of this sequence displayed 
IndexUpGlyph: TBitmap; 
Specifies the glyph to use for indicating an ascending 
indexed sort. If no glyph is specified a triangle is 
drawn. 
InitSortDirection: TSortDirection 
Specifies the initial sort direction. The initial sort 
direction is the direction of the sort upon the first 
column header click on an unsorted column. After the 
first sort, the sort direction toggles for every click. 
NormalCellsOnly: Boolean; 
When true, sorting is applied to normal, i.e. non fixed 
cells only. 
Row: Integer; 
Sets the fixed row where the sort indicator is displayed 
and from where a column header click triggers the 
sort. Maximum value for row is the number of fixed 
rows in the grid. 
Show: Boolean; 
When true, the sort indicator is shown in the column 
header cell 
SingleColumn: Boolean; 
When true, only a single column is sorted. All other 
columns are not affected 
SortOnVirtualCells: Boolean; 
When true, the sorting is performed on cell text set by 
OnGetDisplText instead of the internal grid data. This 
is the default setting as the sort will correspond to 
what can be visibly seen in the grid. 
UndoSort: Boolean; 
When true, a sort undo is possible. This means that 
upon clicking on the header, the sorting toggles 
between ascending, descending and back to unsorted. 
The unsorted sequence is considered as the sequence 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
20 | Page 
before the first sort was performed. 
UpGlyph: TBitmap; 
Specifies the glyph to use for indicating an ascending 
sort. If no glyph is specified a triangle is drawn. 
Specifying the dataformat with OnGetFormat 
The OnGetFormat event is used to instruct the grid which compare method it should use during the 
sorts for each column in the grid. By default, the grid is using an automatic format guess. This 
means that the grid checks if the data in a cell is numeric, a floating point, a date, a date + time or 
just alphabetic data and applies the appropriate compare methods accordingly. Although this auto 
format guess can be convenient, for sorting large and complex amounts of data it is not 
recommended. When mixed numeric and alphabetic data is available in a column, this auto format 
guess is easily confused and the extra checks for guessing the format take extra time. With the 
OnGetFormat event, the compare methods to use can be specified for each column. The event is 
declared as: 
TGridFormatEvent = procedure(Sender : TObject; ACol: Integer; 
var AStyle:TSortStyle; var aPrefix,aSuffix:string) of object; 
The TSortStyle can be: 
ssAlphabetic 
Use alphabetic compare 
ssAlphaCase 
Use case sensitive alphabetic compare 
ssAlphaNoCase 
Use case insensitive alphabetic compare 
ssAlphaNumeric 
Use combined alphabetic & numeric compare, ie. 1,5,100,A,M,K,a,r,z… 
ssAlphaNumericNoCase   Use combined alphabetic & numeric compare without case sensitivity 
ssAnsiAlphaCase 
Use Ansi case sensitive alphabetic compare 
ssAnsiAlphaNoCase 
Use Ansi case insensitive alphabetic compare 
ssAutomatic 
Let grid automatically determine the format of data for comparing 
ssCheckBox 
Use checkbox value compare 
ssCustom 
Use custom compare method (explained later) 
ssDate 
Use date compare 
ssDateTime 
Use both date & time compare 
ssFinancial 
Use floating point with optionally thousand separator compare 
ssHTML 
Use HTML compare, ignoring HTML tags in text for compare 
ssImages 
Use image index compare 
ssNumeric 
Use numeric compare 
Documents you may be interested
Documents you may be interested