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

 
 
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
 



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 06:47:32.


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