Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
InicioForosForo Programación

Justificar texto en VB 6

gandalf29100
2006-02-28 00:02 - Respuestas: 4 - Tema nº: 2408675


Hola, estoy intentando hacer un editor de texto con ciertas caracteristicas especiales, para el trabajo de un amigo y necesito algunas cosas que no logra hallar cómo hacerlas:

-necesito justificar el texto que se escriba (no alineado a la izquierda, derecha o centrado que son las opciones que tiene VB, sino justificado, como la opcion de MS Word)
-También necesitaría (aunque no es tan importante) darle los márgenes y el espaciado entre linea y linea.

Si alguien puede ayudarme..., muchas gracias.
Posibles soluciones:
Justificar texto en vb 6Justificar texto en vb 6
Quiero justificar un texto pero cuando lQuiero justificar un texto pero cuando l
Precio elevado sin justificarPrecio elevado sin justificar
Opciones de centrar justificar en visual basic 2010Opciones de centrar justificar en visual basic 2010
Quitar texto de un texto digitalizadoQuitar texto de un texto digitalizado
Prenda

Re: Justificar texto en VB 6 - 2006-02-28 11:34 - Respuesta 2

Hola,

Supongo que si estás usando un control RichTextBox para albergar el texto ¿no?. En tal caso, te paso una función que no recuerdo de donde saqué... hace tiempo hice algo parecido a lo que estás haciendo.

La función se basa en el ataque del objeto por API.

Uso para justificar: SetAlignment RichTextBox1.HWND, ercParaJustify
El resto de las opciones de alineación las puedes obtener de la definición de constantes ERECParagraphAlignmentConstants que está más abajo.

