Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2004
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Tab en RichEdit

Buenas a todos!

¿Alguien sabe cómo puedo acceder o cambiar el numero de espacios que equivalen a una pulsación de la tecla Tab?

Estoy haciendo un Editor y me gustaría hacer que se pudiese elegir el tamaño del Tab, pero no encuentro la forma.

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 22-10-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Poder: 22
barman Va por buen camino
Si estas trajando con el RichtEdit

RichEdit1->Paragraph->Alignment
RichEdit1->Paragraph->Numbering

Si con TMemo, tendras que capturar el evento OnKeyDown, y comprobar
el Key = VK_TAB
Responder Con Cita
  #3  
Antiguo 25-10-2004
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Cita:
Empezado por barman
Si estas trajando con el RichtEdit

RichEdit1->Paragraph->Alignment
RichEdit1->Paragraph->Numbering

Si con TMemo, tendras que capturar el evento OnKeyDown, y comprobar
el Key = VK_TAB
Gracias barman, pero no entiendo como pueden ayudarme esas propiedades. Perdona que se me pasara, estoy trabajando con un TRichEdit y lo que pretendo es analizar las cadenas de texto para que cuando encuentre un \t pueda sustituirlo por el numero de espacios equivalentes, por eso necesito conocer qué propiedad me da dicho valor.

He visto que muchos editores sencillos te dan la opción de elegir el tamaño de tu tabulador, pero no consigo encontrar nada útil al respecto.

He mirado las propiedades que me has dado, pero ninguna me sirve para conocer el Tamaño del tab (o no sé usarlas que también puede ser). De todos modos te agradezco tu respuesta y me gustaría que si después de esta aclaración sigues pensando que mi solución está en las propiedades que me has dado, por favor me las aclares.

Muchas Gracias. Espero respuesta
Responder Con Cita
  #4  
Antiguo 25-10-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Poder: 22
barman Va por buen camino
A ver, el TRichtEdit es mas largo de lo que parece, basicamente tiene toda la funcionalidad de un editor de texto complejo, lo primero mirate el ejemplo que trae el compilador

.......Borlan5\CBuilder5\Examples\Apps\RichEdit\

Y seguro que resolvera todas tus dudas.

Por otra parte lo que me refiero es a esto.


void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
{
int StartPos = RichEdit1->SelStart + RichEdit1->SelLength;
if (Key == VK_TAB)
{
ShowMessage(StartPos);
Key = 0;
}

}
Responder Con Cita
  #5  
Antiguo 25-10-2004
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Buenas barman:

En los ejemplos no encuentro nada que me sirva y este código que has pegado tampoco hace nada de lo que necesito.

El codigo lo que hace es que cuando se pulse la tecla TAB salga por pantalla la suma del SelStart y del SelLength y aparte de que no se imprima el TAB. Y no le veo relación con lo que yo quiero hacer, ya que estos dos valores son la posición del cursor y de la longitud de la seleccion.

No sé, pero creo que no nos entendemos muy bien . Aunque por intentarlo que no quede..... .

Se me ocurre que quizá tu idea era que seleccionase con el ratón el un TAB escrito anteriormente y que el código me dijera la longitud, si es eso te adelanto que no funciona ya que la longitud del caracter \t es siempre 1.

Manualmente he comprobado que un TAB equivale a 9 espacios por defecto, y lo que yo quiero es poder cambiar eso (tanto acceder para obtener ese valor como acceder para cambiarlo).

Gracias de todas formas, sigo esperando respuesta.
Responder Con Cita
  #6  
Antiguo 29-10-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Poder: 22
barman Va por buen camino
Cita:
Empezado por Sonic
No sé, pero creo que no nos entendemos muy bien . Aunque por intentarlo que no quede..... .
Creo que no.
A ver por parte, 1º escribres y si pulsas el tabulador le envias 9 espacios.

void __fastcall TForm1::RichEdit1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == VK_TAB)
{
RichEdit1 ->SetSelTextBuf(" ");
}

}


2º que lea el texto escrito y que cambie los Tabs por que quieras
SetSelTextBuf.

for (int i = 0; i< strlen(RichEdit1 ->Text.c_str()); i++ )
{
if (RichEdit1 ->Text.c_str()[i] == VK_TAB)
ShowMessage("A");
}
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:45:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi