TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
171 | Page 
function TImageCell.IsBackground: boolean; 
begin 
Result := false; 
end; 
procedure TImageCell.SetPicture(const Value: TGDIPPicture); 
begin 
FPicture.Assign(Value); 
end;
The use of the TImageCell and TComplexGradientCell is done with following code:
cg := TComplexGradientCell.Create; 
cg.StartColor := clBlue; 
cg.EndColor := clAqua; 
cg.GradientMode := LinearGradientModeHorizontal; 
AdvStringGrid1.AddInterfacedCell(1,3,cg); 
ig := TImageCell.Create; 
ig.Picture.LoadFromFile('.\personal.png'); 
AdvStringGrid1.AddInterfacedCell(2,4,ig); 
Pdf hyperlink - 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
adding hyperlinks to pdf documents; add hyperlink to pdf in preview
Pdf hyperlink - 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 hyperlink to pdf online; add url to pdf
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
172 | Page 
Using the component TAdvGridDropDown 
Introduction 
TAdvGridDropDown is an edit control with dropdown button showing a TAdvStringGrid control in its 
dropdown window. This means that the full feature set of TAdvStringGrid is available to present 
information in the dropdown list. This goes from all graphic capabiilites in TAdvStringGrid to its 
search, edit, narrow down, sort, column sizing, column moving, controls in cells etc...  
You can easily see TAdvGridDropwn as a multi column combobox on steroids. TAdvGridDropDown 
descends from TAdvCustomDropDown. This means that the control's dropdown inherits the optional 
header and footer and that you can set text, image & buttons in the header and the footer, just like 
with all other dropdown controls. This is configurable in a straightforward and intuitive way via the 
AdvGridDropDown.DropDown* properties.  
Access to the grid 
The grid on the dropdown is accessible via AdvGridDropDown.Grid: TAdvStringGrid. This way, you 
can access all properties, events and methods of the grid via code. Note that the most important 
and useful events of TAdvStringGrid are exposed on TAdvGridDropDown level, for example events 
like OnGridGetAlignment, OnGridGetCellColor and many more. The equivalent events on 
TAdvStringGrid level are OnGetAlignment, OnGetCellColor. For full details on the functionality of 
these events, please refer to the TAdvStringGrid developers guide.  
Data in the dropdown 
The data displayed in the dropdown grid can be setup in two ways. This is selected with the 
AdvGridDropDown.UseItems property. When this is false, data is directly set in the grid, ie. via 
AdvGridDropDown.Grid.Cells[col,row]: string or the many functions TAdvStringGrid exposes like 
using AdvGridDropDown.Grid.LoadFromCSV() or also setting number of columns and rows via 
AdvGridDropDown.Grid.ColCount / AdvGridDropDown.Grid.RowCount. Alternatively, when 
AdvGridDropDown.UseItems is true, all data displayed in the dropdown is configured by adding the 
number of required columns via the collection AdvGridDropDown.Columns and adding the data for 
the rows in the grid via AdvGridDropDown.Items. Following code snippet fills the grid with 5 
columns and 50 rows: 
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.
pdf edit hyperlink; chrome pdf from link
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.
adding a link to a pdf; add hyperlinks pdf file
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
173 | Page 
var 
i,j: integer; 
begin 
AdvGridDropDown1.Columns.Clear; 
for i := 1 to 5 do 
begin 
with AdvGridDropDown1.Columns.Add do 
begin 
Header := 'Header ' + inttostr(i); 
end; 
end; 
AdvGridDropDown1.Items.Clear; 
for i := 1 to 50 do 
begin 
with AdvGridDropDown1.Items.Add do 
begin 
for j := 1 to 5 do 
begin 
Text.Add('C'+IntToStr(i)+ ' row '+inttostr(i)); 
end; 
end; 
end; 
end; 
Data lookup relationship  
The relationship between the text in the edit control and the data dislayed in the dropdown grid is 
set with AdvGridDropDown.LookupColumn. The LookupColumn determines what column in the grid 
the text in the edit control corresponds to and vice versa. By default, the lookup method is 
lmLookup. This means when the dropdown grid is displayed, the grid performs a lookup on the 
(partial) text typed in the column set via AdvGridDropDown.LookupColumn. Note that case 
sensitivity for this lookup is set with AdvGridDropDown.CaseSensitive.  
Following example demonstrates simple lookup: 
begin 
AdvGriddropDown1.Columns.Clear; 
AdvGriddropDown1.Columns.Add.Header := 'Number'; 
AdvGriddropDown1.Columns.Add.Header := 'Name'; 
AdvGridDropDown1.Grid.FloatFormat := '%.0f'; 
AdvGridDropDown1.LookupMethod := lmLookup; 
AdvGridDropDown1.Items.Clear; 
AdvGridDropDown1.BeginUpdate; 
AdvGridDropDown1.Items.Add.Text.CommaText := '1,Monday'; 
AdvGridDropDown1.Items.Add.Text.CommaText := '2,Tuesday'; 
AdvGridDropDown1.Items.Add.Text.CommaText := '3,Wednesday'; 
AdvGridDropDown1.Items.Add.Text.CommaText := '4,Thursday'; 
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Ability to get word count of PDF pages. Change Word hyperlink to PDF hyperlink and bookmark. Free online Word to PDF converter without email.
add hyperlink to pdf acrobat; add hyperlinks to pdf online
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Merge all Excel sheets to one PDF file in VB.NET. Change Excel hyperlink to PDF hyperlink and bookmark. Export PDF from Excel with cell border or no border.
pdf link to attached file; adding hyperlinks to a pdf
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
174 | Page 
AdvGridDropDown1.Items.Add.Text.CommaText := '5,Friday'; 
AdvGridDropDown1.Items.Add.Text.CommaText := '6,Saturday'; 
AdvGridDropDown1.Items.Add.Text.CommaText := '7,Sunday'; 
AdvGridDropDown1.EndUpdate; 
AdvGridDropDown1.LookupColumn := 1; 
end; 
When typing 'T', the dropdown grid selects the first day with 'T', ie. 'Tuesday'. When typing 'h' next, 
the grid automatically selects 'Thursday';  
An alternative lookup method is the lmNarrowDown method. With this method, the content of the 
dropdown grid narrows down to rows that match the entered values. It is important to note that in 
order to use the lmNarrowDown method, the data in the grid must be filled via 
AdvGridDropDown.Grid and not via Items. To setup the same sample but with narrow down lookup, 
following code can be used: 
AdvGriddropDown1.Columns.Clear; 
AdvGriddropDown1.Columns.Add.Header := 'Number'; 
AdvGriddropDown1.Columns.Add.Header := 'Name'; 
AdvGridDropDown1.Grid.FloatFormat := '%.0f'; 
AdvGridDropDown1.UseItems := false; 
AdvGridDropDown1.Grid.RowCount := 8; 
AdvGridDropDown1.Grid.ColCount := 2; 
AdvGridDropDown1.Grid.Cells[0,0] := 'Number'; 
AdvGridDropDown1.Grid.Cells[1,0] := 'Name'; 
AdvGridDropDown1.Grid.Rows[1].CommaText := '1,Monday'; 
AdvGridDropDown1.Grid.Rows[2].CommaText := '2,Tuesday'; 
AdvGridDropDown1.Grid.Rows[3].CommaText := '3,Wednesday'; 
AdvGridDropDown1.Grid.Rows[4].CommaText := '4,Thursday'; 
AdvGridDropDown1.Grid.Rows[5].CommaText := '5,Friday'; 
AdvGridDropDown1.Grid.Rows[6].CommaText := '6,Saturday'; 
AdvGridDropDown1.Grid.Rows[7].CommaText := '7,Sunday'; 
AdvGridDropDown1.LookupColumn := 1; 
AdvGridDropDown1.LookupMethod := lmNarrowDown; 
Accessing grid and setting up grid properties  
TAdvGridDropDown exposes 3 configuration class properties directly, ie: 
AdvGridDropDown.MouseActions, AdvGridDropDown.Navigation, AdvGridDropDown.SearchFooter. 
With these properties, the dropdown grid's mouse interaction, keyboard interaction and search 
footer can be directly configured. This affects the dropdown grid's behavior in exactly the same way 
as in the TAdvStringGrid. The TAdvStringGrid documentation can as such be consulted for all 
information concerning these properties. Further detailed configuration can be done by directly 
accessing the TAdvStringGrid in the dropdown via AdvGridDropDown.Grid. Some further commonly 
used grid properties are exposed on AdvGridDropDown level:  
ColumnMoving: When true, columns can be reordered with drag & drop 
ColumnSizing: When true, column sizes can be changed by dragging 
GridEditable: When true, inplace editing in the grid is enabled 
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Please click to see details. PDF Hyperlink Edit. RasterEdge PDF SDK for .NET package offers robust APIs for editing PDF document
pdf email link; add links to pdf document
C# PDF Library SDK to view, edit, convert, process PDF file for C#
Please click to see details. C#.NET: Edit PDF Hyperlink. RasterEdge PDF SDK for .NET package offers robust APIs for editing PDF document
add links to pdf in preview; add links to pdf in acrobat
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
175 | Page 
RowMoving: When true, rows can be reordered with drag & drop 
RowSizing: When true, row sizes can be changed by dragging 
RowSelect: When true, unit of Selection in the grid is per row, otherwise, per cell 
SelectionColor, SelectionColorTo,SelectionTextColor: Color of selected cell or row in the 
grid 
Sorting: Set to gsSingleColumn, gsMultiColumn to enable sorting on single column / multi 
column by click on the header in the grid 
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Able to get word count in PDF pages. Change Word hyperlink to PDF hyperlink and bookmark. Free online Word to PDF converter without email.
add links to pdf file; pdf links
.NET PDF SDK - Description of All PDF Processing Control Feastures
Add signature image to PDF file. PDF Hyperlink Edit. Support adding outline; More about PDF Hyperlink Edit ▶. PDF Metadata Edit. Support
pdf hyperlinks; add hyperlink pdf file
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
176 | Page 
Customizing the item class in TAdvGridDropDown 
TAdvGridDropDown can hold the information shown in the dropdown grid in the Items collection. 
The component TAdvGridDropDown was designed to offer a customizable item collection. With a 
customizable item collection, additional properties can be added that control for example 
appearance or behavior of cells in the grid dropdown. 
TAdvGridDropDown has by default a collection of items of the type TDropDownItems. The item class 
in the TDropDownItems collection is TDropDownItem. By creating a new class TAdvGridDropDownEx, 
descending from TAdvGridDropDown, the virtual method CreateItems can be overridden to create a 
custom collection. At the same time, the override of the GetItemClass function in the items 
collection class can be used to return a new class, descending from TDropDownItem. Summarized, 
in code this looks like: 
TDropDownItemEx = class(TDropDownItem) 
end; 
TDropDownItemsEx = class(TDropDownItems) 
protected 
function GetItemClass: TDropDownItemClass; override; 
end; 
TAdvGridDropDownEx = class(TAdvGridDropDown) 
protected 
function CreateItems(AOwner: TComponent): TDropDownItems; override; 
end; 
In this sample, we apply this technique to create a TDropDownItem descending class where a Color 
and FontStyle property is added. This Color and FontStyle will be used to control the appearance of 
the items in the dropdown grid. 
Adding the Color and FontStyle property in TDropDownItemEx is done with: 
TDropDownItemEx = class(TDropDownItem) 
private 
FTag: integer; 
FColor: TColor; 
FFontStyle: TFontStyles; 
public 
constructor Create(Collection: TCollection); 
published 
property Color: TColor read FColor write FColor; 
property FontStyle: TFontStyles read FFontStyle write FFontStyle; 
property Tag: integer read FTag write FTag; 
end; 
{ TDropDownItemEx } 
constructor TDropDownItemEx.Create(Collection: TCollection); 
begin 
inherited; 
FTag := 0; 
FColor := clWindow; 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
177 | Page 
FFontStyle := []; 
end; 
Then, in TAdvGridDropDownEx, the virtual method DoGridGetCellColor is overridden to use the 
extra information in the item class to set a background color and font style:  
TAdvGridDropDownEx = class(TAdvGridDropDown) 
protected 
procedure DoGridGetCellColor(Sender: TObject; ARow, ACol: Integer; 
AState: TGridDrawState; ABrush: TBrush; AFont: TFont); override; 
function CreateItems(AOwner: TComponent): TDropDownItems; override; 
end; 
procedure TAdvGridDropDownEx.DoGridGetCellColor(Sender: TObject; ARow, 
ACol: Integer; AState: TGridDrawState; ABrush: TBrush; AFont: TFont); 
begin 
inherited; 
if (ARow >= Grid.FixedRows) then 
begin 
ABrush.Color := (Items[ARow - Grid.FixedRows] as 
TDropDownItemEx).Color; 
AFont.Style :=  (Items[ARow - Grid.FixedRows] as 
TDropDownItemEx).FontStyle; 
end; 
end; 
From application code, the items are initialized with the code:  
begin 
AdvGridDropDownEx1.Items.Clear; 
with (AdvGridDropDownEx1.Items.Add as TDropDownItemEx) do 
begin 
Color := clInfoBk; 
FontStyle := [fsBold]; 
Text.Add('Row 1 C1'); 
Text.Add('Row 1 C2'); 
Text.Add('Row 1 C3'); 
end; 
with (AdvGridDropDownEx1.Items.Add as TDropDownItemEx) do 
begin 
Color := clWhite; 
FontStyle := [fsItalic]; 
Text.Add('Row 2 C1'); 
Text.Add('Row 2 C2'); 
Text.Add('Row 2 C3'); 
end; 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
178 | Page 
with (AdvGridDropDownEx1.Items.Add as TDropDownItemEx) do 
begin 
Color := clYellow; 
FontStyle := []; 
Text.Add('Row 3 C1'); 
Text.Add('Row 3 C2'); 
Text.Add('Row 3 C3'); 
end; 
with (AdvGridDropDownEx1.Items.Add as TDropDownItemEx) do 
begin 
Color := clInfoBk; 
FontStyle := [fsUnderline]; 
Text.Add('Row 4 C1'); 
Text.Add('Row 4 C2'); 
Text.Add('Row 4 C3'); 
end; 
end; 
And this results at runtime in the dropdown grid: 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
179 | Page 
Using the TAdvGridHeaderList & TAdvGridHeaderListPopup 
To allow an easy customization of what columns to show in a grid by the user, an often used user 
interface is a list holding the available columns and allowing the user to drag & drop from the grid 
the columns that should be hidden or drag columns that should be displayed from the list to the 
grid. To achieve this functionality, two components are offered that integrate much of this 
functionality: TAdvGridHeaderList and TAdvGridHeaderListPopup. The TAdvGridHeaderList is a 
listbox-style control that holds indexes of available (hidden) columns. TAdvGridHeaderPopupList is a 
popup form with this TAdvGridHeaderList. By means of drag & drop from the column header to the 
list and vice versa, it is possible to define what columns to show or not show in the grid. 
Steps needed to setup the TAdvGridHeaderList or TAdvGridHeaderListPopup with TAdvStringGrid 
are: 
1)
Drop the component on the form. 
2)
Assign TAdvStringGrid to TAdvGridHeaderList.Grid. 
3)
Enable OLE drag & drop on TAdvStringGrid level, in particular also OleColumnDragDrop. 
Initially, the TAdvGridHeaderList or TAdvGridHeaderPopupList is an empty list. This can be 
programmatically initialized to hold desired columns. Following methods are available for this: 
procedure MoveFromGridToList(ColumnIndex: integer); 
Move column ColumnIndex from the grid to the TAdvGridHeaderList. 
procedure MoveFromListToGrid(ItemIndex: integer); 
Show the column represented by item ItemIndex in the list to the grid. 
procedure MoveAllFromGridToList; 
Move all columns from the grid to the list. 
procedure MoveAllFromListToGrid; 
Show all columns in the grid, making the list empty. 
Example: 
Following code snippet shows the setup of a TAdvStringGrid with 6 normal columns of which the last 
two columns are initially hidden and available in the TAdvGridHeaderPopupList. The list is shown 
when the header of the grid is right-clicked. From there the user can drag the 2 columns 5 and 6 
from the list to the grid or drag columns from the grid to the list. 
TMS SOFTWARE  
TADVSTRINGGRID  
DEVELOPERS GUIDE 
180 | Page 
var 
i: integer; 
begin 
AdvGridHeaderPopupList1.Grid := AdvStringGrid1; 
AdvGridHeaderPopupList1.Caption := 'Grid columns'; 
AdvStringGrid1.ColCount := 7; 
AdvStringGrid1.LinearFill(False); 
for i := 1 to AdvStringGrid1.ColCount - 1 do 
begin 
AdvStringGrid1.Cells[i,0] := 'Column ' + inttostr(i); 
end
AdvStringGrid1.SetColumnOrder; 
AdvStringGrid1.DragDropSettings.OleDropSource := true; 
AdvStringGrid1.DragDropSettings.OleDropTarget := true
AdvStringGrid1.DragDropSettings.OleColumnDragDrop := true
AdvStringGrid1.DragDropSettings.OleColumnsOnly := true
AdvStringGrid1.DragDropSettings.OleColumnReorder := true
AdvStringGrid1.EnhRowColMove := false; 
AdvGridHeaderPopupList1.MoveFromGridToList(6); 
AdvGridHeaderPopupList1.MoveFromGridToList(5); 
end
The resulting behavior is: 
Documents you may be interested
Documents you may be interested