grid/browse for invoicing help

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

franco
Posts: 213
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 6 times

Re: grid/browse for invoicing help

Post by franco » Mon Feb 03, 2014 5:25 pm

Thanks so much.
Now workiing .................. Franco
Last edited by franco on Mon Feb 03, 2014 8:20 pm, edited 1 time in total.

franco
Posts: 213
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 6 times

Post by franco » Mon Feb 03, 2014 8:17 pm

daniel, javier
Thanks so much. Now working.
Do you know how to change or copy the save object in the grid to my own object (savefranco). I would like on save to stay
in the original cell instead of going to cell 1. That way in the onchange I can save and stay in the present cell. and also upate
other textboxes on the form.
Thanks again ............. This is great .................. Franco

Javier Tovar
Posts: 1274
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Mon Feb 03, 2014 9:12 pm

Hi Franco,

I do not understand what you want, but the valosres cells can be stored in an array do such and end posisionarte can save and the cell that you want and without any repeat sample is working hard to help you!

regards

franco
Posts: 213
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 6 times

Post by franco » Mon Feb 03, 2014 9:40 pm

Javier,
I am using a table. not an array. When I (save) the table is updated, this is good, but hi-lighted cell is row 1 ,col 1 after save.
I would like to stay on current cell which could be row 3 col 3.
Thanks again .............................. Franco

Javier Tovar
Posts: 1274
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Tue Feb 04, 2014 12:41 am

Hola Franco, creo que esto es lo que buscas....

Code: Select all

/*
* HMG Data-Bound Grid Demo
* (c) 2010 Roberto Lopez
*/

#include "hmg.ch"

Function Main

Local aValue := { Nil , Nil }
PUBLIC aValorCell

	* Grid Column Controls Definitions

	aCtrl_1 := {'TEXTBOX','NUMERIC','9999999999'}
	aCtrl_2 := {'TEXTBOX','CHARACTER'}
	aCtrl_3 := {'TEXTBOX','CHARACTER'}
	aCtrl_4 := {'DATEPICKER','UPDOWN'}
	aCtrl_5 := { 'CHECKBOX' , 'Yes' , 'No' }
	aCtrl_6 := {'TEXTBOX','CHARACTER'}

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 800 ;
		HEIGHT 510 ;
		TITLE 'Hello World!' ;
		MAIN 

		DEFINE MAIN MENU 
			POPUP 'File'
				ITEM 'Append (Alt+A)'						ACTION Form_1.Grid_1.Append
				ITEM 'Set RecNo'							ACTION Form_1.Grid_1.RecNo := val(InputBox('','')) 
				ITEM 'Get RecNo'							ACTION MsgInfo( Str(Form_1.Grid_1.RecNo) )
				ITEM 'Delete (Alt+D)'						ACTION Form_1.Grid_1.Delete
				ITEM 'Recall (Alt+R)'						ACTION Form_1.Grid_1.Recall
				ITEM 'Get Value'							ACTION ( aValue := Form_1.Grid_1.Value , MsgInfo( Str( aValue [1] ) + ' , ' + Str( aValue [2] ) ) )
				ITEM 'Set Value'							ACTION ( aValue [ 1 ] :=  val(InputBox('New Row','Selected Cell (Value)')) , aValue [ 2 ] :=  val(InputBox('New Col','Selected Cell (Value)')) , Form_1.Grid_1.Value := { aValue [ 1 ] , aValue [ 2 ] } )
				ITEM 'Save Pending Changes (Alt+S)'			ACTION SalvaCell() 
				ITEM 'Clear Changes Buffer (Undo) (ALt+U)'	ACTION Form_1.Grid_1.ClearBuffer
			END POPUP
		END MENU

		*.............................................................

		SELECT 1

		USE TEST ALIAS TEST

		INDEX ON CODE TO TEST_CODE

		GO TOP

		*..............................................................

		SELECT 2

		USE CHILD ALIAS CHILD

		INDEX ON CODE TO CHILD_CODE

		GO TOP

		*..............................................................

		SELECT 1

		SET RELATION TO CODE INTO CHILD

		GO TOP

		*..............................................................

		@ 10,10 GRID Grid_1 ;
			WIDTH 770 ;
			HEIGHT 440 ;
			HEADERS {'Column 1','Column 2','Column 3','Column 4','Column 5','Column 6'} ;
			WIDTHS {140,140,140,100,100,110};
			EDIT ;
			VALUE { 1 , 1 } ;
			COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 } ;
			ROWSOURCE "Test" ;
			COLUMNFIELDS { 'Code' ,  'First' , 'Last' ,  'Birth' , 'Married' , 'date()+recno()' } ;
			COLUMNWHEN { { || .T. } ,  { || .T. } , { || .T. } ,  { || .T. } , { || .T. } , { || .F. } } ;
			ALLOWDELETE  

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return


