Change grid field widths in while in grid.

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

franco
Posts: 867
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: Change grid field widths in while in grid.

Post by franco »

You have given me a idea to create a function which I can send parameters to. This way I can set widths to one column with 500 and rest to 0.
When finished my edit I send original widths to restore the grid.
Quite busy right now, I will post when done.
All The Best,
Franco
Canada
franco
Posts: 867
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: Change grid field widths in while in grid.

Post by franco »

This is exactly what I needed to modify field longer then grid cell width and works great and can use from any
function or procedure in any part of main program.

Code: Select all

//  In Grid
// GRID_1 is grid name, FORM_1 is form name, 6 is number of columns in grid, 
//             the next 6 are the widths you want columns to be.
ON KEY F2 ACTION CHGRID('GRID_1','FORM_1',6,100,100,340,0,0,0)
// or
ON KEY RETURN ACTION CHGRID('GRID_1','FORM_1',6, 0,600,140,0,0,0)
// or reset to original
ACTION CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100)

Function chgrid
local hgrid := ' ', jmax:=0, j1:=1, nwidth := 0, wi := ' '
parameters Gr,Fo,col,wi1,wi2,wi3,wi4,wi5,wi6
jmax := col
hGrid := GetControlHandle(Gr, Fo )
for j1:= 1 to jmax
	wi := 'wi'+alltrim(str(j1))
	nwidth := &wi
	LISTVIEW_SETCOLUMNWIDTH(hgrid,j1-1,nwidth)	
next

return
Many thanks.
Franco
All The Best,
Franco
Canada
franco
Posts: 867
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: Change grid field widths in while in grid.

Post by franco »

Thanks to Red2 and Auge_Ohr
Here is finished less colours and so on.
This works so great I had to share with you.
I used 3.44/samples/controls/grid_38 for testing. Just add ONHEADCLICK and Private variable and function ChGrid

Code: Select all

Function
PRIVATE  GrChg := .F.
DEFINE WINDOW Form_1 ;
DEFINE GRID Grid_1

ONHEADCLICK { { || NIL },;
{|| IF(GrChg = .F. ,; CHGRID('GRID_1','FORM_1',6,80,350,80,80,80,80),CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100))},;
{|| IF(GrChg = .F. , CHGRID('GRID_1','FORM_1',6,80,80,350,80,80,80), CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100))},;
{|| IF(GrChg = .F. , CHGRID('GRID_1','FORM_1',6,80,80,80,350,80,80), CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100))},;
{|| IF(GrChg = .F. , CHGRID('GRID_1','FORM_1',6,80,80,80,80,350,80), CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100))},;
{|| IF(GrChg = .F. , CHGRID('GRID_1','FORM_1',6,80,80,80,80,80,350), CHGRID('GRID_1','FORM_1',6,140,140,140,100,100,100))}}
END GRID
END WINDOW
ACTIVATE WINDOW Form_1

Function ChGrid
local hgrid := '', jmax:=0, j1:=1, nwidth := 0, wi := ''
parameters Gr,Fo,col,wi1,wi2,wi3,wi4,wi5,wi6
jmax := col
hGrid := GetControlHandle(Gr, Fo )
for j1:= 1 to jmax
	wi := 'wi'+alltrim(str(j1))
	nwidth := &wi
	LISTVIEW_SETCOLUMNWIDTH(hgrid,j1-1,nwidth)	
next
if GrChg = .F.
	GrChg := .T.
else
	GrChg := .F.
endif
return
All The Best,
Franco
Canada
User avatar
tonton2
Posts: 454
Joined: Sat Jun 29, 2013 1:26 pm
Location: Algerie
Contact:

Re: Change grid field widths in while in grid.

Post by tonton2 »

Good evening, can we put colored text in MsgYesNo, thank you
L'Algerie vous salut
Y.TABET
franco
Posts: 867
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: Change grid field widths in while in grid.

Post by franco »

Hi Tonton2, I am not sure without going into hmg which most do not recommend.
I have a program in all my main programs called cProc.prg. In here I put my special functions.
I made a Function called mymsgbox(). I use it for msgbox() so I Can control how it works.
You could make your own mymsgyesno() function and control anything you want.
Thanks for the thought. I think I will make one that works as I want.
All The Best,
Franco
Canada
User avatar
tonton2
Posts: 454
Joined: Sat Jun 29, 2013 1:26 pm
Location: Algerie
Contact:

Re: Change grid field widths in while in grid.

Post by tonton2 »

franco wrote: Wed Feb 12, 2025 4:43 pm Hi Tonton2, I am not sure without going into hmg which most do not recommend.
I have a program in all my main programs called cProc.prg. In here I put my special functions.
I made a Function called mymsgbox(). I use it for msgbox() so I Can control how it works.
You could make your own mymsgyesno() function and control anything you want.
Thanks for the thought. I think I will make one that works as I want.
Merci beaucoup , Thank's
L'Algerie vous salut
Y.TABET
Post Reply