13 de febrero de 2019

Decodificar la marca de tiempo en bibliotecas de clases y formularios

Visual Foxpro coloca una marca de tiempo en muchos registros de la tabla que representa un formulario o una biblioteca de clases. Históricamente, este campo se usaba para hacer coincidir los registros en las plataformas compatibles: DOS, Mac, Unix, Windows.

La variable reservada de VFP "_Screen" es una referencia de objeto a la instancia de Form que representa el escritorio de VFP. Debido a que es una instancia de formulario, puede guardarlo como una clase utilizando el método SaveAsClass . Esto hará que se cree un registro de marca de tiempo que podamos usar para ejecutar el código de muestra. El código de muestra demora 3 segundos, crea una subclase del formulario, agrega un botón y luego muestra las marcas de tiempo de los elementos en la biblioteca de clases.

La marca de tiempo está en un formato estándar

ERASE T.vcx
_SCREEN.ADDOBJECT("btn","commandbutton")        && add a button to the desktop
_SCREEN.SAVEASCLASS("t.vcx","myform")           && create class myform in a target file t.vcx
INKEY(3)                                        && delay 3 seconds
MODIFY CLASS xx OF T.vcx AS myform FROM T.vcx NOWAIT  && create a subclass of myform in the same file
ASELOBJ(aArray,1)                               && get an object reference to the class in the designer
aArray[1].ADDOBJECT("btn2","commandbutton")     && and btn2 to the class
aArray[1].btn2.TOP=200                          && move it down so it doesn't hide btn
KEYBOARD "Y"                                    && a "y" in the "Do you want to save changes")
RELEASE WINDOWS "Class designer"                && close the designer
USE T.vcx                                       && open the table

SCAN FOR TIMESTAMP!=0                           && look for timestamps
  ?TIMESTAMP,DecodeTimeStamp(TIMESTAMP),objname+" "+CLASS
ENDSCAN

PROCEDURE DecodeTimeStamp(nTimestamp AS NUMBER) AS DATETIME
  *** See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/filetimetodosdatetime.asp
  nDate=BITRSHIFT(nTimestamp,16)
  nTime=BITAND(nTimestamp,2^16-1)

  nYear=BITAND(BITRSHIFT(nDate,9),2^8-1)+1980
  nMonth=BITAND(BITRSHIFT(nDate,5),2^4-1)
  nDay=BITAND(nDate,2^5-1)

  nHr=BITAND(BITRSHIFT(nTime,11),2^5-1)
  nMin=BITAND(BITRSHIFT(nTime,5),2^6-1)
  nSec=BITAND(nTime,2^5-1)

  RETURN DATETIME(nYear,nMonth,nDay,nHr,nMin,nSec)
ENDPROC 

Calvin Hsia

Artículo original: Decoding the timestamp in class libararies and forms

9 de enero de 2019

Detectar si una impresora es de matriz de puntos

Con esta función pueden averiguar si una impresora es de matriz de puntos.

CLEAR
DIMENSION asPrn[1]
FOR nPrn = 1 TO APRINTERS(asPrn)
  sPrn = asPrn[nPrn, 1]
  ? PADR(sPrn,50), " ", IIF(IsDotPrinter (sPrn), "Matriz", "")
NEXT
RETURN

FUNCTION IsDotPrinter (sPrn)
  LOCAL nBins, sBuff
  #DEFINE DC_BINS 6
  #DEFINE DMBIN_TRACTOR 8
  
  DECLARE LONG DeviceCapabilities IN WinSpool.drv ;
    STRING @ sPrinter, STRING @ sPort, ;
    INTEGER nCapability, STRING @ sReturn, STRING @ pDevMode
  sBuff = SPACE(512)
  * Lista de words de bandejas
  nBins = DeviceCapabilities (sPrn, NULL, DC_BINS, @sBuff, NULL)
  IF nBins > 0
    sBuff = PADR(sBuff, nBins)
  ENDIF
  CLEAR DLLS DeviceCapabilities
  RETURN CHR(DMBIN_TRACTOR) $ sBuff
ENDFUNC

Mario Lopez

21 de diciembre de 2018

Clase ctl32_balloontip

ctl32_balloontip
Por Carlos Alloatti

Descarga

Descripción general
Esta clase proporciona un control BalloonTip que se puede usar en VFP9. Esta clase tiene dos funciones:
  • Emule la advertencia "CAPS LOCK ON" de XP en un cuadro de texto de ingreso de contraseña,
  • Muestre una información en globo que apunte a cualquier control o señale un formulario con el texto que desee.
Puede personalizar el balloontip agregando un ícono, un título, cambie su estilo de balloontip a información sobre herramientas, cambie su fuente, colores, posición con respecto al control, alineación, etc.

Esta clase utiliza las funciones de la API de Windows para crear una verdadera información sobre herramientas de controles comunes de Windows.