PROCEDURE SalvaCell()
	aValorCell := Form_1.Grid_1.VALUE
	Form_1.Grid_1.Save
	Form_1.Grid_1.VALUE := aValorCell
RETURN NIL


Javier Tovar
Posts: 1274
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Tue Feb 04, 2014 12:45 am

What I did is very simple:
1 -. I keep the value of the cell in a PUBLIC variable, which gives me the row and column.
2 -. Except as modified in the GRID.
. 3 - Finally I say that I put in the value of the cell that keep on varying PUBLIC!

regards

franco
Posts: 213
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 6 times

Post by franco » Tue Feb 04, 2014 10:00 am

Javier,
This looks logical. I will try and let you know.
Thanks again ........... Franco

franco
Posts: 213
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Been thanked: 6 times

Post by franco » Wed Feb 05, 2014 3:54 am

javier,
I have changed this post
I moved the public variable to a Local variable and it worked fine.
I am using an invoice item table with fields
item, qty, description, retail, sellprice, and qty*sellprice
This is the starting code for my invoice.

#include <hmg.ch>
function invs
Local aValue := { Nil , Nil }
* Grid Column Controls Definitions

aCtrl_1 := {'TEXTBOX','CHARACTER'}
aCtrl_2 := {'TEXTBOX','NUMERIC', '9999.99'}
aCtrl_3 := {'TEXTBOX','CHARACTER'}
aCtrl_4 := {'TEXTBOX', 'NUMERIC', '99999.99'}
aCtrl_5 := {'TEXTBOX', 'NUMERIC', '99999.99' }
aCtrl_6 := {'TEXTBOX','NUMERIC', '999999.99' }

DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 510 ;
TITLE 'Hello World!' ;
child

*.............................................................

SELECT 1
USE INV_ITEM
GO TOP

*..............................................................

@ 10,10 GRID Grid_1 ;
WIDTH 770 ;
HEIGHT 440 ;
HEADERS {'Item','Quantity','Description','List','Unit Price','Total'} ;
WIDTHS {140,100,140,100,100,110};
EDIT ;
VALUE { 1 , 1 } ;
COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 , aCtrl_4 , aCtrl_5 , aCtrl_6 } ;
ROWSOURCE "INV_ITEM" ;
COLUMNFIELDS { 'ITEM' , 'QTY' , 'DESC' , 'LIST' , 'UNIT_PRICE' , 'round(QTY*UNIT_PRICE,2)' } ;
COLUMNWHEN { { || .F. } , { || .T. } , { || .T. } , { || .T. } , { || .T. } , { || .F. } } ;
ALLOWDELETE;
ON CHANGE SalvaCell() ;
ALLOWAPPEND

END WINDOW

CENTER WINDOW Form_1

ACTIVATE WINDOW Form_1

Return

PROCEDURE SalvaCell()
Local aValorCell
aValorCell := Form_1.Grid_1.VALUE
Form_1.Grid_1.Save
Form_1.Grid_1.VALUE := aValorCell
RETURN NIL


Thanks again .................................. Franco
Last edited by franco on Wed Feb 05, 2014 4:43 am, edited 1 time in total.

Javier Tovar
Posts: 1274
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Wed Feb 05, 2014 4:43 am

Hi frank,


No, if I'm in any cell in the GRID, for example, (2.5) and I do Click on Save, Save the changes made and is still positioned in the cell (2,5). It does not return to the cell (1,1). You command the *. Exe to try it.
GRID.37.rar
(826.83 KiB) Downloaded 53 times
Regards

Javier Tovar
Posts: 1274
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Wed Feb 05, 2014 4:48 am

Hi frank,

I should not have difference, since both work equally though as I'm only using a single *. Prg is better to use private variables! as they are visible throughout the *. PRG, and Public variables are visibres any *. PRG if my example was more than a * PRG.

Greetings.

Post Reply