Grid control & Numerics

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

Post Reply
User avatar
karweru
Posts: 220
Joined: Fri Aug 01, 2008 1:51 pm
DBs Used: DBF,mysql,mariadb,postgresql,sqlite,odbc
Contact:

Grid control & Numerics

Post by karweru »

Hello group,

I have modified grid07 sample to illustrate a problem I'm having. Appararently, grid control is not showing numeric values or what could be the issue here?

Kindly assist.
demo.zip
(1.33 KiB) Downloaded 248 times
Kind regards,
Gilbert.
User avatar
gfilatov
Posts: 1116
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: Grid control & Numerics

Post by gfilatov »

karweru wrote:Hello group,

I have modified grid07 sample to illustrate a problem I'm having. Appararently, grid control is not showing numeric values or what could be the issue here?

Kindly assist.
Hello Gilbert,

Kindly try the following updated sample: :arrow:

Code: Select all

#include "minigui.ch"

Function Main

Local aRows [20] [3]

Public Op

	aRows [1]	:= {'Simpson','Homer',10000}
	aRows [2]	:= {'Mulder','Fox',40000} 
	aRows [3]	:= {'Smart','Max',30000} 
	aRows [4]	:= {'Grillo','Pepe',20000} 
	aRows [5]	:= {'Kirk','James',5000} 
	aRows [6]	:= {'Barriga','Carlos',2000} 
	aRows [7]	:= {'Flanders','Ned',100} 
	aRows [8]	:= {'Smith','John',25000} 
	aRows [9]	:= {'Pedemonti','Flavio',50000} 
	aRows [10]	:= {'Gomez','Juan',8000} 
	aRows [11]	:= {'Fernandez','Raul',13000} 
	aRows [12]	:= {'Borges','Javier',18000} 
	aRows [13]	:= {'Alvarez','Alberto',22000} 
	aRows [14]	:= {'Gonzalez','Ambo',40000} 
	aRows [15]	:= {'Batistuta','Gol',3500} 
	aRows [16]	:= {'Vinazzi','Amigo',4500} 
	aRows [17]	:= {'Pedemonti','Flavio',7500} 
	aRows [18]	:= {'Samarbide','Armando',90000} 
	aRows [19]	:= {'Pradon','Alejandra',1000000} 
	aRows [20]	:= {'Reyes','Monica',4000000} 

	aCtrl_1 := {'TEXTBOX','CHARACTER'}
	aCtrl_2 := {'TEXTBOX','CHARACTER'}
	aCtrl_3 := {'TEXTBOX','NUMERIC','9999999999'}

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 630 ;
		HEIGHT 480 ;
		TITLE 'Hello World!' ;
		MAIN ;
		FONT 'Arial' ;
		SIZE 9

		DEFINE LABEL Label_1
			ROW	10
			COL	10
			WIDTH	60
			VALUE 'Apellido:'
		END LABEL

		DEFINE TEXTBOX Text_1
			ROW	10
			COL	70
			WIDTH	80
		END TEXTBOX

		DEFINE LABEL Label_2
			ROW	10
			COL	160
			WIDTH	60
			VALUE	'Nombres:'
		END LABEL

		DEFINE TEXTBOX Text_2
			ROW	10
			COL	230
			WIDTH	80
		END TEXTBOX

		DEFINE LABEL Label_3
			ROW	10
			COL	320
			WIDTH	60
			VALUE	'Balance:'
		END LABEL

		DEFINE TEXTBOX Text_3
			ROW	10
			COL	390
			WIDTH	80
			NUMERIC .T.

		END TEXTBOX

		DEFINE BUTTON Button_A
			ROW	10
			COL	480
			WIDTH	55
			CAPTION	'Ok'
			ACTION	Ok()
		END BUTTON

		DEFINE BUTTON Button_B
			ROW	10
			COL	545
			WIDTH	55
			CAPTION	'Cancel'
			ACTION	Cancel()
		END BUTTON

		DEFINE GRID Grid_1 
			ROW 	40
			COL	10
			WIDTH	590 
			HEIGHT	330 
			HEADERS	{ 'Apellido' , 'Nombres' , 'Balance' } 
			WIDTHS	{ 185 , 185 , 185 }
			ITEMS	aRows 
			COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 }
			JUSTIFY { GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_RIGHT }
			VALUE	1 
		END GRID

		DEFINE BUTTON Button_1
			ROW	380
			COL	10
			CAPTION	'Agregar'
			ACTION	Agregar()
		END BUTTON

		DEFINE BUTTON Button_2
			ROW	380
			COL	140
			CAPTION	'Eliminar'
			ACTION	Eliminar()
		END BUTTON

		DEFINE BUTTON Button_3
			ROW	380
			COL	270
			CAPTION	'Modificar'
			ACTION	Modificar()
		END BUTTON

	END WINDOW

	Form_1.Text_1.Enabled :=.f.
	Form_1.Text_2.Enabled :=.f.
	Form_1.Text_3.Enabled :=.f.

	Form_1.Button_A.Enabled :=.f.
	Form_1.Button_B.Enabled :=.f.

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

