RichEdit Justificar Texto
Moderador: Moderadores
RichEdit Justificar Texto
Olá,
Alguém sabe como justificar um texto em um RichEdit?
Alguém sabe como justificar um texto em um RichEdit?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Hola Asimoes.
Esto habilita la justificación:
Esto establece la justificación del párrafo en el cual se encuentra el cursor del Richedit:
Esto habilita la justificación:
Código: Selecionar todos
SendMessage (hRichEditBox, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
Esto establece la justificación del párrafo en el cual se encuentra el cursor del Richedit:
Código: Selecionar todos
// RichEditBox_SetParaFormatAlignment ( hRichEditBox, nAlignment )
HB_FUNC ( RICHEDITBOX_SETPARAFORMATALIGNMENT )
{
HWND hRichEditBox = (HWND) HMG_parnl (1);
WORD Alignment = (WORD) hb_parni (2);
PARAFORMAT2 ParaFormat2;
ZeroMemory ( &ParaFormat2, sizeof (PARAFORMAT2) );
ParaFormat2.cbSize = sizeof (PARAFORMAT2);
ParaFormat2.dwMask = PFM_ALIGNMENT;
switch( Alignment )
{
case 1: ParaFormat2.wAlignment = PFA_LEFT; break;
case 2: ParaFormat2.wAlignment = PFA_RIGHT; break;
case 3: ParaFormat2.wAlignment = PFA_CENTER; break;
case 4: ParaFormat2.wAlignment = PFA_JUSTIFY; break;
default: ParaFormat2.wAlignment = PFA_LEFT; break;
}
SendMessage ( hRichEditBox, EM_SETPARAFORMAT, 0, (LPARAM) &ParaFormat2 );
}
RichEdit Justificar Texto
Olá Claudio,
Este exemplo é para hmg? como implemento na hwgui?
Este exemplo é para hmg? como implemento na hwgui?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Es una función general que se puede aplicar a cualquier GUI.
Nunca programé en hwg pero supongo por lo que vi en los fuentes seria algo así:
Nunca programé en hwg pero supongo por lo que vi en los fuentes seria algo así:
Código: Selecionar todos
@ x,y RICHEDIT oRichEdit ...
RICHEDITBOX_SETTYPOGRAPHYOPTIONS ( oRichEdit:handle )
RichEditBox_SetParaFormatAlignment ( oRichEdit:handle , nAlignment )
#pragma BEGINDUMP
#include "hwingui.h"
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include <shlwapi.h>
#include "hbapi.h"
HB_FUNC ( RICHEDITBOX_SETTYPOGRAPHYOPTIONS )
{
HWND hRichEditBox = ( HWND ) HB_PARHANDLE( 1 );
SendMessage (hRichEditBox, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
}
// RichEditBox_SetParaFormatAlignment ( hRichEditBox, nAlignment )
HB_FUNC ( RICHEDITBOX_SETPARAFORMATALIGNMENT )
{
HWND hRichEditBox = ( HWND ) HB_PARHANDLE ( 1 );
WORD Alignment = (WORD) hb_parni (2);
PARAFORMAT2 ParaFormat2;
ZeroMemory ( &ParaFormat2, sizeof (PARAFORMAT2) );
ParaFormat2.cbSize = sizeof (PARAFORMAT2);
ParaFormat2.dwMask = PFM_ALIGNMENT;
switch( Alignment )
{
case 1: ParaFormat2.wAlignment = PFA_LEFT; break;
case 2: ParaFormat2.wAlignment = PFA_RIGHT; break;
case 3: ParaFormat2.wAlignment = PFA_CENTER; break;
case 4: ParaFormat2.wAlignment = PFA_JUSTIFY; break;
default: ParaFormat2.wAlignment = PFA_LEFT; break;
}
SendMessage ( hRichEditBox, EM_SETPARAFORMAT, 0, (LPARAM) &ParaFormat2 );
}
#pragma ENDDUMP
RichEdit Justificar Texto
Olá Claudio,
Não funfou, tentei sua dica e nada.
Não funfou, tentei sua dica e nada.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Proba con lo siguiente:
1) crear un control richeditbox con:
2) escribir alguna cosa
3) luego presionar F5
1) crear un control richeditbox con:
Código: Selecionar todos
@ x,y RICHEDIT oRichEdit ... ON OTHERMESSAGES {|...| Test(...) ) } 3) luego presionar F5
Código: Selecionar todos
FUNCTION Test ( oRichEdit, msg, wParam, lParam )
IF msg == WM_KEYDOWN .AND. hwg_PtrToUlong( wParam ) == 116 // VK_F5
RICHEDITBOX_SETTYPOGRAPHYOPTIONS ( oRichEdit:handle )
RichEditBox_SetSelRange ( oRichEdit:handle, { 0, -1 } ) // selecciona todo el texto
RichEditBox_SetParaFormatAlignment ( oRichEdit:handle , 4 )
ENDIF
RETURN -1
Código: Selecionar todos
// RichEditBox_SetSelRange ( hWndControl, { nMin, nMax } )
HB_FUNC ( RICHEDITBOX_SETSELRANGE )
{
CHARRANGE CharRange;
HWND hWndControl = ( HWND ) HB_PARHANDLE ( 1 );
CharRange.cpMin = (LONG) hb_parvnl(2,1);
CharRange.cpMax = (LONG) hb_parvnl(2,2);
SendMessage ( hWndControl, EM_EXSETSEL, 0, (LPARAM) &CharRange );
}
RichEdit Justificar Texto
Claudio,
Na mosca!
Funcionou que é uma beleza!
Mais uma opção para HwGui-Richedit
:)Pos
Na mosca!
Funcionou que é uma beleza!
Mais uma opção para HwGui-Richedit
:)Pos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Bom dia Claudio,
Quanto a visualização tudo ok: left, right, center e justify
Faço um refresh() de tela logo após os comandos.
Quando eu faço um oEdit:GetText() que pega todo o texto da tela formatado para gravar no arquivo, as formatações não funcionam.
Para ter cereza eu faço hwg_msginfo(oEdit:GetText()) para ver e hwg_writelog((oEdit:GetText()) para ver o que gravou no arquivo
As formtações no gettext() desaparecem.
O texto fica alinhado no richedit sem espaços, eu uso gettext para pegar o conteúdo do richedit como não foi formatado com espaços, fica tudo alinhado a esqueda.
embora na tela apareça correto.
Quanto a visualização tudo ok: left, right, center e justify
Faço um refresh() de tela logo após os comandos.
Quando eu faço um oEdit:GetText() que pega todo o texto da tela formatado para gravar no arquivo, as formatações não funcionam.
Para ter cereza eu faço hwg_msginfo(oEdit:GetText()) para ver e hwg_writelog((oEdit:GetText()) para ver o que gravou no arquivo
As formtações no gettext() desaparecem.
O texto fica alinhado no richedit sem espaços, eu uso gettext para pegar o conteúdo do richedit como não foi formatado com espaços, fica tudo alinhado a esqueda.
embora na tela apareça correto.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Para que conserve los atributos el texto debe ser gravado en formato RTF:
Código: Selecionar todos
nDataFormat := 4
lSelection := .F. // si es .T. grava solo el texto seleccionado
cFileName := "arch.rtf"
RichEditBox_StreamOut ( oRichEdit:handle, cFileName, lSelection, nDataFormat )
Código: Selecionar todos
DWORD CALLBACK EditStreamCallbackWrite (DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
{
HANDLE hFile = (HANDLE) dwCookie;
if ( WriteFile (hFile, (LPVOID) lpBuff, (DWORD) cb, (LPDWORD) pcb, NULL) )
return 0;
else
return -1;
}
#ifdef UNICODE
#define HMG_CHAR_TO_WCHAR(c) ((c != NULL) ? hb_osStrU16Encode(c) : NULL) // return WCHAR
#define HMG_parc(n) HMG_CHAR_TO_WCHAR (hb_parc(n))
#else
#define HMG_parc(n) hb_parc (n)
#endif
// RichEditBox_StreamOut ( hWndControl, cFileName, lSelection, nDataFormat )
HB_FUNC ( RICHEDITBOX_STREAMOUT )
{
HWND hWndControl = ( HWND ) HB_PARHANDLE ( 1 );
TCHAR *cFileName = (TCHAR*) HMG_parc (2);
BOOL lSelection = (BOOL) hb_parl (3);
LONG nDataFormat = (LONG) hb_parnl (4);
HANDLE hFile;
EDITSTREAM es;
LONG Format;
switch( nDataFormat )
{
case 1: Format = SF_TEXT; break; // ANSI and UTF-8 with BOM
case 2: Format = ( CP_UTF8 << 16 ) | SF_USECODEPAGE | SF_TEXT; break; // ANSI and UTF-8 without BOM
case 3: Format = SF_TEXT | SF_UNICODE; break; // UTF-16 LE
case 4: Format = SF_RTF; break;
case 5: Format = ( CP_UTF8 << 16 ) | SF_USECODEPAGE | SF_RTF; break;
default: Format = SF_RTF; break;
}
if ( lSelection )
Format = Format | SFF_SELECTION;
if( ( hFile = CreateFile (cFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL )) == INVALID_HANDLE_VALUE )
{ hb_retl (FALSE);
return;
}
es.pfnCallback = EditStreamCallbackWrite;
es.dwCookie = (DWORD_PTR) hFile;
es.dwError = 0;
SendMessage ( hWndControl, EM_STREAMOUT, (WPARAM) Format, (LPARAM) &es );
CloseHandle (hFile);
if( es.dwError )
hb_retl (FALSE);
else
hb_retl (TRUE);
}
RichEdit Justificar Texto
Claudio,
Boa noite e para carregar o richedit com o arquivo rtf?
Boa noite e para carregar o richedit com o arquivo rtf?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Para cargar un archivo en RTF:
PD: en la linea 4, Read File va todo junto sin espacio en el medio, si lo escribo sin espacio el servidor no me acepta.
Código: Selecionar todos
nDataFormat := 4
lSelection := .F. // si es .T. el archivo cargado sustituye al texto seleccionado
cFileName := "arch.rtf"
RichEditBox_StreamIn ( oRichEdit:handle, cFileName, lSelection, nDataFormat )
Código: Selecionar todos
DWORD CALLBACK EditStreamCallbackRead (DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
{
HANDLE hFile = (HANDLE) dwCookie;
if ( Read File (hFile, (LPVOID) lpBuff, (DWORD) cb, (LPDWORD) pcb, NULL) )
return 0;
else
return -1;
}
// RichEditBox_StreamIn ( hWndControl, cFileName, lSelection, nDataFormat )
HB_FUNC ( RICHEDITBOX_STREAMIN )
{
HWND hWndControl = ( HWND ) HB_PARHANDLE ( 1 );
TCHAR *cFileName = (TCHAR*) HMG_parc (2);
BOOL lSelection = (BOOL) hb_parl (3);
LONG nDataFormat = (LONG) hb_parnl (4);
HANDLE hFile;
EDITSTREAM es;
LONG Format;
switch( nDataFormat )
{
case 1: Format = SF_TEXT; break; // ANSI and UTF-8 with BOM
case 2: Format = ( CP_UTF8 << 16 ) | SF_USECODEPAGE | SF_TEXT; break; // ANSI and UTF-8 without BOM
case 3: Format = SF_TEXT | SF_UNICODE; break; // UTF-16 LE
case 4: Format = SF_RTF; break;
case 5: Format = ( CP_UTF8 << 16 ) | SF_USECODEPAGE | SF_RTF; break;
default: Format = SF_RTF; break;
}
if ( lSelection )
Format = Format | SFF_SELECTION;
if( ( hFile = CreateFile (cFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL )) == INVALID_HANDLE_VALUE )
{ hb_retl (FALSE);
return;
}
es.pfnCallback = EditStreamCallbackRead;
es.dwCookie = (DWORD_PTR) hFile;
es.dwError = 0;
SendMessage ( hWndControl, EM_STREAMIN, (WPARAM) Format, (LPARAM) &es );
CloseHandle (hFile);
if( es.dwError )
hb_retl (FALSE);
else
hb_retl (TRUE);
}
RichEdit Justificar Texto
Olá Claudio,
Na compilação deu este erro onde fica a declaração abaixo:
if ( Read File (hFile, (LPVOID) lpBuff, (DWORD) cb, (LPDWORD) pcb, NULL) )
editorgui.prg:526:10: error: 'Read' undeclared (first use in this function)
Estou tentando postar a solução que eu fiz e está aparecendo:
Forbidden
You don't have permission to access /forum/posting.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
[]´s
Na compilação deu este erro onde fica a declaração abaixo:
if ( Read File (hFile, (LPVOID) lpBuff, (DWORD) cb, (LPDWORD) pcb, NULL) )
editorgui.prg:526:10: error: 'Read' undeclared (first use in this function)
Estou tentando postar a solução que eu fiz e está aparecendo:
Forbidden
You don't have permission to access /forum/posting.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
[]´s
- Anexos
-
- EditStreamCallbackRead.c
- Solução no anexo
- (252 Bytes) Baixado 170 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
RichEdit Justificar Texto
Claudio Soto escreveu:PD: en la linea 4, Read File va todo junto sin espacio en el medio, si lo escribo sin espacio el servidor no me acepta.
RichEdit Justificar Texto
Obrigado Claudio,
Essas dicas vão servir muito a todos que utilizam a richedit.
[]´s
Essas dicas vão servir muito a todos que utilizam a richedit.
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)