Esta clase utiliza BINDEVENT con las nuevas funciones solo disponibles en VFP9. No funcionará en versiones anteriores de VFP. Si está utilizando una versión anterior de VFP, realmente debería actualizar para aprovechar las muchas funciones nuevas y para admitir VFP.


Inicio rápido
Si desea un ctl32_balloontip en un formulario, arrastre el control ctl32_balloontip desde la ventana de Project Manager y suéltelo en el formulario. Solo puedes tener UNA instancia de la clase en un formulario. Utiliza el mismo control y cambia su icono, título y texto y otras propiedades según sea necesario.


Ejemplo de Proyecto
Vea el proyecto de ejemplo incluido en la carpeta de Ejemplo para ver cómo usar el control y qué se puede hacer.


BindEvent
Esta clase hace Bindevents a las siguientes ventanas y mensajes de ventana:

ThisForm.hWnd, WM_KEYDOWN

ThisForm.hWnd, WM_LBUTTONDOWN

ThisForm.hWnd, WM_NOTIFY

Si se conecta a esos mismos pares de ventana / evento en alguna otra parte de su código, recuerde lo que dice el archivo de Ayuda:

"Al vincular eventos de mensaje de Windows (Mensaje de Windows), solo puede existir un emparejamiento de mensajes hWnd a Windows".

Los archivos de iconos utilizados deben incluirse en el proyecto. No es necesario redistribuir los archivos de iconos a los usuarios finales. Los archivos de iconos deben contener un icono de 16x16 256 colores, que se usa para mostrar en la barra de estado.


Errores
20060926
Hay un error en el código de posicionamiento en tmrShow.ctl32_Show() que a veces genera el error de que thisform.activecontrol no es un objeto. Lo he arreglado para la próxima versión y también he añadido más funciones.


Problemas conocidos

Registro de cambios
2006xxxx
Se modificaron las funciones _ThemeStatus, _HostHWnd, _FormType en _util de ctl32_common. Eliminó todas las referencias a ThisForm, ahora el formulario se determina a partir del control que se pasa como parámetro a estas funciones.

Se modificó la forma en que se agrega el objeto _Util al control, de newobject a addproperty, para que no cuente como otro control.

Se agregaron chino tradicional y chino simplificado a mayúsculas y mensajes de advertencia de bloqueo.

Se cambió el nombre de ctl32_SetLangStrings a ctl32_SetLocaleStrings

Agregue un espacio al final de las cadenas de título de algunos idiomas para evitar errores de compilación en DBCS Windows.

Rutinas movidas para obtener identificadores de idioma a la clase _util

Añadidos ctlVcxStructs y ctlVcxCommon, especifican el nombre / ubicación de las clases ctl32_structs y ctl32_common.

20061010
Método ctlOS() eliminado.

20061001
Se corrigió un error en tmrShow.ctl32_Show().

Se agregó ctlPositionStyle 6: ballontip se posiciona en relación con la posición actual del puntero del mouse.

Añadido el método ctlOS()

20060926
La estructura actualizada de TOOLINFO no parece funcionar en Vista RC1 5600, así que cambié la clase _toolinfo para que no tenga el miembro HBITMAP, consulte http://windowssdk.msdn.microsoft.com/en-us/library/ms650460.aspx

WindowFromPoint en EvtHandler_WM_LBUTTONDOWN solo funciona en XP y superior, en 98 y 2K siempre devuelve el HWND del formulario, y no del ballootip, incluso si hace clic en el balloontip.

GetWindowRect se usa luego en 98 y 2K, el problema es que incluye el área cerca del vástago como parte del rectángulo de la ventana, pero está lo suficientemente cerca.

Se agregó el evento ctlHide que se eleva mediante clics en balloontip, fuera de balloontip, en el botón X cerrar y enlaces en balloontips

Se agregó bindevent a _Screen.Moved para ocultar cuando se mueve la pantalla VFP

Se cambiaron ctlBalloon y ctlBorder a ctlStyle.

Se agregó código para tratar con los cuadros de texto con SelectOnEntry = .T. y cuando ctlPositionStyle se establece en 3, alinéelo con el cursor de cursor. Vuelve a ctlPositionStyle = 2.

Bajo el capó
La clase crea una información sobre herramientas de controles comunes de Windows y solo le agrega una herramienta. Utiliza TTM_TRACKACTIVATE para mostrar la información sobre herramientas, y TTM_TRACKPOSITION para colocar la información sobre herramientas.

A partir de INIT (), primero se declaran todas las funciones API utilizadas en ctl32_RegisterFunctions. Las funciones de Api son dlecared solo si no han sido declaradas anteriormente.

Luego se agregan algunas propiedades para uso interno a la clase. A continuación, se encuentra el HWnd de la ventana para usar como padre para el control. Esto se debe a que los formularios de nivel superior o formularios con barras de desplazamiento tienen una ventana interna dentro de la ventana del formulario.

