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.
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.
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.
Scrolling scrollbar will appear ghosting
If you are referring to the scrollbar of the textbox, it is possible to replace it with the ucScrollbar and have it look like Google’s, you can also make it appear when you enter the mouse and hide when you remove the mouse from the control, is that your question? If so, I can upload an example.
https://www.youtube.com/watch?v=_smnOKDn9nk
Estimado al salir del foco, las flechas del scroll siguen mostrandose, en cambio en tu video las flechas desaparecen totalmente, hay que activar alguna opción en partcular??
saludos y gracias 😀
https://drive.google.com/file/d/1rdQeqF2Z_KScEyG0lJhSwksZZp-vZ4c2/view?usp=sharing
Hola internamente utiliza un edit que es lo mismo que usan los clásicos de vb los edit son clases del sistema, ahora el echo que te haga eso podria ser algo del sistema operativo, yo en mi caso use windows 10, no se si el 11 oculta los scroll al perder el foco, puede ser ese el problema?
I mean fast scrolling scrollbar. The drawn text is ghosted.
When I changed a computer, it worked fine again
Gaining focus shows the scrollbar, losing focus hides the scrollbar, which is a good idea.
thanks.
HAI..LEANDRO MOHON BUAT PROJECT REPORT PDF
HAI LEANDRO SAYA SELALU MENGIKUTI PROJECT BARU ANDA…SAYA DARI INDONESIA…SAYA SEKARANG LAGI BUAT PROJECT YANG REPORT NYA PDF DENGAN VB6 TETAPI SAYA TIDAK MENEMUKAN DI INTERNET SOURCODE YANG BAGUS…SAYA MOHON BANTUAN NYA DAPAT DI BUATKAN CONTOH NYA..TERIMA KASIH LEANDRO
https://www.vbforums.com/showthread.php?782689-VB6-Render-PDF-Files-directly-(and-generate-a-Preview-from-the-same-DrawingRoutine)
or
http://www.a1vbcode.com/app.asp?ID=2548
Hai Leandro…terima kasih atas respont dan arahan link nya…saya sudah mencoba kedua project : https://www.vbforums.com/showthread.php?782689-VB6-Render-PDF-Files-directly-(and-generate-a-Preview-from-the-same-DrawingRoutine) and http://www.a1vbcode.com/app.asp?ID=2548 akan tetapi project tidak sebagus yang anda buat…saya mohon dan meminta bantuan anda untuk membuat project report PDF dan Export Listview to PDF..
I’m sorry I can’t help you, right now I’m focused on other things, use the forum for this type of question.
Excelente control Lea, muchas gracias por el y por todos los demás controles que vienes publicando
Excelente control but not realy textbox unicode.
Same problem like LabelPlus…
I cannot type unicode text direct in ucText (switch language-keyboard layout to ROU and type unicode – not work) but when i copy unicode text in clipboard and then paste work very well….
OS: Windows 10 Pro Version 21H2 – x64, language 1: english, keyboard: english(US keyboard), language 2: romanian, romanian(standard keyboard).
…and a small video …
https://www25.zippyshare.com/v/WmhCsd2c/file.html
using on screen keyboard
https://www110.zippyshare.com/v/TTbZyOAX/file.html
Hello Cliv, thanks for reporting, it has already been solved, I have copied a Krool control routine, he has more years of experience working on his project.
Download it again.
Thanks, It works perfectly.
By the way, I read on vbforums.com that someone can’t access the site http://leandroascierto.com.
I have the same problem, I can only access it using TOR…but very, very slow
Maybe it’s a DNS problem here in Europe…google find you but cant access site using Chrome,Firefox…
…Can you modify LabelPlus (same problem, putting a unicode text at design time in IDE using properties page not work)
Thank you again
…error when compare date ShortDateFormat=dd.mm.yyyy
see picture:
https://www21.zippyshare.com/v/PIeYiprk/file.html
Error in frmCalendar
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
...
If m_Index = -2 Or m_Index = -3 Then 'Flecha abajo
'xDate = DateAdd(IIF(Mode = 0, "m", "yyyy"), IIF(Mode = 3, 10, 1) * IIF(m_Index = 3, -1, 1), xDate) 'WRONG
xDate = DateAdd(IIF(Mode = 0, "m", "yyyy"), IIF(Mode = 3, 10, 1) * IIF(m_Index = -3, -1, 1), xDate) 'CORRECT
...
Hi Cliv, as I understand your date separator is the point, in our case it is the «/»or in some cases «-» but if I use the «.» I have an error, and I really don’t know how to solve it
this is a error 13 in my case
PrivateSubForm_Load()
MsgBox CDate(«12.06.2022»)
End Sub
I assume that with your local configuration this is not an error, is it?
Creo que el problema al que se referia es que al pulsar flecha abajo al no tener m_index=-3 el calendario avanzaba hacia adelante y no hacia a tras.
Por cierto, magnifico control, como todos.
Hola Leandro! Me parece magnifica tu aportación una vez más. El control funciona a las mil maravillas pero el .pag nos da problemas al intentar cargarlo en una aplicación ya existente.
Haz hjacer clic en propiedades en un uctext cualquiera nos reporta que no encuentra los metodos del control, por ejmplo .setminsize .setmaxsize etc…
El control en si funciona correctamente cuando cargamos además del .ctl el .ctx pero no podemos agregar imágenes.
Si iniciamos un proyecto nuevo el .pag funciona correctamente.
si tienes tiempo y pudieras orientarnos te lo agradeceríamos. Tus aportes dan un valor enorme a Vb6
¿Quién quiere Python? Jajaj
Hola Carlos, no entiendo cual es el problema, por las dudas descarga el control nuevamente, quizás sea alguna versión mas vieja que la actual. pero bueno si vas a iniciar un nuevo proyecto o vas a agregar el control a un proyecto existente debes agregar estos tres archivos en este orden, primero el ucText.ctl y el mIOleInPlaceActivate.bas por ultimo el PropPagUcText.pag ya con eso no debería haber ningún problema.
Me avisas si tienes problemas.
Gracias por la ayuda. No hay forma.
Copio los tres ficheros que comentas y los pego en la carpeta de nuestor protecto.
Añado .ctl correctamente.
Añado .bas correctamente.
Añado .pag y da errores de carga concretamente esto:
Línea 101: la clase Proyecto1.ucText del control ucText1 no era una clase de control cargada.
Línea 126: la clase Proyecto1.ucText del control TxtCaption no era una clase de control cargada.
Línea 151: la clase Proyecto1.ucText del control TxtCuebanner no era una clase de control cargada.
Línea 107: el nombre de la propiedad _ExtentX de ucText1 no es válido.
Línea 108: el nombre de la propiedad _ExtentY de ucText1 no es válido.
Línea 119: el nombre de la propiedad ImgLeft de ucText1 no es válido.
Línea 120: el nombre de la propiedad ImgRight de ucText1 no es válido.
Línea 121: el nombre de la propiedad ImgLeftSize de ucText1 no es válido.
Línea 122: el nombre de la propiedad ImgRightSize de ucText1 no es válido.
Línea 123: el nombre de la propiedad RightButtonStyle de ucText1 no es válido.
Línea 124: el nombre de la propiedad Caption de ucText1 no es válido.
Línea 132: el nombre de la propiedad _ExtentX de TxtCaption no es válido.
Línea 133: el nombre de la propiedad _ExtentY de TxtCaption no es válido.
Línea 144: el nombre de la propiedad ImgLeft de TxtCaption no es válido.
Línea 145: el nombre de la propiedad ImgRight de TxtCaption no es válido.
Línea 146: el nombre de la propiedad ImgLeftSize de TxtCaption no es válido.
Línea 147: el nombre de la propiedad ImgRightSize de TxtCaption no es válido.
Línea 148: el nombre de la propiedad RightButtonStyle de TxtCaption no es válido.
Línea 149: el nombre de la propiedad Caption de TxtCaption no es válido.
Línea 157: el nombre de la propiedad _ExtentX de TxtCuebanner no es válido.
Línea 158: el nombre de la propiedad _ExtentY de TxtCuebanner no es válido.
Línea 169: el nombre de la propiedad ImgLeft de TxtCuebanner no es válido.
Línea 170: el nombre de la propiedad ImgRight de TxtCuebanner no es válido.
Línea 171: el nombre de la propiedad ImgLeftSize de TxtCuebanner no es válido.
Línea 172: el nombre de la propiedad ImgRightSize de TxtCuebanner no es válido.
Línea 173: el nombre de la propiedad RightButtonStyle de TxtCuebanner no es válido.
Línea 174: el nombre de la propiedad Caption de TxtCuebanner no es válido.
Nuestro proyecto NO se llama proyecto1
Y al hacer clic en uctext.ctl se genera el siguiente log
Línea 23: la propiedad PropertyPages de ucText tenía una referencia a archivo no válida.
Línea 27: la propiedad ToolboxBitmap de ucText tenía una referencia a archivo no válida.
Me parece que debe ser algún problema de rutas o ubicaciones.
Por cierto tenemos la ultima version del control. 429 Kb.
Hola Carlos ya veo cual es el error, algo que se me pasó mencionar, y también me pasa en otros proyectos, generalmente cuando hago estos usercontrol lo hago bajo el nombre de Proyecto1 al tener otro nombre el proyecto se pierde la referencia, solucion: tenes que abrir el archivo del .pag con el block de notas (Notepad) y remplazar la palabra «Proyecto1» por el nombre de de tu proyecto, quizás tu vb6 está en Inglés y el nombre del proyecto por defecto nuevo sea Project1, pero bueno sea cual sea el nombre remplazado por ese, una vez que guardes los cambios lo agregas al proyecto.
Después contame si con eso está solucionado.
Perfecto, ha sido la solución, gracias. Ahora funciona perfecto.
Buenísimo entonces.
de verdad buscoi en el archivo .pag y no consigo la referencia a priyecto1, podrias decirme exactamente que archivo debo modificar? y muchas gracias.
Leando muy buen aporte, gracias por compartir.
La consulta es como lo genero como OCX, no se puede hacer asi.
Gracias.
Hi, after using the method «SetFocus» , it will fail shift current textbox to another one,Can you please adivse how to fix it ? thks
when rightbutton exist, above problem will be appear.
Hello, I can not reproduce your error, try to download it again in case you have an older version, and if the error persists, show me how you have your code.
Hola Leandro. Primero del todo: Enhorabuena por este gran trabajo!!!!
He visto un error en el dropdown (list), cuando usas 2 monitores y el formulario esté en la pantalla de la derecha. El dropdown se queda en la pantalla de la izquierda, y no debajo pegado al control. Con el dropdown del calendario no pasa. Sólo con el dropdown normal.
Gracias!!!
Hola Marcel, me había informado de este problema pero no tuve forma de testearlo porque no tengo dos monitores, creo que ya tendría la solución, pero no se como probarlo, si puede escribirme a mi correo te agradecería para hacer algunas pruebas. leandroascierto @ hotmail.com (todo junto, quita los espacios)
Buenso días Leando.
Gracias por tu contestación. Estaré encantado haciendo las pruebas. Te escribo a tu email.
Gracias de nuevo
Buenas tardes Leandro:
Gracias por todos tus aporte.
Solo un apunte, el ucText en modo númeric y desimal no admite números negativos ,por lo que tenemos que ponerlo en modo Text teniendo que programar aparte el control para que solo admita números y también los negativos.
¿Hay alguna propiedad que se nos pase o esos modos son así?
disculpa me contesto yo mismo. uctext como numeric y minvalue<0 y la propiedad rightbuttonstyle en spinbutton.
Gracias de todas formas
Gracias Carlos perdón por no responder antes, entonces ya esta solucionado?
Si, todo correcto en ese sentido pero ya que nos brindas esta magnífica herramienta perdona que te haga una pregunta.
Usamos ucText (Dropdown) + ucList para crear combos muy elegantes y útiles como bien indicas en tu herramienta, pero normalmente al cargar un ucList por ejemplo de clientes , guardamos además del nombre del cliente el código del mismo de la tabla Mysql de la que proviene.
Ej: antonio perez gomez 23
siendo 23 el código del cliente con el que después operamos para hacer varias cosas.
Ahora mismo hacemos un .recordset(«nombre_cliente») & space(100) & recodset («cod_cliente») y lo metemos en el .Additem del ucList y lo extraemos con un len(right(text1.text,5)) pero lo veo poco elegante.
¿Hay alguna propiedad del ucList donde pueda guardar el código y después recuperarlo del ucText asociado?
Espero haberme explicado bien
Muchas gracias de antemano.
hola prueba con la propiedad ItemData del ucList
por ejemplo
c_cuentas_efectivo.Clear
p_Criteria = «SELECT * FROM bancos ORDER BY ba_banco»
p_rs.Open p_Criteria, cn, adOpenForwardOnly
Do Until p_rs.EOF
‘ No vacío
c_cuentas_efectivo.AddItem Format(p_rs!ba_codigo, «0000») & » – » & p_rs!ba_banco & » – Nº Cuenta: » & p_rs!ba_cuenta
c_cuentas_efectivo.ItemData(c_cuentas_efectivo.ListCount – 1) = p_rs!ba_codigo
p_rs.MoveNext
Loop
‘ cierra tabla
p_rs.Close
t_cuentas_efectivo.ListPlus = c_cuentas_efectivo
y recuperas el codigo con
c_cuentas_efectivo.ItemData(c_cuentas_efectivo.ListIndex))
Genial Leandro, no conocía la propiedad, ya estamos aplicándola al resto del proyecto funciona Genial.
Muchas gracias.
hola leandro, yo se de vb6 pero basico, mr podrias decir como usar este uctext?
Gracias por el control y me encanta esta pagina por los controles y por la ayuda de la gente.
Hello Leandro.
Thank you very much for this very useful user control.
How can we use different font and font size for Caption, Cue Banner and Text properties?
Especially the Caption’s font size. They are too small I think. How do I resize it?
Thank you again.
Hola Leandro, e cuanto al ucText que archivo es que debo modificar para cambiar la referencia de proyecto1 por el mio? busque en el propertypage en el archivo .pag y no consigo ningun llamado a proyecto1. auxilio por favor.
Hola Jose, abre con el block de nota el archivo PropPagUcText.pag remplaza las tres veces que encuentres la palabra Proyecto1 por el nombre de tu proyecto, guardas y luego a tu proyecto, primero agregas el ucText.ctl el mIOleInPlaceActivate.bas y luego el PropPagUcText.pag, eso seria todo
how to use the text as a combobox?? a list
Buenas Tardes. Una consulta cada vez que agrego un ucText al proyecto (el mismo q adjuntaste) , ejecuto, se visualiza normal pero al cerrar el sistema o deternerlo se cierra el proyecto o se queda pegado. Habrá algun detalle a tener en cuenta ahi?.
Mucha gracias de antemano
Hola lo recomendable es no darle al Stop de vb6, en realidad si no hay error de por medio no debería colgar el ide, pero cuando esta corriendo hay un error y le das stop pueden pasar estas cosas, esto como ocx no pasa, es acostumbrarte a trabajar con esto usercontrols que utilizan subclass.
Muy buen aporte, el problema que he tenido es con el utextcontrol de password desde el ide salen los círculos que ocultan la contraseña, pero al compilar y ejecutar el exe en lugar de circulas salen uno palitos ||||| asi
Leandro tengo algunas dudas sobre el control tendras algun mail o whatsapp para contartarte ?
Hola Leandro, estoy teniendo problemas con el control uCtext Control, me cambia el tipo de letra Segoe UI (he probado otros) y me cambia por una especie de SanSerift en seminegrita. por lo demás magnifico, nuevamente gracias por compartir tu tiempo y conocimientos
Uso windows 10 Pro
Buenas!
Recién descubro esta página… consulta esto funciona en vb.net?
Hola Leandro, gracias por compartir tu gran trabajo, he tenido algunos problemas para cambiar el tamaño de la fuente del ucText en tiempo de ejecución, intento modificarlo y no ocurre nada:
ucText1.Font.Size = 12
Tampoco se puede asignar texto en negrita o cursiva con
ucText1.Font.Bold = True
ucText1.Font.Italic = True
Agradeceria tu ayuda.
Saludos
Hola Eric, si por vago no puse eventos de fuente, pero no es dificil de solucionar, solo tienes que asignar nuevamente la fuente
ucText2.Font.Size = 12
ucText2.Font.Bold = True
Set ucText2.Font = ucText2.Font
Olá, Leandro
Não consigo utilizar as propriedades da ferramenta ucText, não aparece a opção para mim.
Com isso, não consigo compilar o projeto.
err: Method or data member not found
PropPagUcText
CmdDelete_Click
Hola Ricardo, el control esta ok, creo que el problema es que tu estas llevando el control a otro proyecto y estas agregando en orden equivoco a los controles, primero debes agregar al usercontrol (ucText) y luego debes agregar la pagina de propiedades (PropPagUcText) luego puedes tengas que poner en la propiedad del usercontrol «Prortypages» y selecionar «PropPagUcText»
Saludos.
Fiz o passo a passo. Mas continuava com erros na compilação.
Resolvi da seguinte maneira.
Adicionei tudo, conforme você orientou, referenciei a propriedade no ucText.
O erro continuava.
Descobri que precisa entrar no PropPagUcText e substituir os textboxs pelo ucTexts e deixá-los com os mesmos nomes.
Tudo resolvido, muito obrigado pela atenção, mais uma vez, parabéns pelo excelentíssimo trabalho.
Hola Leandro, estoy enfrentando un problema extraño, cuando incluyo ucText en un formulario y llamo a este formulario, los campos aparecen vacíos como si no estuvieran cargados, y cuando se hace clic en el componente aparece cargado, he intentado agregar .refresh y sigue así cuando cargas el formulario aparece vacío ¿que puede ser?
hola Jonas, es raro lo que me dices, no me ha pasado nunca, será que quizás estés perdiendo la configuración del control porque no se guardan los datos? yo cuando hago un cambio en un usercontrol le doy play para que se guarden los cambios, luego si quieres guardas el proyecto, pero con darle play te aseguras que se escriba los datos correctamente en el proyecto.
Estimado, es posible alinear verticalmente el contenido del control??
Gracias por tu trabajo
Hola Juan creo que no entiendo tu pregunta, pero las posibilidades de alineación son las mismas que la del clásico textbox, excepto que en este caso cuando es linea simple queda centrado verticalmente y no en la parte superior.
Saludos.