Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2010
Tortuguica Tortuguica is offline
Miembro
 
Registrado: sep 2010
Ubicación: Elche, España
Posts: 46
Poder: 0
Tortuguica Va por buen camino
Moldear una cadena para convertirla en un TLabel

Hola a todos. Antes de nada, debo decir que soy un novatón, así que perdón por adelantado por las tonterías que pueda soltar.
En otro orden de cosas, tengo un problemilla, claro, y aquí estoy para ver si podéis ayudarme. Lo explico ya: Tengo un formulario en el que se crean, de manera dinámica, tantos TPanel como pedidos hayan sido generados. Cada TPanel contiene dos TLabel (que hacen referencia al proveedor y al nº de pedido) y un TSpeedButton (que abre el formulario donde se puede consultar el contenido del pedido).
Cada objeto creado en tiempo de ejecución tiene un nombre (los TPanel, 'pn'+nº de pedido; los TLabel, 'pv'+nº de pedido o 'pd'+nº de pedido y los TSpeedButton, 'sb'+nº de pedido). Además, al crear cada TSpeedButton se le asigna un evento OnClick, que, en este caso, es un procedimiento genérico para todos los TSpeedButton. Lo que yo quiero conseguir es que, cuando se pulse un TSpeedButton, los TLabel que están en ese mismo panel cambien el color de su fuente, de forma que queden "marcados" (algo parecido al comportamiento de los links en Internet).

Este es el código del procedimiento asociado al evento OnClick de los TSpeedButton:


procedure
TfmPedidosGenerados.marcado (Sender: TObject);
var

pedido: String;
longitud: Integer;
begin

pedido:=TSpeedButton(Sender).Name; //por ejemplo, sb00001
longitud:=Length(pedido)-2;//Le quito 2 por las letras 'sb' iniciales
pedido:=Copy(pedido,3,longitud)//Con eso consigo el pedido, o sea, 00001
//Y aquí viene el meollo de la cuestión
TLabel('pv' + pedido).Font.Color:=clPurple;
TLabel('pd' + pedido).Font.Color:=clPurple;
end;


El caso es que Delphi, cuando estoy escribiendo el código, me ofrece la posibilidad de escribir las propiedades del string moldeado (¿lo he dicho bien? Me refiero a que, una vez que pones el puntito, te salen las distintas opciones: Font, Left, etc.), pero luego, cuando lo ejecuto, el programa casca (con perdón).


Y eso es todo. Si alguien puede echarme una mano, le estaré muy agradecido. Hasta pronto.
Responder Con Cita
  #2  
Antiguo 10-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Tortuguica.

Código Delphi [-]
...
var
  pedido: string;
begin
   pedido:= Copy((Sender as TSpeedButton).Name, 3 ,Length((Sender as TSpeedButton).Name));
   (FindComponent('pv'+pedido) as TLabel).Font.Color:= clPurple;
   (FindComponent('pd'+pedido) as TLabel).Font.Color:= clPurple;
end;

Saludos.

Última edición por ecfisa fecha: 10-11-2010 a las 15:28:14.
Responder Con Cita
  #3  
Antiguo 10-11-2010
Tortuguica Tortuguica is offline
Miembro
 
Registrado: sep 2010
Ubicación: Elche, España
Posts: 46
Poder: 0
Tortuguica Va por buen camino
Muchísimas, muchísimas gracias, Ecfisa :-) Voy a aprovechar, ya que no sé cuándo volveré a colgar un hilo de nuevo (sí, este es el primero), para decir que esto del Club Delphi es maravilloso. ¡Se encuentran todas las soluciones, es increíble! Gracias de nuevo y un saludo desde Elche, España.
Responder Con Cita
  #4  
Antiguo 10-11-2010
Tortuguica Tortuguica is offline
Miembro
 
Registrado: sep 2010
Ubicación: Elche, España
Posts: 46
Poder: 0
Tortuguica Va por buen camino
Creo que antes lo he hecho mal (yo quería contestar a tu respuesta, no a mi pregunta), así que, por si acaso, quiero agradecerte tu respuesta, que, como ya sabrás, ha solucionado mi problema. ¡Jo, yo quiero saber tanto como vosotros...! ;-)
Responder Con Cita
  #5  
Antiguo 10-11-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Bienvenido Tortuguica.

Debes usar FindComponent como te sugiere ecfisa (si es que el formulario es el dueño de los componentes que creas en tiempo de ejecución), ya que los moldes de tipo como el que intentabas no realizan operaciones de búsqueda, son simplemente para tratar un bloque de memoria bajo la forma que tenga una clase o tipo diferente.

Sólo cambiaría la sentencia:
Código Delphi [-]
pedido:= Copy((Sender as TSpeedButton).Name, 3 ,Length((Sender as TSpeedButton).Name));
por:
Código Delphi [-]
pedido:= Copy((Sender as TSpeedButton).Name, 3, MaxInt);

Saludos.

Al González.
Responder Con Cita
  #6  
Antiguo 10-11-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Tortuguica Ver Mensaje
[...] esto del Club Delphi es maravilloso. ¡Se encuentran todas las soluciones, es increíble! Gracias de nuevo y un saludo desde Elche, España.
Es un gusto observar ese entusiasmo. Me hace pensar que recomendarás este sitio cuando veas a alguien que necesite ayuda con Delphi.

Saludos desde México.

Al.
Responder Con Cita
  #7  
Antiguo 10-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Tortuguica Ver Mensaje
para decir que esto del Club Delphi es maravilloso. ¡Se encuentran todas las soluciones, es increíble! Gracias de nuevo y un saludo desde Elche, España.
Hola Tortuguica.

Me alegro mucho que solucionaras tu problema y que te lleves una buena impresión del Club.

Espero que sigamos leyendote, aca estaremos...

Saludos.
Responder Con Cita
  #8  
Antiguo 11-11-2010
Tortuguica Tortuguica is offline
Miembro
 
Registrado: sep 2010
Ubicación: Elche, España
Posts: 46
Poder: 0
Tortuguica Va por buen camino
Por supuesto que recomendaré esta web. De hecho, los profesores del Instituto donde estudio nos la recomiendan, aunque yo ya la conocía antes de que ellos me lo dijeran por primera vez, ojo. Durante los 14 meses que llevo programando en Delphi, el Club me ha solucionado, que yo recuerde, unos 20 problemas, más o menos. Pero esta ha sido la primera vez que he hecho una consulta en Google (siempre la hago en Google, y el primer resultado siempre conduce al Club) y no he encontrado la solución, así que por eso me decidí a colgar un hilo, y lo que me ha sorprendido, claro, ha sido la rapidez de la respuesta, así que estoy encantado :-)
Gracias de nuevo a los dos. De verdad que es un gustazo encontrarse con gente tan preparada y que, además, sea tan amable como para dedicar su tiempo a resolver los problemas de los demás. Un saludo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como moldear un puntero ? gaston260 API de Windows 7 03-03-2009 23:51:21
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Puedo tomar una frecuencia de audio y convertirla en un dato Johnnywin Varios 5 29-09-2006 13:25:54
un TLabel para ir a pagina web zuriel_zrf Internet 1 19-02-2004 11:16:29


La franja horaria es GMT +2. Ahora son las 03:13:09.


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