Luego, las cadenas de idioma se establecen y almacenan, y luego se crea el control de información sobre herramientas real.

Para colocar la información sobre herramientas, se utilizan dos métodos: si establece ctlPositionStyle en 3, se recupera la posición del cursor de cursor en el formulario y, según eso, la información sobre herramientas se coloca al lado. Debe usar este estilo de posición con los controles que tienen un cursor caret, por ejemplo, un cuadro de texto.

Nuevo en la versión 20061001: Hay un tercer método de posicionamiento disponible, la posición actual del cursor del mouse.

Si el cursor no es visible, debido a que se selecciona algún texto en el control, o el control no tiene un símbolo, el estilo de posición ctl se revierte a 2, y el control activo de forma se usa para posicionar.

El problema con el uso del compás o el control activo actual, es que se pondrá algo de código para mostrar una información sobre herramientas en el evento GotFocus de un control. Pero en el evento GotFocus, el control anterior aún es propietario de caret o es el control activo actual.

Para superar esto, cuando establece ctlVisible en TRUE, se activa un temporizador que espera 200 milisegundos, por lo que deja que el evento GotFocus finalice, no por el tiempo transcurrido, sino porque el código del evento del temporizador está fuera del flujo de código del Se enfocó.

La clase de temporizador ctl32_balloontip_show tiene un método ctl32_Show que se encarga de posicionar y mostrar el balloontip.

Cuando el balloontip esté visible, se ocultará automáticamente cuando el usuario haga clic en el balloontip, haga clic en el formulario, mueva o cambie el tamaño del formulario, o mueva la ventana de VFP. También una pulsación de tecla ocultará el balón. Todo esto se hace por medio de BINDEVENTS a algunos eventos de VFP y mensajes de ventana. Verifique el método ctl32_BindEvents () de la clase.

También se habilita un temporizador cuando el control se hace visible, que ocultará el control.

Se genera un evento cuando se oculta el ballontip: ctlHide, con un parámetro que le indica el código de razón, para que pueda reaccionar de manera diferente a la forma en que el usuario descartó el balloontip.

Cuando configura ctlCapsLockStyle en TRUE, el balloontip emula la advertencia de "Caps Lock ON" que indica Windows XP en la pantalla de inicio de sesión. Puede utilizar esto en un cuadro de texto de contraseña.

SUGERENCIA: establezca el PasswordChar del cuadro de texto en "l" y el FontName en "WingDings" para emular el aspecto de los cuadros de texto de la contraseña de XP.

También revise la muestra para encontrar una forma de manejar la barra espaciadora en un cuadro de texto de contraseña, para solucionar un error de VFP. (El espacio se muestra en el cuadro de texto en lugar de PassWordChar).

El título y el texto de advertencia de "Bloqueo de mayúsculas ENCENDIDO" está disponible en 28 idiomas, y se establece en la configuración regional seleccionada por el usuario del sistema operativo. Puede anular el idioma estableciendo un valor de configuración regional en ctlLangID.

Verifique aquí las ID de idioma:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_61df.asp

Vea el método ctl32_SetLangStrings para ver cómo se hace. Las cadenas de idioma se extrajeron de la versión 6 de comctl32.dll. No he podido agregar idiomas de caracteres no latinos (falta de conocimiento y tiempo, tal vez alguien interesado pueda ayudarme allí).

A partir de Windows XP SP2, puede especificar un ícono personalizado para que se muestre en el balloontip. esto se hace almacenando el nombre del archivo de icono y la ruta si es necesario en ctlIcon. La función LOADPICTURE VFP se utiliza para cargar el icono. El archivo de iconos se puede incluir en el proyecto.

A partir de XP, se puede mostrar un enlace en el balloontip. Para proporcionar compatibilidad con versiones anteriores de Windows, el enlace se convierte a texto sin formato. Usted llena las propiedades ctlLinkLabel y ctlLinkUrl, y luego establece ctlText en algo como "Visite aquí:" + ctlLink

En Vista, puede elegir mostrar íconos grandes, configurando ctlIconLarge en VERDADERO. La API de Vista con respecto a los controles de información sobre herramientas aún no está bien definida, parece.



Propiedades, Eventos y Métodos

 ctlActive
Property.
Value Type: Logical.
Default Value: TRUE
R/W: Read/Write.
Cuando se establece en FALSE, la información sobre herramientas está inactiva, no se muestra. Puede usarse como un interruptor global de encendido / apagado para la información sobre herramientas para el formulario, tal vez en función de alguna preferencia del usuario almacenada en algún lugar.

Observaciones:

Los valores válidos son .T. / .F. También puede usar 0 para FALSO y 1 o cualquier número <> 0 para TRUE.


 ctlAlignment
