Evaluar si existen la Variables
Visual Fox Pro, Trucos Comentarios ( 0 ) »IF TYPE("nombrevariable")
=MessageBox("La variable si existe")
ENDIF
Por: David Amador T
IF TYPE("nombrevariable")
=MessageBox("La variable si existe")
ENDIF
oWord = createobject("word.application")
IF VARTYPE(oWord) # "O"
=Messagebox("Word no se encuentra instalado
en este equipo")
return
endif
RUN DATE &cFecha
Puedes utilizar un TextBox y luego conviertes el valor de este a tipo fecha con la función DTOC() y corres la aplicación; así el valor del texto será la nueva fecha.
El único inconveniente es que te aparece una ventana DOS pero utilizando la función SHOWWindows del API es fácil corregir.
En verdad algunos efectos especiales como el que mostrare cambian la dinámica de los objetos y contribuyen a darle más vistosidad.
En este ejemplo haré que un Combo Box muestre sus valores en distintos colores de letra. Así como lo muestra la siguiente figura:
Para esto en el evento Init del Combo Box colocamos el siguiente código:
#DEFINE BarraRoja ,RGB(150,0,0)
#DEFINE BarraVerde ,RGB(0,150,0)
#DEFINE BarraAzul ,RGB(0,0,255)
#DEFINE BarraAmarillo ,RGB(255,255,0)
DEFINE POPUP Colores
DEFINE BAR 1 of Colores ;
Prompt "Rojo" COLOR BarraRoja
DEFINE BAR 2 of Colores ;
Prompt "Verde" COLOR BarraVerde
DEFINE BAR 3 of Colores ;
Prompt "Azul" COLOR BarraAzul
DEFINE BAR 4 of Colores ;
Prompt "Amarillo" COLOR BarraAmarillo
Cambie las siguientes propiedades de Combo Box
RowSourceType = 9 - Emergente
RowSource = Colores
Y en el evento InteractiveChange del Combo agregué el siguiente código:
DO CASE CASE This.Value = "Red" This.Forecolor = RGB(150,0,0) CASE This.Value = "Green" This.Forecolor = RGB(0,150,0) CASE This.Value = "Blue" This.Forecolor = RGB(0,0,255) CASE This.Value = "Yellow" This.Forecolor = RGB(255,255,0) ENDCASEEspero las allá gustado este ejemplo
KEYBOARD _{F4}_
En este caso agregamos este código al evento GOTFOCUS( ) y cuando el Combo reciba el enfoque entonces este se desplegara mostrando la información contenidas en él.
For each Form
in Application.Forms
Form.Width = Form.Width
+ 200
EndFor
&&thisform.olecontrol1.SETTINGS="9800,N,8,1"
thisform.olecontrol1.PORTOPEN = .T.
thisform.olecontrol1.OUTPUT = "ATDT6608196" +chr(13)
La secuencia de números después de ATDT es el numero telefónico al que queremos marcar
With thisform
If thisform.MDown Then
ThisForm .Left = ThisForm .Left + nXCoord - .ejex
ThisForm .Top = ThisForm .Top + nYCoord - .ejey
EndIf
EndWith
cCadena = "512 96 m sd 7ecbx */ t553rdv"
cAnchoCadena = len(cCadena)
cNumeros = ""
FOR nCnt = 1 TO cAnchoCadena
cCharacter = SUBSTR(cCadena, nCnt, 1)
IF ISDIGIT(cCharacter)
cNumeros = cNumeros + cCharacter
? cNumeros
ENDIF
ENDFOR
El primer paso es tener la cadena de caracteres a evaluar. Luego determinamos el ancho de la cadena a través de la función LEN; Utilizamos una variable donde almacenaremos los caracteres que sean dígitos (de 0 - 9). Hacemos un ciclo hasta el numero de caracteres de la cadena y vamos evaluando numero por numero; si el carácter es digito entonces será agregado a la variable cNumeros.
LOCAL nIndex
FOR nIndex = 1 TO Thisform.List1.ListCount
IF UPPER( Thisform.List1.ListItem(nIndex)
) = UPPER( ALLTRIM( this.Value ) )
Thisform.List1.ListIndex = nIndex
EXIT
ENDIF
ENDFOR
Thisform.List1.Refresh
Este código aun esta en prueba pero realmente funciona, lo programe porque necesitaba que el ancho del botón se ajustara a medida que yo escribiera en un TextBox. Si alguien desea aportar y modificar el código le ruego me envíe una demostración para luego publicarla a su nombre.
Cree un formulario y agréguele un botón y un TextBox.En el Evento InteractiveChange del TextBox programe lo siguiente:
cNoCaracteres =
len(alltrim(thisform.text1.value)) * 5
Thisform.Command1.Width = cNoCaracteres + 70
Thisform.Command1.Width = cNoCaracteres + 60
Thisform.Command1.Caption = Alltrim(Thisform.Text1.Value)