Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 07-04-2005
Elfoscuro Elfoscuro is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 22
Elfoscuro Va por buen camino
Vale. No he entendido nada. De todas formas, tampoco funcionaba bien... hay un fallo en un if... "if (fthen begin" me peta. Creo que te has comido el resto de la comparación del IF al Cortar-Pegar.

De todas formas, olvidad todo lo anterior. He remodelado el código completamente (eso de ir probando no mola... debería empezar a programar siempre bien, y no ir arreglando luego... si es que soy de dejao... ). Este es el nuevo código:

Código:
procedure TForm1.BASIC_ListDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  Str:string;
  f,Ancho_Letra:integer;
  ARect:TRect;
  chrs:Char;

begin
  f:=1;
  Str:=BASIC_List.Items[Index];
  ARect:=Rect;
  BASIC_List.Canvas.TextRect(Rect,0,0,'');
  while f<=length (Str) do
	begin
	  chrs:=Str[f];
	  if (chrs<chr(32)) or ((chrs>=chr(144)) and (chrs<=chr(164))) then
		  begin
			if (chrs>=chr(144)) and (chrs<=chr(164)) then
				begin
				  chrs:=chr(ord(Chrs)-79);
				  BASIC_List.Canvas.Font.Style:=[fsBold,fsUnderline,fsItalic];
				end
			  else
				begin
				  //De momento nada
				end;
		  end
		else
		  begin
			BASIC_List.Canvas.Font.Style:=[];
		  end;
	  Ancho_Letra:=BASIC_List.Canvas.TextWidth(chrs);
	  ARect.Right:=ARect.Left+Ancho_Letra;
	  BASIC_List.Canvas.TextRect(ARect, ARect.Left, ARect.Top, chrs);
	  ARect.Left:=ARect.Left+Ancho_Letra;
	  inc(f);
	end;
end;
Vale. Con esto he solucionado bastantes cosas. Ahora ya da igual que la fuente sea fija o proporcional. Ya no me machaca letras. Con respecto al recuadro que señala la línea, lo he solucionado con "BASIC_List.Canvas.TextRect(Rect,0,0,'');", que me dibuja el rectángulo completo antes de hacer nada, por lo que luego ya no quedan partes del canvas sin dibujar (que era lo que me generaba la basurilla residual al mover el cursor).

En cuanto a lo de que la condición siempre era falsa, la verdad es que no se a que te refieres. La condición se cumplía perfectamente, entraba al bloque (comprobado con showmessages y puntos de ruptura), y lo ejecutaba casi sin problemas. De hecho, el único problema que tenía ahí, lo sigo teniendo con la nueva versión del código. Es el único que me queda:

¿Porqué si uso la fuente arial, me salen las letras subrayadas, negrita y cursiva (solo los chr entre 144 y 164), mientras que si pongo la curier new (que es la que al final se tiene que quedar) solo sale en negrita y cursiva?

Ambas fuentes tienen todas las posibilidades. Si en lugar de estilos, uso colores, va bien, los pinta de un color diferente al resto. Pero parece que el subrayado se le atraganta al joio TListBox...

A ver si podeis echarme una mano en esto... ¿puede ser que al dibujar el TextRect me esté comiendo la parte de abajo y por eso no salga? Es una tontería mu gorda, lo se, pero es que no se que $&$%&$%&$%&$%& puede ser...

Saludos del elfo
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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:51:35.


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