Property.
Value Type: Numeric.
Default Value: 3
R/W: Read/Write.
Especifica la alineación de la información sobre herramientas, relativa a su posición. Los valores posibles son:
0 Middle LeftCON_ALIGN_MIDDLELEFT
1 Middle RightCON_ALIGN_MIDDLERIGHT
2 Middle CenterCON_ALIGN_MIDDLECENTER
3 AutomaticCON_ALIGN_AUTOMATIC
4 Top LeftCON_ALIGN_TOPLEFT
5 Top RightCON_ALIGN_TOPRIGHT
6 Top CenterCON_ALIGN_TOPCENTER
7 Bottom LeftCON_ALIGN_BOTTOMLEFT
8 Bottom RightCON_ALIGN_BOTTOMRIGHT
9 Bottom CenterCON_ALIGN_BOTTOMCENTER


 ctlBackColor
Property.
Value Type: Numeric.
Default Value: Design time: -1, RunTime: System default BackColor for tooltips.
R/W: Read/Write.
Especifica el color de fondo de la información sobre herramientas. Establézcalo en -1 para usar el backcolor predeterminado del sistema para información sobre herramientas.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.

Ejemplo:

Thisform.oBallonTip.BackColor Rgb(255, 198, 170)


*!* Sets tooltip BackCOlor to system default:
Thisform.oBallonTip.BackColor = -1


 ctlCapsLockStyle
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
Cuando se establece en TRUE, la información sobre herramientas se oculta, establece los valores de ctlIcon en 2 (), ctlTitle y ctlText en las cadenas almacenadas de la configuración regional del sistema o en la configuración regional especificada en ctlLocale, y establece ctlHideDelay en 5000. CAPS LOCK está activado , la información sobre herramientas se muestra a sí misma.

Observaciones:

Los valores válidos son .T. / .F. También puede usar 0 para FALSE y 1 o cualquier número <> 0 para TRUE.

Ejemplo:

*!* TextBox GotFocus
Thisform.ctl32_balloontip1.ctlCapsLockStyle = 1


*!* TextBox LostFocus
Thisform.ctl32_balloontip1.ctlCapsLockStyle = 0


 ctlCloseButton
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
Cuando se establece en TRUE, la información sobre herramientas tendrá un botón Cerrar en la esquina superior derecha.

Se aplica a: comctl32.dll 5.8 Internet Explorer 5 o posterior.

Observaciones:

Los valores válidos son .T. / .F. También puede usar 0 para FALSE y 1 o cualquier número <> 0 para TRUE.


 ctlControl
Property.
Value Type: Object.
Default Value: None
R/W: Read/Write.
Mantiene una referencia de objeto a un control de formulario. La información sobre herramientas se posicionará usando esta posición de control, si ctlPositionStyle se establece en 5 CON_BTPOS_CTRLREF.


 ctlFadeIn
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
El control muestra con un desvanecimiento en efecto.

Se aplica a: Windows 2000 o posterior. Ignorado en Windows 95 y 98.

Observaciones:

Los valores válidos son .T. / .F. También puede usar 0 para FALSE y 1 o cualquier número <> 0 para TRUE.


 ctlFadeOut
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
El control se esconde con un efecto de desvanecimiento.

Se aplica a: Windows 2000 o posterior. Ignorado en Windows 95 y 98.

Observaciones:

Los valores válidos son .T. / .F. También puede usar 0 para FALSE y 1 o cualquier número <> 0 para TRUE.


 ctlFontBold
Property.
Value Type: Logical.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica si la fuente de la información sobre herramientas tiene este estilo.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.


 ctlFontCharSet
Property.
Value Type: Numeric.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Realmente no sé nada acerca de esto, alguien más tendrá que ayudar con esto.


 ctlFontItalic
Property.
Value Type: Logical.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica si la fuente de la información sobre herramientas tiene este estilo.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.

 ctlFontName
Property.
Value Type: Character.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica el nombre de la fuente de la información sobre herramientas.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.


 ctlFontSize
Property.
Value Type: Numeric.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica el tamaño de fuente en puntos de la fuente de la información sobre herramientas.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.


 ctlFontStrikethru
Property.
Value Type: Logical.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica si la fuente de la información sobre herramientas tiene este estilo.

Observaciones:

No es realmente útil ...


 ctlFontUnderline
Property.
Value Type: Logical.
Default Value: Design Time: None, RunTime: Value of system default for tooltip text.
R/W: Read/Write.
Especifica si la fuente de la información sobre herramientas tiene este estilo.

Observaciones:

No es realmente útil ...


 ctlForeColor
Property.
Value Type: Numeric.
Default Value: Design time: -1, RunTime: System default ForeColor for tooltips.
R/W: Read/Write.
Especifica el forecolor de la información sobre herramientas. Establézcalo en -1 para usar el forecolor predeterminado del sistema para información sobre herramientas.

Observaciones:

He agregado esta propiedad porque fue solicitada, por favor no la abuse, trate de cumplir con las preferencias del usuario.


 ctlHide
Evento.

Ocurre cuando la información sobre herramientas se oculta después de mostrarse
Parameters nHideStyle

-1: Enlace en la información sobre herramientas pulsada.
0: ctlAutoHide retardo transcurrido.
1: Haga clic dentro de información sobre herramientas
2: Haga clic en la ayuda exterior.
3: Haga clic en el botón Cerrar información sobre herramientas.
4: Tecla pulsada.
5: La tecla Bloq Mayús está desactivada.
6: Forma movida o redimensionada, ventana principal del programa movida.

 ctlHideDelay
Property.
Value Type: Numeric.
Default Value: 5000
R/W: Read/Write.

Especifica el tiempo en milisegundos que se mostrará la información sobre herramientas, una vez transcurrido el tiempo, la información sobre herramientas se oculta. Al hacer clic en la información sobre herramientas, en un enlace en la información sobre herramientas, en el formulario, mover el formulario o el formulario principal de VFP se ocultará la información sobre herramientas.

Se establece en 0 para deshabilitar la ocultación automática de la información sobre herramientas.


 ctlHwnd
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read.

Devuelve un identificador de ventana al control.

El entorno operativo de Microsoft Windows identifica cada formulario en una aplicación asignándole un identificador, o hWnd. La propiedad hWnd se usa con las llamadas a la API de Windows. Muchas funciones del entorno operativo de Windows requieren el hWnd de la ventana activa como argumento.

 ctlIcon
Property.
Value Type: Numeric or Character (an Icon file name).
Default Value: 0
R/W: Read/Write.
Especifica el icono del sistema o el icono personalizado para mostrar.
0 No iconTTI_NONE
1 Info iconTTI_INFO
2 Warning iconTTI_WARNING
3 Error iconTTI_ERROR
4 Info icon largeTTI_INFO_LARGE (Vista)
5 Warning icon largeTTI_WARNING_LARGE (Vista)
6 Error icon largeTTI_ERROR_LARGE (Vista)
En lugar de usar 4,5,6, puede establecer ctliconLarge en .T.

En su lugar, puede especificar el nombre de un archivo ico (requiere XP SP2 o posterior).

Si el archivo que especifica no existe, no se genera ningún error y el valor se establece en 0, sin icono. El archivo de iconos debe tener un icono de 16x16 256 colores o un icono de 32x32 si desea mostrar un icono grande (solo Vista).

Los archivos de iconos deben incluirse en el proyecto. No es necesario copiar los archivos de íconos al implementar la aplicación.

Se aplica a: Icono de sistema: Todos. Icono personalizado: requiere XP SP2 o posterior.


 ctlIconLarge
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
Si es TRUE, el icono del sistema se muestra en un tamaño de 32x32 en lugar del estándar de 16x16.

Se aplica a: Vista.

Observaciones:

Esto solo se aplica si ctlIcon tiene un valor entre 1 y 3 para los iconos del sistema. Si utiliza un icono personalizado, no se aplica. Si desea mostrar un icono personalizado de 32x32 en Vista, simplemente use un icono de 32x32.

Los valores válidos son .T. / .F. También puede usar 0 para FALSE y 1 o cualquier número <> 0 para TRUE.


 ctlLangID
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Cuando se establece en un valor distinto de 0x0, reemplaza el idioma de la configuración regional del usuario al configurar el título y el texto para una información sobre herramientas con ctlCapsLockstyle establecido en TRUE.

Consulte http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_61df.asp para obtener los códigos de configuración regional.

El ctl32_tooltip tiene texto para 30 idiomas y variaciones. Si desea que se incluya su idioma, publíquelo en los foros.


 ctlLeft
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica la posición izquierda de la información sobre herramientas cuando se utiliza ctlPositionStyle 1.


 ctlLink
Use the ctlMakeLink method instead.
Property.
Value Type: Character.
Default Value: None
R/W: Read.
Devuelve los valores de ctlLinkURL y ctlLinkLabel en un enlace <A> </A> válido para mostrar en una información sobre herramientas.

Se aplica a: XP o posterior.

Observaciones:

Esta propiedad se usa con ctlLinkLabel y ctlLinkURL para que pueda agregar fácilmente un enlace a una información sobre herramientas, sin tener que crear el código html.

Ejemplo:

Local m.lcText


With Thisform.ctl32_balloontip1

  .ctlLinkURL = "http://www.ctl32.com.ar/ctl32_balloontip.asp"
  .ctlLinkLabel = "ctl32_BalloonTip Homepage"
  m.lcText = "Check " + .ctlLink + " for more info and docs."
Endwith


Thisform.ctl32_balloontip1.ctlShow(CON_BTPOS_SYS1270, ;
m.lcText, "This is a BalloonTip With a Web Link", 1) 
En este ejemplo, el valor de ctlLink es la siguiente cadena:

