Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Texto enriquecido (https://www.cobolforo.es/showthread.php?t=1761)

Josber 3 de mayo de 2024 21:06

Texto enriquecido
 
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

1 Archivos Adjunto(s)
@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:

Código COBOL:
  1. *> Negrita
  2.  01  SV-LENGTH   PIC S9(5) COMP-5.
  3.  ...
  4.          MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
  5.          MOVE 1 TO "SelLength" OF RichTextBox1
  6.          
  7.          IF  "SelBold" OF RichTextBox1 = POW-FALSE
  8.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  9.              MOVE POW-TRUE  TO "SelBold" OF RichTextBox1                      
  10.                  
  11.          ELSE
  12.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  13.              MOVE POW-FALSE TO "SelBold" OF RichTextBox1
  14.          END-IF    
  15.  
  16. *> Cursiva
  17.          MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
  18.          MOVE 1 TO "SelLength" OF RichTextBox1
  19.          
  20.          IF  "SelItalic" OF RichTextBox1 = POW-FALSE
  21.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  22.              MOVE POW-TRUE  TO "SelItalic" OF RichTextBox1            
  23.              
  24.          ELSE
  25.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  26.              MOVE POW-FALSE TO "SelItalic" OF RichTextBox1
  27.          END-IF
  28.  
  29. *> Subrayado
  30.          MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
  31.          MOVE 1 TO "SelLength" OF RichTextBox1
  32.          
  33.          IF  "SelUnderline" OF RichTextBox1 = POW-FALSE
  34.              MOVE SV-LENGTH TO "SelLength"    OF RichTextBox1
  35.              MOVE POW-TRUE  TO "SelUnderline" OF RichTextBox1            
  36.              
  37.          ELSE
  38.              MOVE SV-LENGTH TO "SelLength"    OF RichTextBox1
  39.              MOVE POW-FALSE TO "SelUnderline" OF RichTextBox1            
  40.          END-IF
  41.  
  42. *> Lista "bullet"
  43.          MOVE "SelLength" OF RichTextBox1 TO SV-LENGTH
  44.          MOVE 1 TO "SelLength" OF RichTextBox1
  45.          
  46.          IF  "SelBullet" OF RichTextBox1 = POW-FALSE
  47.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  48.              MOVE POW-TRUE  TO "SelBullet" OF RichTextBox1
  49.                              
  50.          ELSE
  51.              MOVE SV-LENGTH TO "SelLength" OF RichTextBox1
  52.              MOVE POW-FALSE TO "SelBullet" OF RichTextBox1            
  53.          END-IF
  54.  
  55. *> Alinear texto a la izquierda
  56.          MOVE 0 TO "SelAlignment" OF RichTextBox1
  57.  
  58. *> Alinear texto en el centro
  59.          MOVE 2 TO "SelAlignment" OF RichTextBox1
  60.  
  61. *> Alinear texto a la derecha
  62.          MOVE 1 TO "SelAlignment" OF RichTextBox1

Ejemplo de cómo Buscar texto:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  WS-FONT          PIC 9 VALUE 1.
  5.  01  WS-BUSC          PIC 9 VALUE 4.
  6.  01  RESP             PIC 9.
  7.  01  SV-BUSCADO       PIC X(50).
  8.  01  rtfWholeWord     PIC 9 VALUE 2.
  9.  01  rtfMatchCase     PIC 9 VALUE 4.
  10.  01  rtfNoHighlight   PIC 9 VALUE 8.
  11.  
  12.  01  SV-TEXTO         PIC X(15000).
  13.  
  14.  PROCEDURE       DIVISION.
  15.      
  16.      IF  "Caption" OF CmStatic1 = "0"
  17.          GO TO SALIDA
  18.      END-IF
  19.      
  20.      IF  POW-TEXT OF TXT-BUSCAR = SPACES OR
  21.          POW-TEXT OF TXT-BUSCAR = "Buscar..."
  22.          INVOKE POW-SELF "DisplayMessage"
  23.           USING "¡Indique el texto a buscar!" 48
  24.          
  25.          INVOKE TXT-BUSCAR "SetFocus"
  26.          
  27.      ELSE
  28.          IF  GLB-SELENGTH = ZEROS            
  29.              MOVE ZEROS TO GLB-SELSTART
  30.          END-IF
  31.          
  32.          MOVE POW-FALSE   TO "Enabled"      OF POW-SELF
  33.          MOVE POW-MP-WAIT TO "MousePointer" OF POW-SELF
  34.                      
  35.          MOVE POW-TEXT OF TXT-BUSCAR TO SV-BUSCADO
  36.          
  37.          INVOKE OBJ-RTF "GET-Text" RETURNING SV-TEXTO
  38.              
  39.          COMPUTE GLB-SELENGTH = FUNCTION STORED-CHAR-LENGTH(SV-BUSCADO)
  40.              
  41.          INSPECT SV-TEXTO CONVERTING
  42.              'abcdefghijklmnopqrstuvwxyzáéíóúàèìòùäëïöü' TO
  43.              'ABCDEFGHIJKLMNOPQRSTUVWXYZAEIOUAEIOUAEIOU'
  44.              
  45.          INSPECT SV-BUSCADO CONVERTING
  46.              'abcdefghijklmnopqrstuvwxyzáéíóúàèìòùäëïöü' TO
  47.              'ABCDEFGHIJKLMNOPQRSTUVWXYZAEIOUAEIOUAEIOU'
  48.          
  49.          PERFORM WITH TEST AFTER UNTIL SV-TEXTO(GLB-SELSTART:GLB-SELENGTH) =
  50.              SV-BUSCADO(1:GLB-SELENGTH) OR
  51.              (GLB-SELSTART + GLB-SELENGTH) >= 15000                    
  52.              ADD 1 TO GLB-SELSTART
  53.          END-PERFORM
  54.          
  55.          MOVE POW-TRUE       TO "Enabled"      OF POW-SELF
  56.          MOVE POW-MP-DEFAULT TO "MousePointer" OF POW-SELF
  57.          
  58.          IF  SV-TEXTO(GLB-SELSTART:GLB-SELENGTH) =
  59.              SV-BUSCADO(1:GLB-SELENGTH)
  60.              MOVE GLB-SELSTART TO "SelStart"  OF RichTextBox1
  61.              
  62.              SUBTRACT 1 FROM "SelStart"  OF RichTextBox1
  63.              
  64.              MOVE GLB-SELENGTH TO "SelLength" OF RichTextBox1
  65.          
  66.          ELSE    
  67.              INVOKE POW-SELF "DisplayMessage"
  68.               USING "¡No hay más coincidencias!" 64  
  69.              
  70.              MOVE ZEROS TO GLB-SELSTART                  
  71.          END-IF
  72.      END-IF
  73.      
  74.      INVOKE POW-SELF "ThruEvents"    
  75.      .
  76.      
  77.  SALIDA.
  78.      EXIT.    


La franja horaria es GMT +2. Ahora son las 09:29.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.