Caracteres Especiales en TextBox [Ayuda]

Iniciado por Psyke1, 28 Julio 2010, 17:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

¿Como hago para poder leer caracteres especiales en un TextBox?
Necesito agregar algo asi por ejemplo:
Citarनमस्ते, आपका नाम क्या है

Muchas gracias :D

DoEvents¡! :P

Karcrack

Prueba con RitchTextBox :-\

rtcDoEvents@MSVBVM60! :P

Psyke1

No funciona  :(
Me pasa igual... ademas la cosa es que no queria depender de OCX... :silbar:
Vi por ahi un modulo de Cobein, que hace algo similar, pero no encuentro un RichtTextBox.cls... :-(

PD: ¿De que vas copiandome el saludo?  >:( :laugh:

DoEvents¡! :P

Karcrack

Cita de: *PsYkE1* en 28 Julio 2010, 17:49 PM
No funciona  :(
Me pasa igual... ademas la cosa es que no queria depender de OCX... :silbar:
Vi por ahi un modulo de Cobein, que hace algo similar, pero no encuentro un RichtTextBox.cls... :-(
He estado leyendo, prueba a cambiar la Font del TextBox...

No te copio, solo me burlo >:D :laugh: :laugh: :laugh:

Psyke1

Ya lo probe, y tampoco me funciona... :-(
Segun me dice xkiz:
Citartenes que convetir el texto a UTF-8
Alguna idea de como hacer esto?¿  :silbar:

Sleep¡! :-*

seba123neo

es por los unicode...

CitarVisual Basic se basa internamente en el estándar Unicode de doble byte. Sin embargo, fuera del mundo de Visual Basic, se sigue utilizando el modelo ANSI de un bit. Por esta razón, Visual Basic proporciona dos conjuntos de controles de formularios y utiliza los conjuntos ANSI como control predeterminado. Cualquier cadena que se pase al conjunto ANSI de controles de formularios se convierte de su representación Unicode interna a su representación ANSI y las cadenas UNICODE no se mostrarán correctamente. Para poder mostrar la cadena UNICODE en un formulario de Visual Basic, deben utilizarse los controles UNICODE (Forms 2.0). En el ejemplo siguiente se ilustra cómo utilizar los controles de Forms 2.0 para mostrar cadenas UNICODE obtenidas de un archivo de texto Unicode. Puesto que se necesita el paquete de compatibilidad de idioma UNICODE, actualmente este sistema sólo se aplica a Windows NT.

si buscas en internet unicode + visual basic , vas a encontrar toneladas de paginas que hablan del tema, miles de ejemplos hay, controles personalizados, etc...

fijate que en windows hay fuentes que tienen charset de diferentes idiomas, cuando seleccionas la fuente fijate hay un combo abajo de todo que podes cambiar el idioma de la fuente, con eso y poniendo los codigos de los caracteres correctos, te los va a mostrar bien.busca en internet las tablas de los caracteres para los paises, ahi te dcie el codigo que tiene cada letra china, rusa, arabe lo que sea...para despues hacerle el ChrW()...aca te paso un ejemplo...no es el mejor, pero para que veas como es te sirve seguro. pone un control Richtextbox1 en el form y este codigo.

Código (vb) [Seleccionar]
Option Explicit

Private Const CP_UNICODE = 1200
Private Const WM_USER = &H400&
Private Const EM_SETTEXTEX = WM_USER + 97

Private Declare Function SendMessageWLng Lib "user32" Alias "SendMessageW" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
   
Private Enum RTBW_FLAGS
    RTBW_DEFAULT = 0
    RTBW_KEEPUNDO = 1
    RTBW_SELECTION = 2
End Enum

Private Type SETTEXTEX
    flags As RTBW_FLAGS
    codepage As Long
End Type

Private Sub Form_Load()

    Dim vIngles As String
   
    vIngles = ChrW(&H57) & ChrW(&H65) & ChrW(&H6C) & ChrW(&H63) & ChrW(&H6F) & ChrW(&H6D) & ChrW(&H65) & _
              ChrW(&H20) & ChrW(&H74) & ChrW(&H6F) & ChrW(&H20) & _
              "Unicode" & ChrW(&H21)
             
    Dim vAleman As String
   
    vAleman = ChrW(&H42) & ChrW(&H69) & ChrW(&H65) & _
              ChrW(&H6E) & ChrW(&H76) & ChrW(&H65) & ChrW(&H6E) & _
              ChrW(&H75) & ChrW(&H65) & ChrW(&H20) & ChrW(&H61) & _
              ChrW(&H75) & ChrW(&H20) & "Unicode" & ChrW(&H21)

    Dim vJapones As String
   
    vJapones = "Unicode " & ChrW(&H3078) & _
            ChrW(&H3087) & ChrW(&H3045) & ChrW(&H3053) & _
            ChrW(&H305D) & ChrW(&H21)
           
    Dim vPortugues As String
   
    vPortugues = ChrW(&H53) & ChrW(&HE9) & ChrW(&H6A) & _
            ChrW(&H61) & ChrW(&H20) & ChrW(&H42) & _
            ChrW(&H65) & ChrW(&H6D) & ChrW(&H76) & _
            ChrW(&H69) & ChrW(&H6E) & ChrW(&H64) & _
            ChrW(&H6F) & ChrW(&H20) & "Unicode" & ChrW(&H21)
           
    Dim vRusia As String
   
    vRusia = ChrW(&H414) & ChrW(&H43E) & ChrW(&H431) & _
                    ChrW(&H440) & ChrW(&H43E) & ChrW(&H20) & _
                    ChrW(&H43F) & ChrW(&H43E) & ChrW(&H436) & _
                    ChrW(&H430) & ChrW(&H43B) & ChrW(&H43E) & _
                    ChrW(&H432) & ChrW(&H430) & ChrW(&H442) & _
                    ChrW(&H44A) & ChrW(&H20) & ChrW(&H432) & _
                    ChrW(&H20) & "Unicode" & ChrW(&H21)
                   
    Dim vEspañol As String
   
    vEspañol = ChrW(&H42) & ChrW(&H69) & ChrW(&H65) & _
                    ChrW(&H6E) & ChrW(&H76) & ChrW(&H65) & _
                    ChrW(&H6E) & ChrW(&H69) & ChrW(&H64) & _
                    ChrW(&H61) & ChrW(&H20) & ChrW(&H61) & _
                    ChrW(&H20) & "Unicode" & ChrW(&H21)
    Dim vChino As String
   
    vChino = ChrW(&H6B22) & ChrW(&H8FCE) & _
            ChrW(&H4F7F) & ChrW(&H7528) & ChrW(&H20) & _
            "Unicode" & ChrW(&H21)
             
    Call Unicode(vIngles & vbNewLine & vAleman & vbNewLine & vJapones & vbNewLine & vPortugues & vbNewLine & vRusia & vbNewLine & vEspañol & vbNewLine & vChino)
End Sub

Private Sub Unicode(ByRef pTexto As String)

    Dim stUnicode As SETTEXTEX
   
    With stUnicode
        .flags = RTBW_DEFAULT
        .codepage = CP_UNICODE
    End With
   
    Call SendMessageWLng(Richtextbox1.hWnd, EM_SETTEXTEX, VarPtr(stUnicode), StrPtr(pTexto))
End Sub


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Psyke1