Abr 182022
 

Para esta ocasión un control de texto personalizable con varias opciones y diseño, también un multifunción ya que tiene distintos tipos de entrada, intenta sobre todo un aspecto al que solemos ver en html5/Bootstrap etc.

ucText1.png

El tipo de entrada lo podemos seleccionar mediante su propiedad «InputType»

[IT_Text] = 0 '// Texto normal
[IT_Numeric] = 1 '// Solo Números
[IT_Date] = 2 '// Solo Fecha
[IT_Time] = 3 '// Solo Hora
[IT_PasswordChar] = 4 '// Entrada de tipo Contraseña
[IT_MultiLine] = 5 '// Entrada de tipo Multilínea
[IT_Desimal] = 6 '// Numero decimales
[IT_LettersOnly] = 7 '// Solo letras
[IT_DropDown] = 8 '//Para que el control sea de lectura y al presionarlo llame el evento "DropDown" y pueda desplegar una lista (simulación de un ComboBox DropList style)

Luego tenemos la propiedad «RightButtonStyle» que es para elegir como queremos que se visualice la parte derecha del control, con las siguientes opciones

[RS_None] = 0 '// Ninguna el control lizo
[RS_Resizable] = 1 '// opcion utilizada en texto multilínea para expandir su tamaño
[RS_Icon] = 2 '// muestra el icono asignado
[RS_SpinButton] = 3 '// en tipos de entrada numéricos/fecha/hora poder cambiar su valor mediantes botoncitos mas/menos
[RS_ClearText] = 4 '// Una cruz a la derecha para borrar el contenido del textbox
[RS_ShowPassword] = 5 '//un icono que al presionarlo muestra la contraseña en el tipo de entrada contraseña
[RS_DropDown] = 6 '// un icono flecha abajo que al presionarlo llama el evento "DropDown" para mostrar una lista.

ucText2.png

Una descripción rápida de sus propiedades:

BackColor: Color de fondo
BackColorOnFocus: Corlo de fondo cuando el control toma el foco
BordeColor: color del borde.
BordeColorOnFocus: color de borde cuando el control toma el foco.
BordeRadius: para ajustar las esquinas redondeadas.
BordeStyle: enumeración; sin borde, borde normal, solo una línea inferior.
BordeWidth: ancho del borde.
ButtonGradient: los botones de los laterales se mostrarán con un pequeño degradado de su color hacia el blanco.
Caption: agrega una etiqueta en la parte superior izquierda (aconsejo usar fuentes escalables).
CueBanner: agrega una descripción en gris cuando el control está vacío.
EditGradient: muestra un degradado en la parte editable o donde tipeamos.
HotBorder: cuando se pasa el control sobre el control, el borde se resalta mezclando el color de borde normal y el del foco.
ImgLeftFillColor: si ImageFillStyle es igual a FS_Solid muestra el color seleccionado.
ImgLeftFillStyle: si se quiere mostrar el color ImageLeftFillColor o dejar el mismo color del backcolor.
ImgLeftShowMouseEvents, si se quiere o no mostrar una animación de botón al pasar el mouse en la parte izquierda.
ImgLeftSize: Tamaños del cuadrado de la imagen seleccionada (la imagen se selecciona mediante click derecho – Propiedades).
ImgRightFillColor: (Lo mismo que ImgLeftFillColor pero a la derecha).
ImgRightFillStyle: (Lo mismo que ImgLeftFillStyle pero a la derecha).
ImgRightShowMouseEvents: (Lo mismo que ImgLeftShowMouseEvents pero a la derecha).
ImgRightSize: (Lo mismo que ImgLeftSize pero a la derecha).
InputType: tipo de entrada (las detalle mas arriba).
MaxValue: para establecer un valor máximo en los tipos de entrada Número/Fecha/Hora (no aplica en tipo decimal).
MinValue: para establecer un valor mínimo en lo los tipo de entrada Número/Fecha/Hora (no aplica en tipo decimal).
OnFocusBigBorder: un borde grueso que se muestra al tomar el foco (no quise usar el shadow clásico).
OnFocusSellAll: se auto selecciona el contenido al tomar foco el control.
OnKeyReturnTabulate: si se presiona Enter tabula hacia el próximo control.
ParentBackColor: es el color del fondo del contendedor, este se asigna automáticamente al agregar el control al formulario pero en caso que éste cambie hay que cambiarlo en el control, es para que en las esquinas redondeadas no se vea ese color.
RightButtonStyle: es la apariencia del botón derecho (las detallé más arriba).
ShortDateFormat: formato de fecha corto, si esta propiedad esta vacía, toma el formato del sistema (recomiendo DD/MM/YYYY).
TextConvert: convierte el texto en; Normal, Minúscula, Mayúscula



Para elegir las imágenes click derecho sobre el control y dentro del menú seleccionar «Propiedades», o bien dentro de la ventana de propiedades en la propiedad, «Personalizado», también dentro de esa página de propiedades se puede poner el texto multilínea y/o texto Unicode.


Funciones:

ShowBalloonTip: muestra un globo de texto sobre el control (requiere manifest).
HideBalloonTip: oculta del globo de texto.
ScrollToBottom: scrolea hacia la última línea de texto (en tipo de entrada multilínea).
SetMinSize: asigna un tamaño mínimo del control, puede ajustarse por el usuario cuando este es RightButtonStyle = RS_Resizable.
SetMaxSize: asigna un tamaño máximo del control, puede ajustarse por el usuario cuando este es RightButtonStyle = RS_Resizable.

Si bien el control lo testee varias veces es muy probable que tenga algunos bugs, sobre todo en la parte de formatos de fecha.

Vale aclarar que algunas funciones y propiedades fueron tomadas del control TextBox de Krool y modificadas a necesidad.

El ucText.ctl debe acompañarse con el mIOleInPlaceActivate.bas y PropertyPage1.pag (este ultimo solo si se quiere usar imágenes en modo de diseño), los demás son opcionales según su uso.

Cualquier error reportarlo aquí en los comentarios.

Abr 092022
 

Esta es una aplicación que me había pedido un compañero quien gusta subir contendió a YouTube y hace uso de algunas herramientas para sumar visitas a su canal, estas herramientas utilizan Proxy para trabajar. Algunos proxy son pagos y otros free que se pueden encontrar en la web en grandes listas, solo que estos los muestran como activos, ya que lo testean mediante un ping, lo que sucede es que cuando se hace un httprequest la mayoría de éstos no funcionan y aquí es donde entra esta aplicación que se encarga de testear todos los proxy haciendo una petición http a algún sitio de internet. Ese resultado puede filtrarse y guardarse como una lista un poco más segura, y digo «un poco» ya que no es 100% confiable que estos proxy funcionen, y esto se debe a que son saturados. Así que supongo que si se quiere ir más seguro es mejor comprar los de pagos.

En cuanto a lo técnico, hay dos proyectos (dos ejecutables), uno es el principal para la interface y el otros es de tipo consola que se encarga de hacer la petición http, esto lo trabajé así para simular hilos. Dentro de la carpeta encontrarán un archivo llamado proxy.txt para probar, o pueden descargar mas de este sitio.

ProxyTester.png
Abr 062022
 

Se trata de un módulo clase para aplicar un corrector ortográfico a un TextBox o RichTextBox, esto lo hace mediante la interfaz SpellCheckerFactorys, ésta está disponible a partir de Windows 8 y posteriores.

Si bien con algunos controles como el InkEdit y los RichTextbox (Richedit50W), con sólo un par de líneas de códigos estos ya pueden aplicar el corrector ortográfico, pero en el caso de los TextBox (Edit) hay que hacer todo un trabajo como el que se realizó en el módulo clase para que funcione de la misma forma. Vale aclarar que en el caso de los RichTextBox cuando tiene formato, puede que el comportamiento no sea el deseado, ya que las líneas rojas de error pueden desfasarse un poco si la fuente cambia.

Como pueden ver en la imagen, en el menú contextual aplica las opciones de corrección y otras funcionalidades como: omitir, eliminar palabras, añadir al diccionario y auto corrección, este último es para cambiar la palabra automáticamente por otra a media que es detectada.

No requiere ninguna dependencia, sólo Windows 8 y posteriores.

spellcheck.png