Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2005
Mauro.NET Mauro.NET is offline
Miembro
 
Registrado: mar 2005
Posts: 70
Poder: 20
Mauro.NET Va por buen camino
Tecnicas para resaltar sintaxis

Hola gente, estoy haciendo una aplicacion que permite hacer consultas SQL a una bases de datos, en donde la pantalla se divide en 2 partes. La superior es para escribir la consulta (con sintaxis resaltada), y la de abajo te muestra los resultados en una grilla con posibilidad de exportar a pdf, excel, html, etc.
Aunque les parezca tonto, esto es muy pobre en algunos motores de DB. Por ejemplo en una empresa donde trabajo, usan Sybase Anywere 5 y tiene una aplicacion similar pero no te resalta la sintaxis y eso es espantoso a la hora de trabajar con consultas tan extensas como estoy acostumbrado.

En el proyecto estoy usando el componente RichEdit, ya que me permite buscar palaras y aplicar formato (color, fuente,etc) . Estuve usando codigo que encotre por aqui en el foro pero no era del todo bueno, yo quiero hacer que resalte la sintaxis a medida que vas escribiendo como el Delphi y que sea eficiente.

Yo lo que hago por ahora es esto:

Código:
  
  procedure ResaltaPalabraEnRE(RichEdit: TCustomRichEdit; Palabra: string);
  {Resalta palabra en RichEdit}
  var
  	Texto: string;
  	Posicion, position, EndPos: integer;
  begin
  	texto := richedit.Lines.Text;
  	Posicion := 0;
  	with RichEdit do
  	begin
  		Endpos := Length(RichEdit.Text);
  		Lines.BeginUpdate;
  		while Position <> -1 do
  		begin
  			Endpos := Length(RichEdit.Text) - posicion;
  		    Position := FindText(Palabra, posicion, Endpos, [stWholeWord]);
  			Inc(Posicion, Length(Palabra));
  			SelStart := Position;
  			SelLength := Length(Palabra);
  			richedit.SelAttributes.Color := clred; 
  		end;
  		Lines.EndUpdate;
  	end;
  end;
  
  procedure TForm1.Button1Click(Sender: TObject);
  var i:integer;
  begin
 	// Por cada palabra que se encuentra en el ListBox, la resalta
  	for i:= 0 to lista.Count-1 do
  		ResaltaPalabraEnRE(RichEdit, ListBox.Items.Strings[i]);
  end;
Mientras tanto para ganar tiempo, si alguien conoce un programita similar al que estoy haciendo y que sea independiente de la base de datos, pasenme la direccion para bajarlo.

Gacias......

Última edición por Mauro.NET fecha: 04-08-2005 a las 01:59:24.
Responder Con Cita
  #2  
Antiguo 04-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

De entrada diré que la tarea me parece ardua: no sabría ni por donde empezar. Puede que te resultara útil echar un vistazo al libro Dissecting a C# Application que trata sobre el desarrollo de la aplicación SharpDevelop. Uno de los temas con los que tuvieron que lidiar fue con el que te ocupa y esto se trata en el libro mencionado.

Por otro lado tal vez podrías utilizar los componentes SynEdit los cuales cuentan con un montón de sintaxis de lenguajes de programación soportados, y, cuando no te sean suficientes, puedes definir los que te sean menester más o menos sencillamanete. Con uno de los Add-On que hay publicado para los componentes se incluyen cientos de lenguajes de programación.

Si los pruebas, digo los componentes SynEdit, a no ser que se te halla metido en la cabeza, como suele decirse, hacer algo por tu propia cuenta, estoy seguro de que te quedarás con ellos, pues son muy buenos, de código abierto, gratuitos y muy usados por no pocas aplicaciones, que fían de su potencialidad.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 04-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hacer tu propio resaltador de sintaxis puede ser una tarea muy compleja. Pienso que lo meor es que uses algo ya hecho. Por ejemplo, el SynEdit es una componente gratuita que maneja varias sintaxis, entre ellas SQL.

// Saludos
Responder Con Cita
  #4  
Antiguo 04-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

roman 0 - dec 1

__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 04-08-2005
Mauro.NET Mauro.NET is offline
Miembro
 
Registrado: mar 2005
Posts: 70
Poder: 20
Mauro.NET Va por buen camino
Gracias....... estoy instalando el componente, por lo que cuentan ya ni tengo ganas de ponerme a programar algo asi jejejejejeje

Saludos...
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 14:39:33.


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