Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
LCL
»
[CLOSED] Merge cells (Stringgrid)
Free Pascal
Website
Downloads
Wiki
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Bugtracker
CCR Bugs
IRC channel
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
[SOLVED] DBGrid Class: ED...
by
lainz
[
Today
at 02:00:19 am]
Windows on ARM64
by
Wallaby
[
Today
at 01:49:11 am]
cannot receive messages; ...
by
rvk
[
Today
at 12:38:22 am]
Thread and Timer
by
mercurhyo
[July 04, 2022, 11:26:51 pm]
Calling a form within a p...
by
pascal111
[July 04, 2022, 11:01:15 pm]
ThorLabs motor controller...
by
jamie
[July 04, 2022, 10:56:21 pm]
In some situation, CudaTe...
by
AlexTP
[July 04, 2022, 09:54:04 pm]
ListView column summation
by
ASerge
[July 04, 2022, 09:38:24 pm]
Wrong TStatfs record on M...
by
comdora
[July 04, 2022, 08:39:38 pm]
SOLVED Capitalize word af...
by
DreamVB
[July 04, 2022, 08:06:10 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: [CLOSED] Merge cells (Stringgrid) (Read 3727 times)
pcurtis
Hero Member
Posts: 939
[CLOSED] Merge cells (Stringgrid)
«
on:
December 04, 2021, 09:09:11 pm »
I found this code to merge cells. It half works, but the cells under the spanned cells are still selecable and the grid lines are visible.
How can I fix this?
Code: Pascal
[Select]
[+]
[-]
procedure
TForm1
.
StringGrid1DrawCell
(
Sender
:
TObject
;
aCol
,
aRow
:
Integer
;
aRect
:
TRect
;
aState
:
TGridDrawState
)
;
var
i
,
x
,
y
:
Integer
;
begin
if
gdFixed
in
aState
then
Exit
;
if
not
(
ARow
in
[
1
,
3
]
)
then
Exit
;
{Draw row 1 with text from cell 1,1 spanning all cells in the row}
with
Sender as TStringGrid
do
begin
{Extend rect to include grid line on right, if not last cell in row}
if
aCol <
Pred
(
ColCount
)
then
aRect
.
Right
:
=
aRect
.
Right
+
GridlineWidth
;
{Figure out where the text of the first cell would start relative to the
current cells rect}
y
:
=
aRect
.
Top
+
2
;
x
:
=
aRect
.
Left
+
2
;
for
i
:
=
1
to
aCol
-
1
do
x
:
=
x
-
ColWidths
[
i
]
-
GridlineWidth
;
{Paint cell pale yellow}
Canvas
.
Brush
.
Color
:
=
$7FFFFF
;
Canvas
.
Brush
.
Style
:
=
bsSolid
;
Canvas
.
FillRect
(
aRect
)
;
{Paint text of cell 1,1 clipped to current cell}
Canvas
.
TextRect
(
aRect
,
x
,
y
,
'A rather long line which will span cells'
)
;
end
;
end
;
«
Last Edit: December 05, 2021, 09:40:29 am by pcurtis
»
Logged
Windows 10 20H2
Laz 2.2.0
FPC 3.2.2
wp
Hero Member
Posts: 9758
Re: Merge cells (Stringgrid)
«
Reply #1 on:
December 04, 2021, 09:50:27 pm »
See the demo project in folder examples/gridexamples/merged_cells of your Lazarus installation.
Logged
pcurtis
Hero Member
Posts: 939
Re: Merge cells (Stringgrid)
«
Reply #2 on:
December 04, 2021, 11:38:38 pm »
Thanks for the pointer.
Turned mcgrid into a component and it works great.
«
Last Edit: December 05, 2021, 08:16:28 pm by pcurtis
»
Logged
Windows 10 20H2
Laz 2.2.0
FPC 3.2.2
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
LCL
»
[CLOSED] Merge cells (Stringgrid)
TinyPortal
© 2005-2018