Procedure Agregar()

	Op := 'AGREGAR'

	Form_1.Text_1.Enabled :=.t.
	Form_1.Text_2.Enabled :=.t.
	Form_1.Text_3.Enabled :=.t.

	Form_1.Button_1.Enabled :=.f.
	Form_1.Button_2.Enabled :=.f.
	Form_1.Button_3.Enabled :=.f.

	Form_1.Button_A.Enabled :=.t.
	Form_1.Button_B.Enabled :=.t.

	Form_1.Grid_1.Enabled := .f.

	Form_1.Text_1.SetFocus

Return

Procedure Eliminar()
Local i := Form_1.Grid_1.Value

	If i != 0
		Form_1.Grid_1.DeleteItem(i)
	EndIf

Return

Procedure Modificar()
Local i := Form_1.Grid_1.Value , aTemp

	Op := 'MODIFICAR'

	If i != 0

		aTemp := Form_1.Grid_1.Item(i)

		Form_1.Text_1.Value := aTemp [1]
		Form_1.Text_2.Value := aTemp [2]
		Form_1.Text_3.Value := aTemp [3]

		Form_1.Text_1.Enabled :=.t.
		Form_1.Text_2.Enabled :=.t.
		Form_1.Text_3.Enabled :=.t.

		Form_1.Button_1.Enabled :=.f.
		Form_1.Button_2.Enabled :=.f.
		Form_1.Button_3.Enabled :=.f.

		Form_1.Button_A.Enabled :=.t.
		Form_1.Button_B.Enabled :=.t.

		Form_1.Grid_1.Enabled := .f.

		Form_1.Text_1.SetFocus

	EndIf

Return

Procedure Ok()
Local aTemp := {} , i

	If	Op == 'AGREGAR'

		Form_1.Grid_1.AddItem ( { Form_1.Text_1.Value , Form_1.Text_2.Value , Form_1.Text_3.Value } )
		Form_1.Grid_1.Value := Form_1.Grid_1.ItemCount


	ElseIf	Op == 'MODIFICAR'

		i := Form_1.Grid_1.Value
		Form_1.Grid_1.Item (i) := { Form_1.Text_1.Value,Form_1.Text_2.Value ,Form_1.Text_3.Value }

	EndIf

	Form_1.Text_1.Value := ''
	Form_1.Text_2.Value := ''
	Form_1.Text_3.Value := ''

	Form_1.Text_1.Enabled :=.f.
	Form_1.Text_2.Enabled :=.f.
	Form_1.Text_3.Enabled :=.f.

	Form_1.Button_1.Enabled :=.t.
	Form_1.Button_2.Enabled :=.t.
	Form_1.Button_3.Enabled :=.t.

	Form_1.Button_A.Enabled :=.f.
	Form_1.Button_B.Enabled :=.f.

	Form_1.Grid_1.Enabled := .t.

	Form_1.Grid_1.SetFocus

Return

Procedure Cancel()

	Form_1.Text_1.Value := ''
	Form_1.Text_2.Value := ''
	Form_1.Text_3.Value := ''

	Form_1.Text_1.Enabled :=.f.
	Form_1.Text_2.Enabled :=.f.
	Form_1.Text_3.Enabled :=.f.

	Form_1.Button_1.Enabled :=.t.
	Form_1.Button_2.Enabled :=.t.
	Form_1.Button_3.Enabled :=.t.

	Form_1.Button_A.Enabled :=.f.
	Form_1.Button_B.Enabled :=.f.

	Form_1.Grid_1.Enabled := .t.

	Form_1.Grid_1.SetFocus
Return
Hope that helps :idea:
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
karweru
Posts: 220
Joined: Fri Aug 01, 2008 1:51 pm
DBs Used: DBF,mysql,mariadb,postgresql,sqlite,odbc
Contact:

Re: Grid control & Numerics

Post by karweru »

Thank you very much Grigory for you quick attention. Now the numerics are displaying properly. The problem now is when you edit a record. I'm getting the following error when i run your modified sample.
Date:10/12/10 Time: 10:01:45
Error BASE/1090 Argument error: INT

