Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
Databases
»
(solved) Horizontal scroll event into dbgrid
Free Pascal
Website
Downloads
Wiki
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
FAQ
Wiki
Bugtracker
Packages
IRC channel
Developer Blog
Follow us on Twitter
Latest SVN
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
Search
Advanced search
Recent
DBGrid causes Segmentatio...
by
Soner
[
Today
at 02:13:22 pm]
Debuggin Linux Mint GTK2 ...
by
Thaddy
[
Today
at 01:52:38 pm]
DYLIB Cannot Add Requirem...
by
GetMem
[
Today
at 01:29:20 pm]
Hunspell Spelling example...
by
Thaddy
[
Today
at 01:15:27 pm]
Dynamic Array Extensions,...
by
segfault
[
Today
at 01:15:25 pm]
Save XML Attachment as bi...
by
Kjooow
[
Today
at 12:51:14 pm]
Lazarus 2.1.0 trunk versi...
by
Thaddy
[
Today
at 12:47:58 pm]
Using Tdbf for searching ...
by
wp
[
Today
at 12:41:20 pm]
How to install BGRABitmap...
by
DenPit5
[
Today
at 12:41:03 pm]
lazarus pascalscada QP0 s...
by
sadikacar60
[
Today
at 12:28:27 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: (solved) Horizontal scroll event into dbgrid (Read 620 times)
xinyiman
Hero Member
Posts: 1792
(solved) Horizontal scroll event into dbgrid
«
on:
February 11, 2019, 10:41:44 pm »
Hi guys, I have a problem. In a dbgrid to the onselecteditor of a particular column I make a combobox appear to manipulate the data. Only when I move horizontally with the scrollbar also moves the combobox. I would like to intercept the horizontal scroll event to hide my combobox. Ideas? Thank you
«
Last Edit: February 13, 2019, 08:35:37 am by xinyiman
»
Logged
Ubuntu and Mac
Lazarus: 1.8.0
FPC: 3.0.4
daveinhull
Full Member
Posts: 213
1 divided by nothing must still be 1!
Re: Horizontal scroll event into dbgrid
«
Reply #1 on:
February 11, 2019, 10:47:33 pm »
Hi, use oncolexit to hide the control
Logged
Version #:1.8.4 Date 2019-01-08 FPC Version: 3.0.4 and SVN Revision 57972 for x86_64-win64-win32/win64
daveinhull
Full Member
Posts: 213
1 divided by nothing must still be 1!
Re: Horizontal scroll event into dbgrid
«
Reply #2 on:
February 11, 2019, 10:57:56 pm »
Hi Some more code that might help:
The the grid draws I use the DrawColumnCell event to (this is an example of using DateTimePicker, but it works with other controls
Code: Pascal
[Select]
procedure
TForm1
.
DBGrid1DrawColumnCell
(
Sender
:
TObject
;
const
Rect
:
TRect
;
DataCol
:
Integer
;
Column
:
TColumn
;
State
:
TGridDrawState
)
;
begin
if
(
gdFocused
in
State
)
then
begin
if
(
Column
.
Field
.
FieldName
=
'FuelDate'
)
then
with
DateTimePicker1
do
begin
Date
:
=
DBGrid1
.
SelectedField
.
AsDateTime
;
Left
:
=
Rect
.
Left
+
DBGrid1
.
Left
+
1
;
Top
:
=
Rect
.
Top
+
DBGrid1
.
Top
+
1
;
Width
:
=
Rect
.
Right
-
Rect
.
Left
+
1
;
Height
:
=
Rect
.
Bottom
-
Rect
.
Top
+
1
;
Visible
:
=
True
;
DateTimePicker1
.
SetFocus
;
DBGrid1
.
DataSource
.
Edit
;
The on ColExit
Code: Pascal
[Select]
procedure
TForm1
.
DBGrid1ColExit
(
Sender
:
TObject
)
;
begin
if
DBGrid1
.
SelectedField
.
FieldName
=
'FuelDate'
then
begin
if
DBGrid1
.
DataSource
.
State
in
[
dsEdit
,
dsInsert
]
then
DBGrid1
.
SelectedField
.
value
:
=
DateTimePicker1
.
Date
;
DateTimePicker1
.
Visible
:
=
False
end
;
And in the DatTimePicker, I catch certain keys to pass back to the grid
Code: Pascal
[Select]
procedure
TForm1
.
DateTimePicker1KeyDown
(
Sender
:
TObject
;
var
Key
:
Word
;
Shift
:
TShiftState
)
;
begin
if
(
Key
=
9
)
or
(
Key
=
38
)
or
(
Key
=
40
)
then
begin
DBGrid1
.
SetFocus
;
SendMessage
(
DBGrid1
.
Handle
,
WM_KeyDown
,
Key
,
0
)
;
end
end
;
Might be a little different that you are using but it might give you some clues.
Dave
Logged
Version #:1.8.4 Date 2019-01-08 FPC Version: 3.0.4 and SVN Revision 57972 for x86_64-win64-win32/win64
xinyiman
Hero Member
Posts: 1792
Re: Horizontal scroll event into dbgrid
«
Reply #3 on:
February 11, 2019, 11:54:23 pm »
I do not understand how it works. I move with the scrollbar to the right or left not with the keydown.
Logged
Ubuntu and Mac
Lazarus: 1.8.0
FPC: 3.0.4
daveinhull
Full Member
Posts: 213
1 divided by nothing must still be 1!
Re: Horizontal scroll event into dbgrid
«
Reply #4 on:
February 12, 2019, 12:08:19 am »
Sorry, misread your post. However, wouldn't logic say that if you are just scrolling with the scroll bar, then the same field remain selected and so the overplayed control should also remain visible until you leave the column?
Logged
Version #:1.8.4 Date 2019-01-08 FPC Version: 3.0.4 and SVN Revision 57972 for x86_64-win64-win32/win64
xinyiman
Hero Member
Posts: 1792
Re: Horizontal scroll event into dbgrid
«
Reply #5 on:
February 12, 2019, 12:20:18 am »
First image is ok, but second is incorrect because i move scrollbar to right
Logged
Ubuntu and Mac
Lazarus: 1.8.0
FPC: 3.0.4
daveinhull
Full Member
Posts: 213
1 divided by nothing must still be 1!
Re: Horizontal scroll event into dbgrid
«
Reply #6 on:
February 12, 2019, 07:24:07 am »
Ok, so if you use OnDrawColumnCell and check the field name to the one you want then it should work, see my example
[edit] and use the rect provided for the cell to position your control.
«
Last Edit: February 12, 2019, 09:43:47 am by daveinhull
»
Logged
Version #:1.8.4 Date 2019-01-08 FPC Version: 3.0.4 and SVN Revision 57972 for x86_64-win64-win32/win64
xinyiman
Hero Member
Posts: 1792
Re: Horizontal scroll event into dbgrid
«
Reply #7 on:
February 13, 2019, 08:35:26 am »
Thank you. Run correctly.
Logged
Ubuntu and Mac
Lazarus: 1.8.0
FPC: 3.0.4
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
Databases
»
(solved) Horizontal scroll event into dbgrid