Ver la Versión Completa : [Duda] Texto enriquecido
Josber
3 de mayo de 2024, 21:06
Hola a todos,
¿Alguien ha usado o sabe como poner texto enriquecido en los campos de texto de PWC?, es que me lo ha pedido un amigo como modificación y, aunque ya casi no me dedico a la programación, por desgracia, le he dicho que "ni idea", (me refiero a poder poner negrita una parte del texto, subrayar, etc). Me supongo que será con algún ocx de terceros, para variar, pero si conocéis alguno, me vendría bien, incluso si hay ejemplos, mejor, (puestos a pedir ...)
Mil gracias
Un salu2.-
Kuk
4 de mayo de 2024, 11:25
@Josber, con este viejo OCX de Microsoft puedes hacerlo, MS Rich Text Box (en adjuntos). Trabaja en formato RTF.
Creo que debes tener el Visual Basic 6 instalado, si no te dice lo de "Not licenced to use" ;)
Josber
4 de mayo de 2024, 13:35
Gracias @Kuk, lo probaré a ver aunque, igual lo de tener VB 6 instalado, igual no le hace gracia al colega ...:piti:
Kuk
4 de mayo de 2024, 15:34
@Josber, no, el VB6 lo tienes que tener instalado para poder trabajar con él en modo diseño. Para distribuir la aplicación, no creo que haga falta, sólo registrar la OCX.
Ejemplos de código con este control:
*> Negrita
01 SV-LENGTH PIC S9(5) COMP-5.
...
MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
MOVE 1 TO "SelLength" OF RichTextBox1
IF "SelBold" OF RichTextBox1 = POW-FALSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-TRUE TO "SelBold" OF RichTextBox1
ELSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-FALSE TO "SelBold" OF RichTextBox1
END-IF
*> Cursiva
MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
MOVE 1 TO "SelLength" OF RichTextBox1
IF "SelItalic" OF RichTextBox1 = POW-FALSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-TRUE TO "SelItalic" OF RichTextBox1
ELSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-FALSE TO "SelItalic" OF RichTextBox1
END-IF
*> Subrayado
MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
MOVE 1 TO "SelLength" OF RichTextBox1
IF "SelUnderline" OF RichTextBox1 = POW-FALSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-TRUE TO "SelUnderline" OF RichTextBox1
ELSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-FALSE TO "SelUnderline" OF RichTextBox1
END-IF
*> Lista "bullet"
MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
MOVE 1 TO "SelLength" OF RichTextBox1
IF "SelBullet" OF RichTextBox1 = POW-FALSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-TRUE TO "SelBullet" OF RichTextBox1
ELSE
MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
MOVE POW-FALSE TO "SelBullet" OF RichTextBox1
END-IF
*> Alinear texto a la izquierda
MOVE 0 TO "SelAlignment" OF RichTextBox1
*> Alinear texto en el centro
MOVE 2 TO "SelAlignment" OF RichTextBox1
*> Alinear texto a la derecha
MOVE 1 TO "SelAlignment" OF RichTextBox1
Ejemplo de cómo Buscar texto:
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-FONT PIC 9 VALUE 1.
01 WS-BUSC PIC 9 VALUE 4.
01 RESP PIC 9.
01 SV-BUSCADO PIC X(50).
01 rtfWholeWord PIC 9 VALUE 2.
01 rtfMatchCase PIC 9 VALUE 4.
01 rtfNoHighlight PIC 9 VALUE 8.
01 SV-TEXTO PIC X(15000).
PROCEDURE DIVISION.
IF "Caption" OF CmStatic1 = "0"
GO TO SALIDA
END-IF
IF POW-TEXT OF TXT-BUSCAR = SPACES OR
POW-TEXT OF TXT-BUSCAR = "Buscar..."
INVOKE POW-SELF "DisplayMessage"
USING "¡Indique el texto a buscar!" 48
INVOKE TXT-BUSCAR "SetFocus"
ELSE
IF GLB-SELENGTH = ZEROS
MOVE ZEROS TO GLB-SELSTART
END-IF
MOVE POW-FALSE TO "Enabled" OF POW-SELF
MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
MOVE POW-TEXT OF TXT-BUSCAR TO SV-BUSCADO
INVOKE OBJ-RTF "GET-Text" RETURNING SV-TEXTO
COMPUTE GLB-SELENGTH = FUNCTION STORED-CHAR-LENGTH(SV-BUSCADO)
INSPECT SV-TEXTO CONVERTING
'abcdefghijklmnopqrstuvwxyzáéíóúàèìòùäëïöü' TO
'ABCDEFGHIJKLMNOPQRSTUVWXYZAEIOUAEIOUAEIOU'
INSPECT SV-BUSCADO CONVERTING
'abcdefghijklmnopqrstuvwxyzáéíóúàèìòùäëïöü' TO
'ABCDEFGHIJKLMNOPQRSTUVWXYZAEIOUAEIOUAEIOU'
PERFORM WITH TEST AFTER UNTIL SV-TEXTO(GLB-SELSTART:GLB-SELENGTH) =
SV-BUSCADO(1:GLB-SELENGTH) OR
(GLB-SELSTART + GLB-SELENGTH) >= 15000
ADD 1 TO GLB-SELSTART
END-PERFORM
MOVE POW-TRUE TO "Enabled" OF POW-SELF
MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF
IF SV-TEXTO(GLB-SELSTART:GLB-SELENGTH) =
SV-BUSCADO(1:GLB-SELENGTH)
MOVE GLB-SELSTART TO "SelStart" OF RichTextBox1
SUBTRACT 1 FROM "SelStart" OF RichTextBox1
MOVE GLB-SELENGTH TO "SelLength" OF RichTextBox1
ELSE
INVOKE POW-SELF "DisplayMessage"
USING "¡No hay más coincidencias!" 64
MOVE ZEROS TO GLB-SELSTART
END-IF
END-IF
INVOKE POW-SELF "ThruEvents"
.
SALIDA.
EXIT.
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.