Called from INT(0)
Called from _SETVALUE(487)
Called from SETPROPERTY(6441)
Called from MODIFICAR(188)
Called from (b)MAIN(129)
Called from _DOCONTROLEVENTPROCEDURE(5262)
Called from EVENTS(1434)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4853)
Called from MAIN(143)
Any way around this? Thanks again for your help.
Kind regards,
Gilbert.
User avatar
gfilatov
Posts: 1116
Joined: Fri Aug 01, 2008 5:42 am
Location: Ukraine
Contact:

Re: Grid control & Numerics

Post by gfilatov »

karweru wrote:Thank you very much Grigory for you quick attention. Now the numerics are displaying properly. The problem now is when you edit a record. I'm getting the following error when i run your modified sample.
...
Any way around this? Thanks again for your help.
Gilbert,

Try the following working sample: :arrow:

Code: Select all

#include "minigui.ch"

Function Main

Local aRows [20] [3]

Public Op

   aRows [1]   := {'Simpson','Homer',10000}
   aRows [2]   := {'Mulder','Fox',40000} 
   aRows [3]   := {'Smart','Max',30000} 
   aRows [4]   := {'Grillo','Pepe',20000} 
   aRows [5]   := {'Kirk','James',5000} 
   aRows [6]   := {'Barriga','Carlos',2000} 
   aRows [7]   := {'Flanders','Ned',100} 
   aRows [8]   := {'Smith','John',25000} 
   aRows [9]   := {'Pedemonti','Flavio',50000} 
   aRows [10]   := {'Gomez','Juan',8000} 
   aRows [11]   := {'Fernandez','Raul',13000} 
   aRows [12]   := {'Borges','Javier',18000} 
   aRows [13]   := {'Alvarez','Alberto',22000} 
   aRows [14]   := {'Gonzalez','Ambo',40000} 
   aRows [15]   := {'Batistuta','Gol',3500} 
   aRows [16]   := {'Vinazzi','Amigo',4500} 
   aRows [17]   := {'Pedemonti','Flavio',7500} 
   aRows [18]   := {'Samarbide','Armando',90000} 
   aRows [19]   := {'Pradon','Alejandra',1000000} 
   aRows [20]   := {'Reyes','Monica',4000000} 

   aCtrl_1 := {'TEXTBOX','CHARACTER'}
   aCtrl_2 := {'TEXTBOX','CHARACTER'}
   aCtrl_3 := {'TEXTBOX','NUMERIC','9999999999'}

   DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 630 ;
      HEIGHT 480 ;
      TITLE 'Hello World!' ;
      MAIN ;
      FONT 'Arial' ;
      SIZE 9

      DEFINE LABEL Label_1
         ROW   10
         COL   10
         WIDTH   60
         VALUE 'Apellido:'
      END LABEL

      DEFINE TEXTBOX Text_1
         ROW   10
         COL   70
         WIDTH   80
      END TEXTBOX

      DEFINE LABEL Label_2
         ROW   10
         COL   160
         WIDTH   60
         VALUE   'Nombres:'
      END LABEL

      DEFINE TEXTBOX Text_2
         ROW   10
         COL   230
         WIDTH   80
      END TEXTBOX

      DEFINE LABEL Label_3
         ROW   10
         COL   320
         WIDTH   60
         VALUE   'Balance:'
      END LABEL

      DEFINE TEXTBOX Text_3
         ROW   10
         COL   390
         WIDTH   80
         NUMERIC .T.

      END TEXTBOX

      DEFINE BUTTON Button_A
         ROW   10
         COL   480
         WIDTH   55
         CAPTION   'Ok'
         ACTION   Ok()
      END BUTTON

      DEFINE BUTTON Button_B
         ROW   10
         COL   545
         WIDTH   55
         CAPTION   'Cancel'
         ACTION   Cancel()
      END BUTTON

      DEFINE GRID Grid_1 
         ROW    40
         COL   10
         WIDTH   590 
         HEIGHT   330 
         HEADERS   { 'Apellido' , 'Nombres' , 'Balance' } 
         WIDTHS   { 185 , 185 , 185 }
         ITEMS   aRows 
         COLUMNCONTROLS { aCtrl_1 , aCtrl_2 , aCtrl_3 }
         JUSTIFY { GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_RIGHT }
         VALUE   1 
      END GRID

      DEFINE BUTTON Button_1
         ROW   380
         COL   10
         CAPTION   'Agregar'
         ACTION   Agregar()
      END BUTTON

      DEFINE BUTTON Button_2
         ROW   380
         COL   140
         CAPTION   'Eliminar'
         ACTION   Eliminar()
      END BUTTON

      DEFINE BUTTON Button_3
         ROW   380
         COL   270
         CAPTION   'Modificar'
         ACTION   Modificar()
      END BUTTON

   END WINDOW

   Form_1.Text_1.Enabled :=.f.
   Form_1.Text_2.Enabled :=.f.
   Form_1.Text_3.Enabled :=.f.

   Form_1.Button_A.Enabled :=.f.
   Form_1.Button_B.Enabled :=.f.

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return

