PDA

Ver la Versión Completa : demasiado bruto o mucho cansancio


antonio peña
16-10-2006, 09:13:38
aqui voy de nuevo, he buscado en todos los lugares posibles darle solucion a una duda y si bien e encontrado muchas soluciones ninguna me ha ayudado.

tengo dos rich edit en uno tengo en cada linea un numero (0,1,2,...,n) estos numeros me los da el usuario, al presionar un boton quiero que en mi segundo richedit (donde tengo un texto predefinido)se pongan en color rojo todas la lineas que el usuario me puso en el richedit 1, mu duda es hacer eso

como decirle a x linea que se pinte de un color???:confused:

en verdad en probado de todo, gracias por su teimpo y respuestas

mierda
16-10-2006, 09:30:46
hola que tal ... prueba esto

richeconversacion.selatributes.color := clred;

antonio peña
16-10-2006, 09:34:02
e visto como se cambia de color un texto que yo selecciono con el mouse, pero como le indico que la lina 2 se ponga en color rojo, es todo lo que pido, saber como decirle a rich 1 que la linea x se pointe de color rojo, de lo demas yo me encargo.

gracias de todos modos

antonio peña
16-10-2006, 09:37:49
he encontrado este codigo

RichEdit.SelStar( RichEdit.GetLineIndex(x) );

lo modifique de esta forma por los errores que me marcaba
RichEdit.SelStart:= RichEdit.GetLineIndex(x) ;

pero me dice que getlineindex no esta definido como lo defino?

Bicho
16-10-2006, 09:40:41
Hola,

pues debes recorrer el richedit con un bucle, y para cada linea que debas colorear haces uso de las funciones SelStart y SelLenght y después cambias el color con el SelAttributes

Un ejemplo


var r : Integer;
Linea : String;
begin
for r := 0 to richedit2.Lines.count - 1 do begin
Linea := richedit2.lines.strings[r];
if {condicion para que la linea se tenga que pintar} then begin
richedit2.SelStart := Pos(Linea, RichEdit2.Text); //inicio de donde esta el texto a resalta, en este caso la linea entera
richedit2.SelLength:=Length(Linea); //longitud del texto
richedit2.SelAttributes.Color:=clred; //color
end;
end
end;


Espero te sirva.


Saludos

antonio peña
16-10-2006, 09:59:20
parece que funciona mejor que muchos el problema es que siempre me colorea la linea 1, cual seria el problema?

Bicho
16-10-2006, 10:19:12
¿Puedes poner una cacho de ése codigo que te da ese problema?, quizá podamos encotrar donde falla más fácilmente.

Saludos

antonio peña
16-10-2006, 10:26:41
richedit1.SelStart := Pos(lin2, RichEdit1.Text); //lin2 es string y tiene el valor de la linea a resaltar

richedit1.SelLength:=Length(lin2); //longitud del texto

richedit1.SelAttributes.Color:=clred; //color

el problema es que siempre me colorea en rojo la primera linea y solo el primer caracter

Bicho
16-10-2006, 10:40:02
Pues a mí me funciona, lo único es que hay que poner lo siguiente en la primera linea

richedit1.SelStart := Pos(lin2, RichEdit1.Text) - 1;

Para que te coja todos los carácteres.
Y eso de que te coja siempre la misma linea, ¿haces un bucle y el valor de lin2, es siempre la linea actual del bucle?

Saludos