Page 1 of 2

Create Event

Posted: Wed Mar 12, 2014 8:57 pm
by mjaviergutierrez
Hola, no he encontrado una sintaxis ó explicación para el comando CREATE EVENT. Lo quiero usar para asignarle un procedimiento al evento OnChange de un combobox en tiempo de ejecución. No se si estaré en lo correcto ó si hay otra forma de asignar un procedimiento al evento de un control en tiempo de ejecución. Gracias.

Re: Create Event

Posted: Wed Mar 12, 2014 9:44 pm
by andyglezl
Hola, en tiempo de ejecucion no se...
Pero el combobox tiene ese evento...
@ <nRow> ,<nCol>
COMBOBOX <ControlName>
[ OF | PARENT <ParentWindowName> ]
[ ITEMS <caItems> ]
[ ITEMSOURCE <ItemSourceField1> [ , <ItemSourceField2> ] ]
[ VALUE <nValue> ]
[ VALUESOURCE <ValueSourceField> ]
[ DISPLAYEDIT ]
[ WIDTH <nWodth> ]
[ HEIGHT <nHeight>]
[ FONT <cFontName> SIZE <nFontSize> ]
[ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ]
[ TOOLTIP <cToolTipText> ]
[ ON GOTFOCUS <OnGotFocusProcedur> | <bBlock> ]
[ ON CHANGE <OnChangeProcedure> | <bBlock> ]
[ ON LOSTFOCUS <OnLostFocusProcedure> | <bBlock> ]
[ ON ENTER <OnEnterProcedure> | <bBlock> ]
[ ON DISPLAYCHANGE <OnDisplayChangeProcedure> | <bBlock> ]
[ ON DROPDOWN <OnDropDownProcedure> | <bBlock> ]
[ ON CLOSEUP <OnCloseUpProcedure> | <bBlock> ]
[ NOTABSTOP ]
[ HELPID <nHelpId> ]
[ BREAK ]
[ GRIPPERTEXT <cGripperText> ]
[ INVISIBLE ]
[ SORT ]
[ IMAGE <acImageNames> ]
[ DROPPEDWIDTH <nDroppedWidth> ]
Y dentro de Procedimiento, preguntar...

IF "esto"
...
ELSEIF "otro"
...
ELSEIF "otro_otro"
...
ENDIF

Re: Create Event

Posted: Wed Mar 12, 2014 10:38 pm
by Javier Tovar
Hola como te dice andyglezl,

Code: Select all

/*
* HMG ComboBox Demo
* (c) 2002 Roberto Lopez
*/

#include "hmg.ch"
Function Main

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 200 ;
		TITLE 'ComboBox Demo' ;
		MAIN 

		DEFINE MAIN MENU
			DEFINE POPUP '&Test'
				MENUITEM 'Item Content' ACTION MsgInfo ( Form_1.Combo_1.Item (1) )
			END POPUP
		END MENU

		@ 10,10 COMBOBOX Combo_1 ;
			WIDTH 100 ;
			ITEMS { '1 | Uno' , '2 | Dos' , '3 | tres' } ;
			VALUE 1 ;
			ON ENTER MsgInfo ( Str(Form_1.Combo_1.value) ) ;
			ON CHANGE MiFuncion(This.VALUE) ;
			FONT 'Courier' SIZE 12 

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

PROCEDURE MiFuncion(nValor)
	IF nValor == 1
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 1")
	ELSEIF nValor == 2
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 2")
	ELSEIF nValor == 3
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 3")
	ENDIF
RETURN NIL


Ejecucion.jpg
Ejecucion.jpg (93.43 KiB) Viewed 4894 times
Saludos

Re: Create Event

Posted: Thu Mar 13, 2014 12:14 am
by mjaviergutierrez
No, creo que no me explique. Necesito asignar un procedimiento al evento "OnChange" del control COMBOBOX en TIEMPO DE EJECUCION. Gracias.

Re: Create Event

Posted: Thu Mar 13, 2014 1:02 am
by andyglezl
Mas bien, dependiendo de las condiciones que quieres, en vez de asignar un procedimento al "ON CHANGE"
debes de crear todo el control COMBOBOX...

Re: Create Event

Posted: Thu Mar 13, 2014 2:03 am
by Javier Tovar
Hi all,

Try to make a new control, as I imagine is what our friend wants but gives me error. Any idea?


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hola a todos,

Trate de hacer un nuevo control, como me imagino que es lo que quiere nuestro amigo pero me da error. Alguna idea?

Code: Select all

/*
* HMG ComboBox Demo
* (c) 2002 Roberto Lopez
*/

#include "hmg.ch"
Function Main

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 200 ;
		TITLE 'ComboBox Demo' ;
		MAIN 

		DEFINE MAIN MENU
			DEFINE POPUP '&Test'
				MENUITEM 'Item Content' ACTION MsgInfo ( Form_1.Combo_1.Item (1) )
			END POPUP
		END MENU

		@ 10,10 COMBOBOX Combo_1 PARENT Form_1;
			WIDTH 100 ;
			ITEMS { '1 | Uno' , '2 | Dos' , '3 | tres' } ;
			VALUE 1 ;
			ON ENTER MsgInfo ( Str(Form_1.Combo_1.value) ) ;
			ON CHANGE MiFuncion(This.VALUE) ;
			FONT 'Courier' SIZE 12 

	END WINDOW

	CENTER WINDOW Form_1

	ACTIVATE WINDOW Form_1

Return