Procedure Agregar()

   Op := 'AGREGAR'

   Form_1.Text_1.Enabled :=.t.
   Form_1.Text_2.Enabled :=.t.
   Form_1.Text_3.Enabled :=.t.

   Form_1.Button_1.Enabled :=.f.
   Form_1.Button_2.Enabled :=.f.
   Form_1.Button_3.Enabled :=.f.

   Form_1.Button_A.Enabled :=.t.
   Form_1.Button_B.Enabled :=.t.

   Form_1.Grid_1.Enabled := .f.

   Form_1.Text_1.SetFocus

Return

Procedure Eliminar()
Local i := Form_1.Grid_1.Value

   If i != 0
      Form_1.Grid_1.DeleteItem(i)
   EndIf

Return

Procedure Modificar()
Local i := Form_1.Grid_1.Value , aTemp

   Op := 'MODIFICAR'

   If i != 0

      aTemp := Form_1.Grid_1.Item(i)

      Form_1.Text_1.Value := aTemp [1]
      Form_1.Text_2.Value := aTemp [2]
      Form_1.Text_3.Value := aTemp [3]

      Form_1.Text_1.Enabled :=.t.
      Form_1.Text_2.Enabled :=.t.
      Form_1.Text_3.Enabled :=.t.

      Form_1.Button_1.Enabled :=.f.
      Form_1.Button_2.Enabled :=.f.
      Form_1.Button_3.Enabled :=.f.

      Form_1.Button_A.Enabled :=.t.
      Form_1.Button_B.Enabled :=.t.

      Form_1.Grid_1.Enabled := .f.

      Form_1.Text_1.SetFocus

   EndIf

Return

Procedure Ok()
Local aTemp := {} , i

   If   Op == 'AGREGAR'

      Form_1.Grid_1.AddItem ( { Form_1.Text_1.Value , Form_1.Text_2.Value , Form_1.Text_3.Value } )
      Form_1.Grid_1.Value := Form_1.Grid_1.ItemCount


   ElseIf   Op == 'MODIFICAR'

      i := Form_1.Grid_1.Value
      Form_1.Grid_1.Item (i) := { Form_1.Text_1.Value,Form_1.Text_2.Value ,Form_1.Text_3.Value }

   EndIf

   Form_1.Text_1.Value := ''
   Form_1.Text_2.Value := ''
   Form_1.Text_3.Value := 0

   Form_1.Text_1.Enabled :=.f.
   Form_1.Text_2.Enabled :=.f.
   Form_1.Text_3.Enabled :=.f.

   Form_1.Button_1.Enabled :=.t.
   Form_1.Button_2.Enabled :=.t.
   Form_1.Button_3.Enabled :=.t.

   Form_1.Button_A.Enabled :=.f.
   Form_1.Button_B.Enabled :=.f.

   Form_1.Grid_1.Enabled := .t.

   Form_1.Grid_1.SetFocus

Return

Procedure Cancel()

   Form_1.Text_1.Value := ''
   Form_1.Text_2.Value := ''
   Form_1.Text_3.Value := 0

   Form_1.Text_1.Enabled :=.f.
   Form_1.Text_2.Enabled :=.f.
   Form_1.Text_3.Enabled :=.f.

   Form_1.Button_1.Enabled :=.t.
   Form_1.Button_2.Enabled :=.t.
   Form_1.Button_3.Enabled :=.t.

   Form_1.Button_A.Enabled :=.f.
   Form_1.Button_B.Enabled :=.f.

   Form_1.Grid_1.Enabled := .t.

   Form_1.Grid_1.SetFocus
Return
Kind Regards,
Grigory Filatov

"Everything should be made as simple as possible, but no simpler." Albert Einstein
User avatar
karweru
Posts: 220
Joined: Fri Aug 01, 2008 1:51 pm
DBs Used: DBF,mysql,mariadb,postgresql,sqlite,odbc
Contact:

Re: Grid control & Numerics

Post by karweru »

Thank you so much Grigory. It works perfectly now. Warm regards,
Kind regards,
Gilbert.
Post Reply