{"id":1146,"date":"2022-04-18T23:18:19","date_gmt":"2022-04-19T02:18:19","guid":{"rendered":"http:\/\/leandroascierto.com\/blog\/?p=1146"},"modified":"2023-10-26T20:06:05","modified_gmt":"2023-10-26T23:06:05","slug":"uctext-custom-texbox-unicode","status":"publish","type":"post","link":"https:\/\/leandroascierto.com\/blog\/uctext-custom-texbox-unicode\/","title":{"rendered":"ucText (custom TexBox Unicode)"},"content":{"rendered":"\n<p>Para esta ocasi\u00f3n un control de texto personalizable con varias opciones y dise\u00f1o, tambi\u00e9n un multifunci\u00f3n ya que tiene distintos tipos de entrada, intenta sobre todo un aspecto al que solemos ver en html5\/Bootstrap etc.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/imagenes\/ucText1.png\" alt=\"ucText1.png\"><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>El tipo de entrada lo podemos seleccionar mediante su propiedad \u00abInputType\u00bb<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;IT_Text] = 0 &#039;\/\/ Texto normal\n&#x5B;IT_Numeric] = 1 &#039;\/\/ Solo N\u00fameros\n&#x5B;IT_Date] = 2 &#039;\/\/ Solo Fecha\n&#x5B;IT_Time] = 3 &#039;\/\/ Solo Hora\n&#x5B;IT_PasswordChar] = 4 &#039;\/\/ Entrada de tipo Contrase\u00f1a\n&#x5B;IT_MultiLine] = 5 &#039;\/\/ Entrada de tipo Multil\u00ednea\n&#x5B;IT_Desimal] = 6 &#039;\/\/ Numero decimales\n&#x5B;IT_LettersOnly] = 7 &#039;\/\/ Solo letras\n&#x5B;IT_DropDown] = 8 &#039;\/\/Para que el control sea de lectura y al presionarlo llame el evento &quot;DropDown&quot; y pueda desplegar una lista (simulaci\u00f3n de un ComboBox DropList style)\n<\/pre><\/div>\n\n\n<p>Luego tenemos la propiedad \u00abRightButtonStyle\u00bb que es para elegir como queremos que se visualice la parte derecha del control, con las siguientes opciones<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&#x5B;RS_None] = 0 &#039;\/\/ Ninguna el control lizo\n&#x5B;RS_Resizable] = 1 &#039;\/\/ opcion utilizada en texto multil\u00ednea para expandir su tama\u00f1o\n&#x5B;RS_Icon] = 2 &#039;\/\/ muestra el icono asignado\n&#x5B;RS_SpinButton] = 3 &#039;\/\/ en tipos de entrada num\u00e9ricos\/fecha\/hora poder cambiar su valor mediantes botoncitos mas\/menos\n&#x5B;RS_ClearText] = 4 &#039;\/\/ Una cruz a la derecha para borrar el contenido del textbox\n&#x5B;RS_ShowPassword] = 5 &#039;\/\/un icono que al presionarlo muestra la contrase\u00f1a en el tipo de entrada contrase\u00f1a\n&#x5B;RS_DropDown] = 6 &#039;\/\/ un icono flecha abajo que al presionarlo llama el evento &quot;DropDown&quot; para mostrar una lista.\n\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/imagenes\/ucText2.png\" alt=\"ucText2.png\"><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p>Una descripci\u00f3n r\u00e1pida de sus propiedades:<\/p>\n\n\n\n<p><strong>BackColor<\/strong>: Color de fondo<br><strong>BackColorOnFocus<\/strong>: Corlo de fondo cuando el control toma el foco<br><strong>BordeColor<\/strong>: color del borde.<br><strong>BordeColorOnFocus<\/strong>: color de borde cuando el control toma el foco.<br><strong>BordeRadius<\/strong>: para ajustar las esquinas redondeadas.<br><strong>BordeStyle<\/strong>: enumeraci\u00f3n; sin borde, borde normal, solo una l\u00ednea inferior.<br><strong>BordeWidth<\/strong>: ancho del borde.<br><strong>ButtonGradient<\/strong>: los botones de los laterales se mostrar\u00e1n con un peque\u00f1o degradado de su color hacia el blanco.<br><strong>Caption<\/strong>: agrega una etiqueta en la parte superior izquierda (aconsejo usar fuentes escalables).<br><strong>CueBanner<\/strong>: agrega una descripci\u00f3n en gris cuando el control est\u00e1 vac\u00edo.<br><strong>EditGradient<\/strong>: muestra un degradado en la parte editable o donde tipeamos.<br><strong>HotBorder<\/strong>: cuando se pasa el control sobre el control, el borde se resalta mezclando el color de borde normal y el del foco.<br><strong>ImgLeftFillColor<\/strong>: si ImageFillStyle es igual a FS_Solid muestra el color seleccionado.<br><strong>ImgLeftFillStyle<\/strong>: si se quiere mostrar el color ImageLeftFillColor o dejar el mismo color del backcolor.<br><strong>ImgLeftShowMouseEvents<\/strong>, si se quiere o no mostrar una animaci\u00f3n de bot\u00f3n al pasar el mouse en la parte izquierda.<br><strong>ImgLeftSize<\/strong>: Tama\u00f1os del cuadrado de la imagen seleccionada (la imagen se selecciona mediante click derecho &#8211; <strong>Propiedades<\/strong>).<br><strong>ImgRightFillColor<\/strong>: (Lo mismo que ImgLeftFillColor pero a la derecha).<br><strong>ImgRightFillStyle<\/strong>: (Lo mismo que ImgLeftFillStyle pero a la derecha).<br><strong>ImgRightShowMouseEvents<\/strong>: (Lo mismo que ImgLeftShowMouseEvents pero a la derecha).<br><strong>ImgRightSize<\/strong>: (Lo mismo que ImgLeftSize pero a la derecha).<br><strong>InputType<\/strong>: tipo de entrada (las detalle mas arriba).<br><strong>MaxValue<\/strong>: para establecer un valor m\u00e1ximo en los tipos de entrada N\u00famero\/Fecha\/Hora (no aplica en tipo decimal).<br><strong>MinValue<\/strong>:  para establecer un valor m\u00ednimo en lo los tipo de entrada N\u00famero\/Fecha\/Hora   (no aplica en  tipo  decimal).<br><strong>OnFocusBigBorder<\/strong>: un borde grueso que se muestra al tomar el foco (no quise usar el shadow cl\u00e1sico).<br><strong>OnFocusSellAll<\/strong>: se auto selecciona el contenido al tomar foco el control.<br><strong>OnKeyReturnTabulate<\/strong>: si se presiona Enter tabula hacia el pr\u00f3ximo control.<br><strong>ParentBackColor<\/strong>: es el color del fondo del contendedor, este se asigna autom\u00e1ticamente al agregar el control al formulario pero en caso que \u00e9ste cambie hay que cambiarlo en el control, es para que en las esquinas redondeadas no se vea ese color.<br><strong>RightButtonStyle<\/strong>: es la apariencia del bot\u00f3n derecho (las detall\u00e9 m\u00e1s arriba).<br><strong>ShortDateFormat<\/strong>: formato de fecha corto, si esta propiedad esta vac\u00eda, toma el formato del sistema (recomiendo DD\/MM\/YYYY).<br><strong>TextConvert<\/strong>: convierte el texto en; Normal, Min\u00fascula, May\u00fascula<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p><br>Para elegir las im\u00e1genes click derecho sobre el control y dentro del men\u00fa seleccionar \u00abPropiedades\u00bb,  o bien dentro de la ventana de propiedades en la propiedad, \u00abPersonalizado\u00bb,  tambi\u00e9n dentro de esa p\u00e1gina de propiedades se puede poner el texto multil\u00ednea y\/o texto Unicode.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<p><strong>Funciones:<\/strong><\/p>\n\n\n\n<p><strong>ShowBalloonTip<\/strong>: muestra un globo de texto sobre el control (requiere manifest).<br><strong>HideBalloonTip<\/strong>: oculta del globo de texto.<br><strong>ScrollToBottom<\/strong>: scrolea hacia la \u00faltima l\u00ednea de texto (en tipo de entrada multil\u00ednea).<br><strong>SetMinSize<\/strong>:  asigna un tama\u00f1o m\u00ednimo del control, puede ajustarse por el usuario cuando este es RightButtonStyle = RS_Resizable.<br><strong>SetMaxSize<\/strong>:  asigna un tama\u00f1o m\u00e1ximo del control, puede ajustarse por el usuario cuando este es RightButtonStyle = RS_Resizable.<\/p>\n\n\n\n<p>Si bien el control lo testee varias veces es muy probable que tenga algunos bugs, sobre todo en la parte de formatos de fecha. <\/p>\n\n\n\n<p>Vale aclarar que algunas funciones y propiedades fueron tomadas del control <a href=\"https:\/\/www.vbforums.com\/showthread.php?698563-CommonControls-(Replacement-of-the-MS-common-controls)\">TextBox de Krool<\/a> y modificadas a necesidad.<\/p>\n\n\n\n<p>El ucText.ctl debe acompa\u00f1arse con el mIOleInPlaceActivate.bas y PropertyPage1.pag (este ultimo solo si se quiere usar im\u00e1genes en modo de dise\u00f1o), los dem\u00e1s son opcionales seg\u00fan su uso.<\/p>\n\n\n\n<p>Cualquier error reportarlo aqu\u00ed en los comentarios.<\/p>\n\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\">\n<a href=\"https:\/\/leandroascierto.com\/blog\/descarga.php?url=ucText.zip\"><img decoding=\"async\" src=\"https:\/\/leandroascierto.com\/blog\/descarga.php?file=ucText.zip\" alt=\"\"><\/a>\n<\/figure>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para esta ocasi\u00f3n un control de texto personalizable con varias opciones y dise\u00f1o, tambi\u00e9n un multifunci\u00f3n 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 \u00abInputType\u00bb Luego tenemos la propiedad \u00abRightButtonStyle\u00bb que es para elegir <a href='https:\/\/leandroascierto.com\/blog\/uctext-custom-texbox-unicode\/' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,116],"tags":[203,202,66,204,167],"class_list":["post-1146","post","type-post","status-publish","format-standard","hentry","category-controles-de-usuarios","category-ocx","tag-custom","tag-text","tag-textbox","tag-unicode","tag-usercontrol","category-26-id","category-116-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/1146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/comments?post=1146"}],"version-history":[{"count":10,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/1146\/revisions"}],"predecessor-version":[{"id":1303,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/1146\/revisions\/1303"}],"wp:attachment":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/media?parent=1146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/categories?post=1146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/tags?post=1146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}