PROCEDURE MiFuncion(nValor)
	IF nValor == 1
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 1")
	ELSEIF nValor == 2
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 2")
	ELSEIF nValor == 3
	   MsgBox("En tiempo de ejecución Acabas de elegir el Item 3")
	ENDIF
	
	Form_1.Combo_1.Release

	NuevoControl()


	

	
RETURN NIL



Function NuevoControl()

LOCAL cLabel := "Label_1" 
LOCAL cText  := "Text_2" 
LOCAL cCombo := "Combo_3" 

@ 50 , 10  LABEL &cLabel  PARENT Form_1  ;
           VALUE cLabel ;
           BACKCOLOR  {128,255,255}
           
@ 46 , 70  TEXTBOX &cText PARENT Form_1  ;
           VALUE cText ;
           MAXLENGTH 10
           
@ 80 , 20 COMBOBOX &cCombo PARENT Form_1 ;
          ITEMS { '11111111' , '2222222' , '3333333' } ;
          ON CHANGE Fun(This.VALUE) 
		  
*Form_1.Text_1.SetFocus

Return nil



PROCEDURE Fun(nValor)
	IF nValor == 1
	   MsgBox("Este es otro procedimiento 1")
	ELSEIF nValor == 2
	   MsgBox("Este es otro procedimiento 2")
	ELSEIF nValor == 3
	   MsgBox("Este es otro procedimiento 3")
	ENDIF
	
RETURN NIL


Re: Create Event

Posted: Thu Mar 13, 2014 8:11 am
by mustafa
Hola mjaviergutierrez
Estoy haciendo una aplicación que otorga permisos por
categorias laborales mediante Combobox en un Password.
1º creo una tabla de permisos
aadd ( aItems , 'Manager' )
aadd ( aItems , 'Manager R.Human' )
aadd ( aItems , 'Manager Financial' )
aadd ( aItems , 'Section Chief' )
aadd ( aItems , 'Administrative Officer 1ª' )
aadd ( aItems , 'Administrative Officer 2ª' )
aadd ( aItems , 'Administrative Assistant ' )
aadd ( aItems , 'Broker' )
aadd ( aItems , 'Stock Foreman' )
aadd ( aItems , 'Officer 1ª Stock' )
aadd ( aItems , 'Officer 2ª Stock' )
aadd ( aItems , 'Boy Stock' )

nLogX = 1

@ 055,137 COMBOBOX Combo_01 ;
WIDTH 120 HEIGHT 023 ;
ITEMS aItems ;
VALUE nLogX ;
ON CHANGE nLogX := This.Value ;
FONT 'Arial' SIZE 09 ;
TOOLTIP 'vARIOS'

2º nLogX queda en memoria

DEFINE BUTTON Button_1a
ROW 130
COL 026
WIDTH 105
HEIGHT 028
CAPTION "Accept"
ACTION UsuarioX()
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP "Accept"
FONTBOLD .T.
FONTITALIC .T.
TABSTOP .T.
VISIBLE .T.
TRANSPARENT .F.
MULTILINE .F.
PICTURE "resource\Acep.bmp"
PICTALIGNMENT LEFT
END BUTTON

*----------------------------------*
Function UsuarioX()
*----------------------------------*

IF nLogX = 1
mirax := 'Manager'
ENDIF
IF nLogX = 2
mirax := 'Manager R.Human'
ENDIF
IF nLogX = 3
mirax := 'Manager Financial'
ENDIF
etc,etc........
y se graba la opción en un fichero

SELECT 1
USE control
append BLANK
REPLACE CHARGE WITH mirax

Pronto publicaré el sample completo

Mustafa :idea:

Re: Create Event

Posted: Thu Mar 13, 2014 11:26 am
by mustafa
El ejemplo se basa en la investigacion de autorizar trabajos
mediante autorizaciones en una empresa.

Solamente tienen autorizacion de cambio de Clave y de Listado

george General Manager admin
adam Manager R.Human admin

El programa por defecto si no existe el fichero "control.dbf"
crea la clave de acceso ---> 'admin' 'General Manager' 'admin'

Se ha creado para el ejemplo unos nombres imaginarios y unos
cargos, que debe borrar cuando quiera y crear un nuevo fichero
que se creara automatico.


Espero que les guste, saludos

Mustafa

*------------------------------ Google ------------------------------------------------*

The example is based on research papers authorizing
 authorizations by a company.
 Only have authorization and Key exchange Listing

 george General Manager admin
adam Manager R.Human admin

 The program by default if there is no file "control.dbf"
 creates the password ---> 'admin' 'General Manager' 'admin'

 It has been created for such imaginary names and some
 charges must clear whenever and create a new file
 which create automatic.


Hope you like it, greetings

Mustafa :lol:

Re: Create Event

Posted: Thu Mar 13, 2014 12:12 pm
by esgici
Hola Mustafa

Good work ( as always ), thanks;

this project is helpful and educative for everyone :arrow:

Viva HMG :D

Re: Create Event

Posted: Thu Mar 13, 2014 12:52 pm
by danielmaximiliano
Javier Tovar wrote:Hi all,

Try to make a new control, as I imagine is what our friend wants but gives me error. Any idea?


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Hola a todos,

Trate de hacer un nuevo control, como me imagino que es lo que quiere nuestro amigo pero me da error. Alguna idea?
Cual es el error que te da ?
ya que probe el codigo y funciona ; Solamente que en un momento falla porque el control Combo_1 es borrado.

Code: Select all

Form_1.Combo_1.Release
otro error que econtre es que la rutina intenta crear de nuevo el contro Label , Textbox y ComboBox y esos controles ya fueron creados anteriomente.