Code:
nulo;BRnulo;Private Declare Function SendMessageLong Lib nulo;user32nulo; Alias nulo;SendMessageAnulo; (ByVal nulo;BRnulo;HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) nulo;BRnulo;As Long nulo;BRnulo;Private Declare Function SendMessage Lib nulo;user32nulo; Alias nulo;SendMessageAnulo; (ByVal nulo;BRnulo;HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long nulo;BRnulo; nulo;BRnulo;Const WM_USER = nulo;H400 nulo;BRnulo;Const EM_SETTYPOGRAPHYOPTIONS = WM_USER + 202 nulo;BRnulo;Const TO_ADVANCEDTYPOGRAPHY = 1 nulo;BRnulo;Const EM_SETPARAFORMAT = WM_USER + 71 nulo;BRnulo;Private Const PFA_LEFT = 1 nulo;BRnulo;Private Const PFA_RIGHT = 2 nulo;BRnulo;Private Const PFA_CENTER = 3 nulo;BRnulo;Private Const PFA_JUSTIFY = nulo;H4 nulo;BRnulo;Const MAX_TAB_STOPS = 32 nulo;BRnulo;Private Type PARAFORMAT2 nulo;BRnulo; cbSize As Long nulo;BRnulo; dwMask As Long nulo;BRnulo; wNumbering As Integer nulo;BRnulo; wEffects As Integer nulo;BRnulo; dxStartIndent As Long nulo;BRnulo; dxRightIndent As Long nulo;BRnulo; dxOffset As Long nulo;BRnulo; wAlignment As Integer nulo;BRnulo; cTabCount As Integer nulo;BRnulo; rgxTabs(MAX_TAB_STOPS - 1) As Long nulo;BRnulo; dySpaceBefore As Long nulo;BRnulo; dySpaceAfter As Long nulo;BRnulo; dyLineSpacing As Long nulo;BRnulo; sStyle As Integer nulo;BRnulo; bLineSpacingRule As Byte nulo;BRnulo; bOutlineLevel As Byte nulo;BRnulo; wShadingWeight As Integer nulo;BRnulo; wShadingStyle As Integer nulo;BRnulo; wNumberingStart As Integer nulo;BRnulo; wNumberingStyle As Integer nulo;BRnulo; wNumberingTab As Integer nulo;BRnulo; wBorderSpace As Integer nulo;BRnulo; wBorderWidth As Integer nulo;BRnulo; wBorders As Integer nulo;BRnulo;End Type nulo;BRnulo; nulo;BRnulo;Public Enum ERECParagraphAlignmentConstants nulo;BRnulo; ercParaLeft = PFA_LEFT nulo;BRnulo; ercParaCentre = PFA_CENTER nulo;BRnulo; ercParaRight = PFA_RIGHT nulo;BRnulo; ercParaJustify = PFA_JUSTIFY nulo;BRnulo; End Enum nulo;BRnulo;Private Const PFM_ALIGNMENT = nulo;H8nulo; nulo;BRnulo; nulo;BRnulo;Private Function SetAlignment(lHwnd As Long, ByVal eAlign As ERECParagraphAlignmentConstants) nulo;BRnulo; Dim tP2 As PARAFORMAT2 nulo;BRnulo; Dim lR As Long nulo;BRnulo; tP2.dwMask = PFM_ALIGNMENT nulo;BRnulo; tP2.cbSize = Len(tP2) nulo;BRnulo; tP2.wAlignment = eAlign nulo;BRnulo; lR = SendMessageLong(lHwnd, EM_SETTYPOGRAPHYOPTIONS, nulo;BRnulo;TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY) nulo;BRnulo; lR = SendMessage(lHwnd, EM_SETPARAFORMAT, 0, tP2) nulo;BRnulo;End Function nulo;BRnulo;


Esta función es de libre uso. De hecho creo que la saqué del MSDN. En el caso de que los moderadores estén en desacuerdo con su publicación, les ruego que la eliminen.

Saludos.

[ Este mensaje fué editado por: Prenda el 28-02-2006 a las 11:37]
Hurricane

Re: Justificar texto en VB 6 - 2006-02-28 22:06 - Respuesta 3

El siguiente código te va a servir. Sólo hace lo que quiers: justificación completa.Code:
Rem Justifica una cadena.
Rem Str = Cadena a justificar
Rem Max = Cantidad de caracteres a la que se va a justificar.
Function strJustify(Str As String, Max As Integer) As String
Dim P As Integer, P2 As Integer
Str = LTrim(RTrim(Str))
P = InStr(1, Str, nulo; nulo
If (P nulo; 0) Then
While (Len(Str) nulo; Max)
While (Mid(Str, P, 1) nulo;nulo; nulo; nulo
P = P + 1
Wend
Str = Left(Str, P - 1) + nulo; nulo; + Right(Str, Len(Str) - P + 1)
P = P + 2
If (P nulo;= Len(Str)) Or (InStr(P, Str, nulo; nulo = 0) Then
P = 1
End If
P = InStr(P, Str, nulo; nulo
Wend
End If
strJustify = Str
End Function

Saludos

HURRICANE
gandalf29100

Re: Justificar texto en VB 6 - 2006-03-16 17:26 - Respuesta 4

Hola, gracias a los dos, aunque solo el código de Prenda me funcionó y pude justificar texto sin problemas.

Ahora lo q no pude lograr es aumentar el espacio entre linea y linea ni cambiar los márgenes. Probe cambiar algunas cosas del código de Prenda y no me da errores, pero tampoco produce ningún cambio en el texto.

Si alguien sabe o conoce algun codigo para cambiar los márgenes y el espacio entre líneas de un RichTextBox en VB6, por favor si puede ayudarme...

Gracias de nuevo, hasta la vista

Página:1

Respuestas relacionadas:

Voz textoVoz textoForo
TextoTextoForo
Texto a vozTexto a vozForo
No veo el texto de los vinculosNo veo el texto de los vinculosForo
Texto predictivoTexto predictivoForo
Colocar texto en mp 4Colocar texto en mp 4Foro
Mensajes de texto en redMensajes de texto en redForo
No veo el texto completoNo veo el texto completoForo
Editor de texto en webEditor de texto en webForo
Convertidor de textoConvertidor de textoForo
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos23 Diciembre 2024