Grid Control
5YB JAN MICHAEL MUNCH KNUDSEN -- 5YB@dmumsmailgw.aarhues.dk
Wednesday, April 17, 1996
MFC/VC++ 4.0 Win95
I have a 'simple' problem - How to set the propyty of a grid control (from
vc's own ocx) to edit fields,
so it is possible to type text in the fields?
Thank you
Michael
Joe Ficara -- joef@kofax.com
Friday, April 19, 1996
You may be supprised to here this but YOU CANT EDIT FIELDS IN THE
MICROSOFT GRID CONTROL OCX!! I assumed the same thing you did, its a
grid control and the great thing about grid controls is they let the
user enter lots of info in a small amount of screen relistate, however
after much tinkering and talking with Microsoft, the only way to edit
data in a grid control is to create this functionality manually.
There are several options (none simple and easy). You can put a edit
control at the row and column the user clicks upon, you can write your
own edit functionality supporting all of the nasty editing stuff
(insert, delete arrow control ect..), you may even be able to
"subclass" (or OLE speak extend through aggregation "good luck!") the
existing OCX and extend its functionality or you can buy a OCX which
supports this functionality.
Sorry...
______________________________ Reply Separator _________________________________
Subject: Grid Control
Author: mfc-l@netcom.com at Internet
Date: 4/17/96 2:33 PM
Received: by ccmail from sandy.kofax.com
>From @netcom18.netcom.com:owner-mfc-l@netcom.com
X-Envelope-From: @netcom18.netcom.com:owner-mfc-l@netcom.com
Received: from netcom18.netcom.com by sandy.kofax.com id aa24582;
19 Apr 96 4:51 PDT
Received: (from daemon@localhost) by netcom18.netcom.com (8.6.13/Netcom)
id VAA15718; Thu, 18 Apr 1996 21:03:33 -0700
From: 5YB JAN MICHAEL MUNCH KNUDSEN <5YB@dmumsmailgw.aarhues.dk>
To: MFC list
Subject: Grid Control
Date: Wed, 17 Apr 96 14:33:00 PDT
Message-Id: <3175676F@msmailgw.aarhues.dk>
Encoding: 10 TEXT
X-Mailer: Microsoft Mail V3.0
Sender: owner-mfc-l@netcom.com
Precedence: list
Reply-To: mfc-l@netcom.com
MFC/VC++ 4.0 Win95
I have a 'simple' problem - How to set the propyty of a grid control (from
vc's own ocx) to edit fields,
so it is possible to type text in the fields?
Thank you
Michael
GERARD LIM -- GERARDLIM@ych.com
Thursday, October 31, 1996
Environment: Windows NT 4.0 Workstation, MSVC 4.1
I am trying to add a grid into a dialog. When I try to 'drag and drop' the
grid control from the toolbar, I get the message:
"The OLE control "Grid Control" could not be instantiated because it
requires design-time license"
I have the same problem with some other controls e.g. Key State Control,
Microsoft Multimedia Control etc.
I have already included the file GRID32.OCX in my project. Can anyone
help me or point me in the right direction, please?
Robert H. Mowery III -- rmowery@csci.csc.com
Thursday, October 31, 1996
[Mini-digest: 5 responses]
It sounds like you are missing the license file associated with the
controls. I would try re-installing you MSVC since these are standard
controls that ship with it and either something did not install properly or
a file got trashed. While this may not effect the VC++ install, I usually
shut down all applications and this includes MS Office toolbars and
anything else that could effect the install.
Other than that I am not sure what could be occuring but others may have
some ideas.
-Robert Mowery
----------
> From: GERARD LIM
> To: Mircosoft Foundation Class
> Subject: Grid Control
> Date: Thursday, October 31, 1996 2:34 PM
>
>
> Environment: Windows NT 4.0 Workstation, MSVC 4.1
>
> I am trying to add a grid into a dialog. When I try to 'drag and drop'
the
> grid control from the toolbar, I get the message:
>
> "The OLE control "Grid Control" could not be instantiated because it
> requires design-time license"
>
> I have the same problem with some other controls e.g. Key State Control,
> Microsoft Multimedia Control etc.
>
> I have already included the file GRID32.OCX in my project. Can anyone
> help me or point me in the right direction, please?
>
-----From: jeremy@omsys.com (Jeremy H. Griffith)
See KBase article Q151804:Dynamic Creation of Redistributable Control,
available at:
http://www.microsoft.com/kb/developr/visual_c/q151804.htm
which directly addresses this issue.
--Jeremy
-----From: Rob Tessier
Apparently you are not a licenced developer of that OCX and this OCX enforces
the optional licensing checks.
You need to obtain a licensed copy from the OCX provider which will contain the
.LIC file.
[Moderator's note: He is talking about an OCX that comes *with*
VC++. You'd think they would license everyone for these controls.]
-----From: GERARD LIM
I have the same problem with some other controls e.g. Key State Control,
Microsoft Multimedia Control etc.
I have already included the file GRID32.OCX in my project. Can anyone
help me or point me in the right direction, please?
-----From: "Colurcio Massimo"
Old VBX use something like a .LIC file that contains design-time license.
For OCX too? I mean you must verify.
Louis de Beer -- dbeerlj@mwp.eskom.co.za
Monday, December 02, 1996
Environment : MSVC 4.2b + Win95
Hi there
I need to implement a grid control in my program. I have
only very recently started using MFC, and I don't really
know how OLE works.
I managed to get the grid displayed on the form, but I
cannot get any data in the cells.
I looked at the following function which is part of the
GRIDCTRL files, but I don't know how the VARIANT data type
is used :
short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
Index)
{
short result;
static BYTE parms[] =
VTS_BSTR VTS_VARIANT;
InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
(void*)&result, parms,
Item, &Index);
return result;
}
Help would be much appreciated...
LdB
P. Senthil -- senthilp@geocities.com
Wednesday, December 04, 1996
I guess you would'nt want to know how to handle VARIANT's after you see
the definition.
Check up the Grid control's documentation for all functions as VARIANT
is a huge union. You can generally pass LPCSTR or the like for most
functions in the Grid control if you're using Microsoft's.
Here goes the definition:
typedef struct FARSTRUCT tagVARIANT VARIANT;
typedef struct FARSTRUCT tagVARIANT VARIANTARG;
typedef struct tagVARIANT {
VARTYPE vt;
unsigned short wReserved1;
unsigned short wReserved2;
unsigned short wReserved3;
union {
unsigned char bVal; /* VT_UI1 */
short iVal; /* VT_I2 */
long lVal; /* VT_I4 */
float fltVal; /* VT_R4 */
double dblVal; /* VT_R8 */
VARIANT_BOOL bool; /* VT_BOOL */
SCODE scode; /* VT_ERROR */
CY cyVal; /* VT_CY */
DATE date; /* VT_DATE */
BSTR bstrVal; /* VT_BSTR */
Iunknown FAR* punkVal; /* VT_UNKNOWN */
Idispatch FAR* pdispVal; /* VT_DISPATCH */
SAFEARRAY FAR* parray; /* VT_ARRAY|* */
unsigned char FAR *pbVal; /* VT_BYREF|VT_UI1 */
short FAR* piVal; /* VT_BYREF|VT_I2 */
long FAR* plVal; /* VT_BYREF|VT_I4 */
float FAR* pfltVal; /* VT_BYREF|VT_R4 */
double FAR* pdblVal; /* VT_BYREF|VT_R8 */
VARIANT_BOOL FAR* pbool; /* VT_BYREF|VT_BOOL */
SCODE FAR* pscode; /* VT_BYREF|VT_ERROR */
CY FAR* pcyVal; /* VT_BYREF|VT_CY */
DATE FAR* pdate; /* VT_BYREF|VT_DATE */
BSTR FAR* pbstrVal; /* VT_BYREF|VT_BSTR */
IUnknown FAR* FAR* ppunkVal; /* VT_BYREF|VT_UNKNOWN */
IDispatch FAR* FAR* ppdispVal; /* VT_BYREF|VT_DISPATCH */
SAFEARRAY FAR* FAR* parray; /* VT_ARRAY|* */
VARIANT FAR* pvarVal; /* VT_BYREF|VT_VARIANT */
void FAR* byref; /* Generic ByRef */
};
};
Louis de Beer wrote:
>
> Postage paid by:
> [Image]
> Your Home on the Web!
>
> ---------------------------------------------------------------
>
> Environment : MSVC 4.2b + Win95
>
> Hi there
>
> I need to implement a grid control in my program. I have
> only very recently started using MFC, and I don't really
> know how OLE works.
> I managed to get the grid displayed on the form, but I
> cannot get any data in the cells.
>
> I looked at the following function which is part of the
> GRIDCTRL files, but I don't know how the VARIANT data type
> is used :
>
> short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
> Index)
> {
> short result;
> static BYTE parms[] =
> VTS_BSTR VTS_VARIANT;
> InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
> (void*)&result, parms,
> Item, &Index);
> return result;
> }
>
> Help would be much appreciated...
>
> LdB
--
P. Senthil
-----------------------------------------------------------------------
1, 7th Avenue (West),
7th Main Road,
Dhandeeswaram Nagar,
Velachery,
MADRAS - 600 042.
Mail: senthilp@geocities.com
Homepage: www.geocities.com/SiliconValley/Heights/6504
Per Clausen - PCL/TC/GBJ -- pclausen@grundfos.com
Wednesday, December 04, 1996
Environment : MSVC 4.2b + Win95
An easy way to set data is by using SetCol/SetRow and SetText. Here is an
example:
Prototypes:
void CGridCtrl::SetCol(short propVal)
void CGridCtrl::SetRow(short propVal)
void CGridCtrl::SetText(LPCTSTR propVal)
{
m_mygrid.SetRows(5);
m_mygrid.SetCols(5);
for (int iRow = 0; iRow < 5; iRow++)
for (int iCol = 0; iCol < 5; iCol++)
{
strTmp.Format("%d:%d", iRow, iCol);
m_mygrid.SetRow(iRow);
m_mygrid.SetCol(iCol);
m_mygrid.SetText(strTmp);
}
}
I hope this helps !
Per Clausen
dobrin@itls.com
Wednesday, December 04, 1996
[Mini-digest: 4 responses]
Try using the Stingray Objective Grid. It is easy to use and does
a lot of work for you.
I use it in the company for half a year and the only thing I can do is
just recommend it.
Dan.
> From: "Louis de Beer"
> To: "MFC List"
> Subject: Grid control
> Date: Mon, 2 Dec 1996 09:01:08 +0200
> Reply-to: mfc-l@netcom.com
> Environment : MSVC 4.2b + Win95
>
> Hi there
>
> I need to implement a grid control in my program. I have
> only very recently started using MFC, and I don't really
> know how OLE works.
> I managed to get the grid displayed on the form, but I
> cannot get any data in the cells.
>
> I looked at the following function which is part of the
> GRIDCTRL files, but I don't know how the VARIANT data type
> is used :
>
> short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
> Index)
> {
> short result;
> static BYTE parms[] =
> VTS_BSTR VTS_VARIANT;
> InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
> (void*)&result, parms,
> Item, &Index);
> return result;
> }
>
> Help would be much appreciated...
>
> LdB
>
Dan Dobrin
Intertrans Logistics Solutions Ltd.
Richmond Hill, CANADA
e-mail : dan.dobrin@itls.com
phone : (905) 771-8088, ext.251
-----From: Shaju Mathew
I'm assuming that the CGridCtrl is the generated class interface
when you inserted the control into your client app. I'm pretty
sure that you'd not have to work on the VARIANT& parameter except
in the InvokeHelper(), which's already been taken care of..
I've never worked with teh grid ctrl, but here's a sample
snippet of a test program that tries it out...from a CFormView-based
window
void CTestgridCtrlView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
m_GridCtrl.SetCols(4);
m_GridCtrl.SetRows(5);
m_GridCtrl.SetText("Junk");//you'll have to guess and do
//trial and error to see what these do..
m_GridCtrl.Set_Text("junk1");
}
Good luck - give me a call if you need further help
> Environment : MSVC 4.2b + Win95
>
> Hi there
>
> I need to implement a grid control in my program. I have
> only very recently started using MFC, and I don't really
> know how OLE works.
> I managed to get the grid displayed on the form, but I
> cannot get any data in the cells.
>
> I looked at the following function which is part of the
> GRIDCTRL files, but I don't know how the VARIANT data type
> is used :
>
> short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
> Index)
> {
> short result;
> static BYTE parms[] =
> VTS_BSTR VTS_VARIANT;
> InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
> (void*)&result, parms,
> Item, &Index);
> return result;
> }
>
> Help would be much appreciated...
>
> LdB
>
--
***********************************************************************
.---. .---.
Shaju Mathew /" " \ WWW / " "\ Off:(916)785-9018
Performance Technology Lab / / "" \(*|*)/ "" \ \
Hewlett-Packard Company ////// '. V .` \\\\\\ Home:(916)722-4576
8000, Foothills Blvd //// / // : """ : \\ \ \\\\
MS 5723, Roseville // / / /`.""" '\ \ \ \\Fax:(916)785-1264
CA 95747-5723 // //.".\\ \\
------------- -UU---UU---------------
Shaju_Mathew@hp.com '//|||\\`
'' ``
***********************************************************************
-----From: sathiya@colmds2.com (Sathiyamurthy Thiruvengadathan)
Louis de Beer wrote:
>
> Environment : MSVC 4.2b + Win95
>
> Hi there
>
> I need to implement a grid control in my program. I have
> only very recently started using MFC, and I don't really
> know how OLE works.
> I managed to get the grid displayed on the form, but I
> cannot get any data in the cells.
>
> I looked at the following function which is part of the
> GRIDCTRL files, but I don't know how the VARIANT data type
> is used :
>
> short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
> Index)
> {
> short result;
> static BYTE parms[] =
> VTS_BSTR VTS_VARIANT;
> InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
> (void*)&result, parms,
> Item, &Index);
> return result;
> }
>
> Help would be much appreciated...
>
> LdB
GridCtrl exposes a function called SetText which takes an LPCTSTR as
parameter. Use this function to set the data in the cells. But before
calling this function you will have to set the current row and column by
calling SetRow() and SetCol() respectively. GridCtrl.h which comes when
you pick the grid control from component gallery contains all the
functions exposed by the Grid control. More info about the control can
be found in CtrlRef.hlp in your MSDEV\HELP directory. Hope this info
helps
Bye,
Sathya
-----From: Tom Allen
Louis,
I use code similar to the following to populate a grid control:
CGridCtrl m_itemgrid;
// tell the grid how many rows & columns
m_itemgrid.SetCols(2);
m_itemgrid.SetRows(nRows + 1);
// set the width for each column
m_itemgrid.SetColWidth(0, COLUMN0_WIDTH);
m_itemgrid.SetColWidth(1, COLUMN1_WIDTH);
// position the grid control to row 0, column 0 and fill the cell at =
that position
m_itemgrid.SetRow(0);
m_itemgrid.SetCol(0);
m_itemgrid.SetText("Item ID");
// position the grid to row 0, column 1, and fill the cell at that =
position
m_itemgrid.SetCol(1);
m_itemgrid.SetText("Artist");
// ...and so on
Note that to populate a cell with numerics, you must first convert them =
to a text buffer and then use SetText().
Unfortunately, I found that when filling a grid with a large amount of =
data (8 columns x 5000 rows) using this method , the performance hit is =
rather unacceptable. On my system (P133, 32 meg RAM, Win 95), =
populating the grid from a CObList collection takes better than 2 =
minutes! But for smaller grids I've found the approach outlined above =
more than adequate.
I would also be interested in any documentation and/or sample code that =
explains using the AddItem method. My suspicion is that this is =
probably a much faster way to populate the grid, but unfortunately I =
have been unable to find any further info regarding its use. Any leads =
would be appreciated.
-TA
----------
From: Louis de Beer[SMTP:dbeerlj@mwp.eskom.co.za]
Sent: Monday, December 02, 1996 2:01 AM
To: MFC List
Subject: Grid control
Environment : MSVC 4.2b + Win95
Hi there
I need to implement a grid control in my program. I have
only very recently started using MFC, and I don't really
know how OLE works.
I managed to get the grid displayed on the form, but I
cannot get any data in the cells.
I looked at the following function which is part of the
GRIDCTRL files, but I don't know how the VARIANT data type
is used :
short CGridCtrl::AddItem(LPCTSTR Item, const VARIANT&
Index)
{
short result;
static BYTE parms[] =3D
VTS_BSTR VTS_VARIANT;
InvokeHelper(0x1d, DISPATCH_METHOD, VT_I2,
(void*)&result, parms,
Item, &Index);
return result;
}
Help would be much appreciated...
LdB
| Вернуться в корень Архива
|