Page 1 of 1

Grid control & Numerics

Posted: Tue Oct 12, 2010 7:11 am
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 247 times

Re: Grid control & Numerics

Posted: Tue Oct 12, 2010 7:47 am
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:

Re: Grid control & Numerics

Posted: Tue Oct 12, 2010 8:11 am
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.

Re: Grid control & Numerics

Posted: Tue Oct 12, 2010 9:02 am
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

Re: Grid control & Numerics

Posted: Tue Oct 12, 2010 9:49 am
by karweru
Thank you so much Grigory. It works perfectly now. Warm regards,