<A href="http://www.ctl32.com.ar/ctl32_balloontip.asp"> Página de inicio de ctl32_BalloonTip </A>


 ctlLinkLabel
Use the ctlMakeLink method instead.
Property.
Value Type: Character.
Default Value: None
R/W: Read/Write.
Especifica la etiqueta del enlace devuelto por ctlLink.

Se aplica a: XP o posterior.


 ctlLinkURL
Use the ctlMakeLink method instead.
Property.
Value Type: Character.
Default Value: None
R/W: Read/Write.
Especifica la URL del enlace devuelto por ctlLink.

Se aplica a: XP o posterior.


 ctlMakeLink(cLinkLabel, cLinkURL)
Método.

Devuelve los valores de cLinkLabel y cLinkURL en un enlace <A> </A> válido para mostrar en una información sobre herramientas. También establece los valores de ctLinkLabel y ctlLinkUrl


 ctlMargin
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica el margen entre el texto y los bordes de la información sobre herramientas. Al establecer ctlMargin, ctlMarginBottom, ctlMargeinLeft, ctlMarginRight y ctlMarginTop se establecen en este valor.

Se aplica a: Todos excepto Vista, que ignora el valor.


 ctlMarginBottom
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica el margen entre el texto y el borde inferior de la información sobre herramientas.


 ctlMarginLeft
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica el margen entre el texto y el borde izquierdo de la información sobre herramientas.


 ctlMarginRight
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica el margen entre el texto y el borde derecho de la información sobre herramientas.


 ctlMarginTop
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica el margen entre el texto y el borde superior de la información sobre herramientas.


 ctlMaxWidth
Property.
Value Type: Numeric.
Default Value: 255
R/W: Read/Write.
Especifica el ancho máximo para una ventana de información sobre herramientas.

Observaciones:

El valor máximo de ancho de ToolTip no indica el ancho real de una ventana de ToolTip. Más bien, si una cadena de información sobre herramientas supera el ancho máximo, el control divide el texto en varias líneas, utilizando espacios para determinar los saltos de línea. Si el texto no se puede segmentar en varias líneas, se mostrará en una sola línea. La longitud de esta línea puede exceder el ancho máximo de información sobre herramientas.


 ctlOffsetX
Property.
Value Type: Numeric.
Default Value: 0.75
R/W: Read/Write.
Observaciones:

Ver ctlAlignment para una descripción detallada.


 ctlOffsetY
Property.
Value Type: Numeric.
Default Value: 0.75
R/W: Read/Write.
Observaciones:

Ver ctlAlignment para una descripción detallada.


 ctlOpenLink(cExpression)
Método.

Abre en el programa predeterminado el enlace especificado en ctlLinkURL. El enlace puede ser una dirección web que se abrirá en el navegador predeterminado o un documento que se abrirá en el programa predeterminado asignado al tipo de documento.


 ctlPosition
Property.
Value Type: Numeric.
Default Value: 3 (CON_ALIGN_AUTOMATIC)
R/W: Read/Write.
Especifica la posición de la información sobre herramientas, relativa a un control. Los valores posibles son:
0 Middle LeftCON_ALIGN_MIDDLELEFT
1 Middle RightCON_ALIGN_MIDDLERIGHT
2 Middle CenterCON_ALIGN_MIDDLECENTER
3 AutomaticCON_ALIGN_AUTOMATIC
4 Top LeftCON_ALIGN_TOPLEFT
5 Top RightCON_ALIGN_TOPRIGHT
6 Top CenterCON_ALIGN_TOPCENTER
7 Bottom LeftCON_ALIGN_BOTTOMLEFT
8 Bottom RightCON_ALIGN_BOTTOMRIGHT
9 Bottom CenterCON_ALIGN_BOTTOMCENTER


 ctlPositionStyle
Property.
Value Type: Numeric.
Default Value: 1 (CON_BTPOS_LEFTTOP)
R/W: Read/Write.
Especifica qué método se utilizará para posicionar la información sobre herramientas. La forma específica de las coordenadas x e y hacia donde apuntará la punta se calculará de acuerdo con el valor de esta propiedad. Los valores posibles son:
1 CON_BTPOS_LEFTTOPSe utilizarán los valores almacenados en ctlLeft y ctlTop (Esto son coordenadas de forma en píxeles).
2 CON_BTPOS_ACTIVECTRLUse el control de formulario activo. Si no hay un control activo, ctlPositionStyle utiliza de manera predeterminada CON_BTPOS_SYS1270.
3 CON_BTPOS_CARETUtiliza el caret del formulario. Para usar este estilo, el control activo del formulario debe tener un carácter y debe ser visible, de lo contrario, ctlPositionStyle se establece de forma predeterminada en CON_BTPOS_ACTIVECTRL.
4 CON_BTPOS_SYS1270Use el control debajo del mouse, si no hay control debajo del mouse, ctlPositionStyle toma como valor predeterminado CON_BTPOS_MOUSE.
5 CON_BTPOS_CTRLREFUtilice el control almacenado como referencia en ctlControl. Si no hay una referencia de control en ctlControl, el valor predeterminado es CON_BTPOS_SYS1270.
6 CON_BTPOS_MOUSEUsa la posición actual del cursor del mouse.
Observaciones:

Cuando se usa CON_BTPOS_MOUSE, la posición utilizada no es la posición exacta del cursor del mouse, pero está cerca de ella. El cursor del mouse se trata como un control de 16x16 píxeles. Esto se hace para que el cursor del mouse no obligue a la información sobre herramientas a ocultarse tan pronto como se muestre. Puede cambiar los valores de ctlOffsetX y ctlOffsetY para ajustar la posición de la información sobre herramientas cuando se usa CON_BTPOS_MOUSE. Incluso los valores negativos pueden ser utilizados.


 ctlSetDefaultFont()
Método.

Establece ctlFontName, ctlFontCharSet, ctlFontSize, ctlFontBold, ctlFontItalic, ctlFontStrikethru, ctlFontUnderline a los valores predeterminados del sistema para información sobre herramientas.


 ctlShow(nPositionStyle, cText, cTitle, nIcon | cIconFilename)
Método.

Muestra la información sobre herramientas.
Parameters:
nPositionStyle: ctlPositionStyle
cText: ctlText, the text to display in the tooltip.
cTitle: ctlTitle, the title of the tooltip
nIcon or cIconFileName: ctlIcon
Observaciones:

Todos los parámetros son opcionales, si llama a ctlShow() sin ningún parámetro, o con nPositionStyle = 0, la información sobre herramientas se oculta.

Si configura un título o un ícono para la información sobre herramientas y luego usa ctlShow sin especificar un título o ícono, se usará el ícono y / o el título previamente establecidos.

Este método primero oculta la información sobre herramientas, por lo que no es necesario que se esconda primero.

Esta es la forma ideal de mostrar una guía de bola para un control, simplemente establezca ctlShowDelay en el valor que prefiera, luego llame esto en el evento MouseEnter de un control.

No se olvide de llamar a CtlShow(0) en la opción MouseLeave del control, para desactivar la visualización retardada de la punta del globo.

Ejemplo:
Thisform.ctl32_ballontip1.ctlShow(CON_BTPOS_SYS1270, "Tooltip text", "Tooltip Title", TTI_INFO)


 ctlShowDelay
Property.
Value Type: Numeric.
Default Value: 200
R/W: Read/Write.
Especifica el tiempo en milisegundos a esperar para mostrar la información sobre herramientas después de configurar ctlVisible en TRUE o llamar al método ctlShow().

El valor mínimo es de 200 milisegundos.


 ctlStyle
Property.
Value Type: Numeric.
Default Value: 1
R/W: Read/Write.
Especifica el estilo de información sobre herramientas.
1 CON_BTSTYLE_BALLOON Una forma de globo.
2 CON_BTSTYLE_RECT Forma rectangular.
3 CON_BTSTYLE_NOBORDER Forma rectangular sin borde (Vista ignora este estilo).


 ctlText
Property.
Value Type: Character.
Default Value: None
R/W: Read/Write.
El texto a mostrar en la información sobre herramientas.


 ctlTitle
Property.
Value Type: Character.
Default Value: None
R/W: Read/Write.
El texto a mostrar como un título de la información sobre herramientas. Opcional.


 ctlTop
Property.
Value Type: Numeric.
Default Value: 0
R/W: Read/Write.
Especifica la posición superior de la información sobre herramientas cuando se usa ctlPositionStyle = 1.


 ctlTrack(cText)
Método.

Muestra la punta en la posición del cursor del mouse.

Parámetros:

cText: igual que ctlText. Este parámetro es opcional.

Observaciones:

Este método ignora las propiedades ctlPosition y ctlAlignment, siempre muestra la información sobre herramientas debajo ya la derecha del puntero del mouse.

El cursor del mouse se considera un objeto de 16 x 16 píxeles, la punta apuntará a la esquina superior izquierda, se utilizan los valores de ctlOffsetX y ctlOffsetY.


 ctlVcxCommon
Property.
Value Type: Character.
Default Value: ctl32_common.vcx
R/W: Read/Write.
Especifica el nombre de archivo del archivo ctl32_common.vcx.

Observaciones:

La ruta del archivo ctl32_balloontip.vcx se agrega a este valor de propiedad y se usa para ubicar el archivo de clase.


 ctlVcxStructs
Property.
Value Type: Character.
Default Value: ctl32_structs.vcx
R/W: Read/Write.
Especifica el nombre de archivo del archivo ctl32_structs.vcx

