Algo del evento ON DBLCLICK del control GRID
Moderator: Rathinagiri
Algo del evento ON DBLCLICK del control GRID
Estaba viendo que cuando uno hace doble click en el evento ON DBLCLICK de un control GRID, aparecen las propiedades
this.cellrow, this.cellcol, this.cellwidth,this.cellheigth
Supongamos que en un formulario tengo un control GRID y un BUTTON, y que me posiciono en una fila y columna determinada del control GRID, ¿Como hago para obtener esas propiedades al pulsar el BUTTON ?, o por ahi es más fácil, como hago para llamar desde el BUTTON al evento ON DBLCLICK del GRID. La idea es poder hacer algo que alguna vez vi en VB6 con un control MSFlexgrid.
this.cellrow, this.cellcol, this.cellwidth,this.cellheigth
Supongamos que en un formulario tengo un control GRID y un BUTTON, y que me posiciono en una fila y columna determinada del control GRID, ¿Como hago para obtener esas propiedades al pulsar el BUTTON ?, o por ahi es más fácil, como hago para llamar desde el BUTTON al evento ON DBLCLICK del GRID. La idea es poder hacer algo que alguna vez vi en VB6 con un control MSFlexgrid.
Antonio
Sistemas
Resipol
Sistemas
Resipol
-
Javier Tovar
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Algo del evento ON DBLCLICK del control GRID
Hola Citro,
Haces lo mismo que doble Click, nada más que ahora pones tu función en el Boton. Solo tiene una condición que este seleccionado un Item de la Grid.
Saludos
Haces lo mismo que doble Click, nada más que ahora pones tu función en el Boton. Solo tiene una condición que este seleccionado un Item de la Grid.
Saludos
Re: Algo del evento ON DBLCLICK del control GRID
Hay algo que estoy haciendo mal entonces, porque si quiero compilar el ejemplo de abajo me arroja error
/*
* HMG Grid Demo
* (c) 2005 Roberto Lopez
*/
#include "hmg.ch"
Function Main
Local aRows [20] [3]
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 400 ;
TITLE 'Mixed Data Type Grid Test' ;
MAIN
aRows [1] := {113.12,date(),1,1 , .t. }
aRows [2] := {123.12,date(),2,2 , .f. }
aRows [3] := {133.12,date(),3,3, .t. }
aRows [4] := {143.12,date(),1,4, .f. }
aRows [5] := {153.12,date(),2,5, .t. }
aRows [6] := {163.12,date(),3,6, .f. }
aRows [7] := {173.12,date(),1,7, .t. }
aRows [8] := {183.12,date(),2,8, .f. }
aRows [9] := {193.12,date(),3,9, .t. }
aRows [10] := {113.12,date(),1,10, .f. }
aRows [11] := {123.12,date(),2,11, .t. }
aRows [12] := {133.12,date(),3,12, .f. }
aRows [13] := {143.12,date(),1,13, .t. }
aRows [14] := {153.12,date(),2,14, .f. }
aRows [15] := {163.12,date(),3,15, .t. }
aRows [16] := {173.12,date(),1,16, .f. }
aRows [17] := {183.12,date(),2,17, .t. }
aRows [18] := {193.12,date(),3,18, .f. }
aRows [19] := {113.12,date(),1,19, .t. }
aRows [20] := {123.12,date(),2,20, .f. }
@ 10,10 GRID Grid_1 ;
WIDTH 620 ;
HEIGHT 330 ;
HEADERS {'Column 1','Column 2','Column 3','Column 4','Column 5'} ;
WIDTHS {140,140,140,140,140} ;
ITEMS aRows ;
COLUMNCONTROLS { {'TEXTBOX','NUMERIC','$ 999,999.99'} , {'DATEPICKER','DROPDOWN'} , {'COMBOBOX',{'One','Two','Three'}} , { 'SPINNER' , 1 , 20 } , { 'CHECKBOX' , 'Yes' , 'No' } } ;
ON DBLCLICK Verprop()
END WINDOW
DEFINE BUTTON BUTTON1
ROW 550
COL 230
CAPTION 'Alto/Ancho celda'
ACTION Form_1.Grid_1.ondblclick
WIDTH 100
END BUTTON
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
/***/
static Function Verprop()
msgbox( str( this.cellwidth ) )
msgbox( str( this.cellheigth ) )
retu Nil
y el error me lo arroja en Form_1.Grid_1.ondblclick
/*
* HMG Grid Demo
* (c) 2005 Roberto Lopez
*/
#include "hmg.ch"
Function Main
Local aRows [20] [3]
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 400 ;
TITLE 'Mixed Data Type Grid Test' ;
MAIN
aRows [1] := {113.12,date(),1,1 , .t. }
aRows [2] := {123.12,date(),2,2 , .f. }
aRows [3] := {133.12,date(),3,3, .t. }
aRows [4] := {143.12,date(),1,4, .f. }
aRows [5] := {153.12,date(),2,5, .t. }
aRows [6] := {163.12,date(),3,6, .f. }
aRows [7] := {173.12,date(),1,7, .t. }
aRows [8] := {183.12,date(),2,8, .f. }
aRows [9] := {193.12,date(),3,9, .t. }
aRows [10] := {113.12,date(),1,10, .f. }
aRows [11] := {123.12,date(),2,11, .t. }
aRows [12] := {133.12,date(),3,12, .f. }
aRows [13] := {143.12,date(),1,13, .t. }
aRows [14] := {153.12,date(),2,14, .f. }
aRows [15] := {163.12,date(),3,15, .t. }
aRows [16] := {173.12,date(),1,16, .f. }
aRows [17] := {183.12,date(),2,17, .t. }
aRows [18] := {193.12,date(),3,18, .f. }
aRows [19] := {113.12,date(),1,19, .t. }
aRows [20] := {123.12,date(),2,20, .f. }
@ 10,10 GRID Grid_1 ;
WIDTH 620 ;
HEIGHT 330 ;
HEADERS {'Column 1','Column 2','Column 3','Column 4','Column 5'} ;
WIDTHS {140,140,140,140,140} ;
ITEMS aRows ;
COLUMNCONTROLS { {'TEXTBOX','NUMERIC','$ 999,999.99'} , {'DATEPICKER','DROPDOWN'} , {'COMBOBOX',{'One','Two','Three'}} , { 'SPINNER' , 1 , 20 } , { 'CHECKBOX' , 'Yes' , 'No' } } ;
ON DBLCLICK Verprop()
END WINDOW
DEFINE BUTTON BUTTON1
ROW 550
COL 230
CAPTION 'Alto/Ancho celda'
ACTION Form_1.Grid_1.ondblclick
WIDTH 100
END BUTTON
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
/***/
static Function Verprop()
msgbox( str( this.cellwidth ) )
msgbox( str( this.cellheigth ) )
retu Nil
y el error me lo arroja en Form_1.Grid_1.ondblclick
Antonio
Sistemas
Resipol
Sistemas
Resipol
- srvet_claudio
- Posts: 2224
- Joined: Thu Feb 25, 2010 8:43 pm
- Location: Uruguay
- Contact:
Re: Algo del evento ON DBLCLICK del control GRID
Citro cambia en la definición del botón por esto:citro wrote: DEFINE BUTTON BUTTON1
ROW 550
COL 230
CAPTION 'Alto/Ancho celda'
ACTION Form_1.Grid_1.ondblclick
WIDTH 100
END BUTTON
Code: Select all
ACTION Verprop()
-
Javier Tovar
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Algo del evento ON DBLCLICK del control GRID
Hola Citro,
Tienes varios errores,
1.- El boton esta fuera de DEFINE WINDOW Y END WINDOW.
2.- En el boton tienes que poner ONCLICK VerProp()
el programa debe de estar + o - así.
Espero que te ayude.
Saludos
Tienes varios errores,
1.- El boton esta fuera de DEFINE WINDOW Y END WINDOW.
2.- En el boton tienes que poner ONCLICK VerProp()
el programa debe de estar + o - así.
Code: Select all
/*
* HMG Virtual Grid Demo
* (c) 2009 Roberto Lopez
*/
#include "hmg.ch"
Function Main
Local aValue := { Nil , Nil }
LOCAL aAnchosCell := {140,140,140,100,100,100}
* 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 := { 'EDITBOX' }
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 800 ;
HEIGHT 600 ;
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 Form_1.Grid_1.Save
ITEM 'Clear Changes Buffer (Undo) (ALt+U)' ACTION Form_1.Grid_1.ClearBuffer
END POPUP
END MENU
USE TEST // SHARED
INDEX ON CODE TO CODE
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 aAnchosCell;
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' , 'Bio' } ;
ALLOWAPPEND ;
ALLOWDELETE
DEFINE BUTTON Boton_1
ROW 470
COL 10
CAPTION "Pulsa Aqui"
PICTALIGNMENT Top
ONCLICK Propios()
WIDTH 150
HEIGHT 20
END BUTTON
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
PROCEDURE Propios()
LOCAL nRow := Form_1.Grid_1.Row
LOCAL nCol := Form_1.Grid_1.Col
LOCAL aCell := Form_1.Grid_1.VALUE
MsgBox("Row: " + ALLTRIM(STR(nRow)) + " Col: " + ALLTRIM(STR(nCol)) + " Fila: " + ALLTRIM(STR(aCell[1])) + " Columna: " + ALLTRIM(STR(aCell[2])) )
RETURN NILSaludos
Re: Algo del evento ON DBLCLICK del control GRID
Haciendolo de esa manera me aparecen cellwidth y cellheigth con valor 0, pero si hago doble click en el GRID aparecen los valores que corresponden a la posición de la celda en la pantallasrvet_claudio wrote:Citro cambia en la definición del botón por esto:citro wrote: DEFINE BUTTON BUTTON1
ROW 550
COL 230
CAPTION 'Alto/Ancho celda'
ACTION Form_1.Grid_1.ondblclick
WIDTH 100
END BUTTONCode: Select all
ACTION Verprop()
Antonio
Sistemas
Resipol
Sistemas
Resipol
Re: Algo del evento ON DBLCLICK del control GRID
Bueno ahi corregí el error del botón que está afuera del DEFINE WINDOW END WINDOW. Si uso el procedimiento Propios() me muestra las posiciones de cada celda dentro de la grilla, o sea, la celda tal está en la fila 5 columna 6, por ej., pero lo que necesito saber es que posición tiene dicha celda en la pantalla, por eso es que en lugar de Grid_1.col uso this.CellCol, por ej. para saber la columna en la que se encuentra en la pantalla dicha celda. La idea es tener esas posiciones para que en el lugar seleccionado aparezca un control TEXTBOX que si bien no lo puse en el ejemplo, serviria para poder editar la celda cuando un usuario pulse una tecla alfanumérica, como cuando se usa Excel, salvo que me falte ver algún ej. de la carpeta SAMPLES\GRID del HMG 3.2, no veo ningún ejemplo que haga eso automáticamente.Javier Tovar wrote:Hola Citro,
Tienes varios errores,
1.- El boton esta fuera de DEFINE WINDOW Y END WINDOW.
2.- En el boton tienes que poner ONCLICK VerProp()
el programa debe de estar + o - así.
Espero que te ayude.Code: Select all
/* * HMG Virtual Grid Demo * (c) 2009 Roberto Lopez */ #include "hmg.ch" Function Main Local aValue := { Nil , Nil } LOCAL aAnchosCell := {140,140,140,100,100,100} * 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 := { 'EDITBOX' } DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 800 ; HEIGHT 600 ; 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 Form_1.Grid_1.Save ITEM 'Clear Changes Buffer (Undo) (ALt+U)' ACTION Form_1.Grid_1.ClearBuffer END POPUP END MENU USE TEST // SHARED INDEX ON CODE TO CODE 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 aAnchosCell; 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' , 'Bio' } ; ALLOWAPPEND ; ALLOWDELETE DEFINE BUTTON Boton_1 ROW 470 COL 10 CAPTION "Pulsa Aqui" PICTALIGNMENT Top ONCLICK Propios() WIDTH 150 HEIGHT 20 END BUTTON END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return PROCEDURE Propios() LOCAL nRow := Form_1.Grid_1.Row LOCAL nCol := Form_1.Grid_1.Col LOCAL aCell := Form_1.Grid_1.VALUE MsgBox("Row: " + ALLTRIM(STR(nRow)) + " Col: " + ALLTRIM(STR(nCol)) + " Fila: " + ALLTRIM(STR(aCell[1])) + " Columna: " + ALLTRIM(STR(aCell[2])) ) RETURN NIL![]()
Saludos
Lo del ONCLICK en el botón no entendí bien como es que va, porque probé poniendo
ACTION ONCLICK Verprop() y me arroja error, lo mismo que si hago Form_1.Grid_1.onclick Verprop(). Bueno por ahi ahora que expuse cual es la idea para que esto funcione se entiende un poco mejor la cosa.
Antonio
Sistemas
Resipol
Sistemas
Resipol
-
Javier Tovar
- Posts: 1275
- Joined: Tue Sep 03, 2013 4:22 am
- Location: Tecámac, México
Re: Algo del evento ON DBLCLICK del control GRID
Hola Citro,
Creo que debes de tomarte un tiempo para ver los ejemplos y analizarlos un poco, el ejemplo que te mande si le das Doble Click entra a edición automáticamente sin necesidad de hacer otra cosa, hay 42 ejemplos y muchos de ellos tratar sobre esto.
Saludos
Creo que debes de tomarte un tiempo para ver los ejemplos y analizarlos un poco, el ejemplo que te mande si le das Doble Click entra a edición automáticamente sin necesidad de hacer otra cosa, hay 42 ejemplos y muchos de ellos tratar sobre esto.
Saludos