Observaciones:

La ruta del archivo ctl32_balloontip.vcx se agrega a este valor de propiedad y se usa para ubicar el archivo de clase.

 ctlVersion
Property.
Value Type: Numeric.
Default Value: Version number.
R/W: Read.
Devuelve el número de versión de la clase en el formato AAAAMMDD, por ejemplo, 20060925.

 ctlVisible
Property.
Value Type: Logical.
Default Value: FALSE
R/W: Read/Write.
Especifica si la información sobre herramientas es visible.

Observaciones: Los valores válidos son .T. / .F. También puede usar 0 para FALSO y 1 o cualquier número <> 0 para VERDADERO.


Observaciones

Si desea ser coherente en el aspecto de la información sobre herramientas de Windows 98 a Vista, tenga en cuenta las siguientes pautas:

  • Solo use los iconos del sistema para la información sobre herramientas, los iconos personalizados solo funcionan en XP SP2 o posterior.
  • No utilice un botón de cierre en la información sobre herramientas (solo XP o posterior)
  • No utilice enlaces en el texto de la información sobre herramientas. (XP o posterior solamente)
  • No utilice los efectos fadeout y fadein (solo XP o posterior)

Establezca el PasswordChar del cuadro de texto en "l" y el FontName en "WingDings" para emular el aspecto de los cuadros de texto de la contraseña de XP.

También revise la muestra para encontrar una forma de manejar la barra espaciadora en un cuadro de texto de contraseña, para solucionar un error de VFP. (El espacio se muestra en el cuadro de texto en lugar de PassWordChar).



Notas sobre ctlAlignment, ctlPosition, ctlOffsetX and ctlOffsetY
Para comprender mejor a ctlAlignment, ctlPosition, ctlOffsetX y ctlOffsetY, mire las siguientes imágenes:
CtlOffsetX y ctlOffsetY se usan cuando ctlPositionStyle implica un control.

ctlOffsetX es un valor que representa una proporción del ancho del control. Su valor predeterminado es 0,75.

ctlOffsetY es un valor que representa una proporción de la Altura del control. Su valor predeterminado es 0,75.

Si, por ejemplo, establecemos ctlPosition = 8 (CON_ALIGN_BOTTOMRIGHT), ctlOffsetX = 1.00, ctlOffsetY = 1.00, la punta de la punta del balón apuntará a la esquina inferior derecha del control.

Experimente con diferentes valores de ctlOffsetX y ctlOffsetY para entender cómo funciona.

Este método de cálculo de un desplazamiento funciona mejor que un desplazamiento fijo en píxeles, la posición de la información sobre herramientas es proporcional al tamaño del control.
ctlPosition especifica el punto del control donde se colocará la punta de la información sobre herramientas, o la forma en que se colocará una punta rectangular.

En la imagen, los puntos rojos representan los posibles valores de posición ctl. Estos valores se tomaron de la propiedad VFP de alineación nativa para CommandButtons y TextBoxes.
ctlAlignment especifica la forma en que la información sobre herramientas se alineará de acuerdo con el punto especificado por ctlPosition.

En la imagen, los puntos rojos representan una cierta posición ctl, el rectángulo amarillo representa una información sobre herramientas.

Si elige 0 o 1 para un balloontip, la alineación será por defecto 7 u 8, a menos que no haya espacio en la parte inferior de la pantalla, en ese caso la alineación será 4 o 5.

Si establece ctlPositionStyle en CON_BTPOS_LEFTTOP o CON_BTPOS_MOUSE, ctlPosition se ignorará, pero no ctlAlignment.

El método ctlTrack ignora tanto ctlPosition como ctlAlignment, y siempre usa un valor de 3 (CON_ALIGN_AUTOMATIC).

Todas estas propiedades y su interacción son un poco confusas, pero el proyecto de ejemplo tiene una forma agradable que le permitirá experimentar con estas propiedades.

Aquí hay algunas imágenes con valores típicos de alineación y posición:


Los valores de ctlAlignment 0, 1, 2 para balloontips alinearán el balloontip debajo del control, pero alinearán el balloontip sobre el control si no hay suficiente espacio debajo.
El valor de ctlAlignment 3 alineará la información sobre herramientas debajo del control y hacia la derecha, pero alineará la información sobre la herramienta hacia la izquierda o sobre el control si no hay suficiente espacio en la pantalla.

Los valores de ctlAlignment 4, 5, 6 siempre alinearán la información sobre herramientas como se desee, incluso si no hay suficiente espacio en la pantalla.



Los valores de ctlAlignment 7, 8, 9 siempre alinearán la información sobre herramientas como se desee, incluso si no hay suficiente espacio en la pantalla.

Y sí, lo sé, su globo no es globo, pero me niego a hacer las imágenes de nuevo



Descarga