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 18-03-2008
Jorge Rojas M. Jorge Rojas M. is offline
Miembro
 
Registrado: mar 2008
Posts: 12
Poder: 0
Jorge Rojas M. Va por buen camino
Cool Componente TShape con Label?

Hola, es primera vez que ingreso a este foro y he podido dar respuesta a muchas de mis preguntas por medio de las dudas que plantean los demás usuarios, por lo tanto decidí inscribirme para exponerles mi problema talvéz alguno de ustedes me pueda ayudar o brindar alguna otra solución.

Estoy creando una aplicación con componentes TShape que se generan en tiempo de ejecución, lo cual ya lo logré (MiComponente:=TShape.create(self)) sin embargo es necesario que cada componte que se crea tenga una etiqueta para identificarlo, pero por las características del componente TShape este no cuenta con una propiedad para agregarle Texto y no sé si esto es posible. Qué puedo hacer?. Les comento que para mi es importante poder dibujar un TShape pues la idea de la aplicación es representar un Diagrama de Flujo.

Gracias de antemando por su colaboración.
Responder Con Cita
  #2  
Antiguo 18-03-2008
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Diagrama de Flujo

Hace tiempo tuve que hacer una aplicación similar (no diagrama de flujo, sino un Organigrama), inicialmente estuve construyendo un componente por mi propia cuenta, hasta que encontre en Devexpress el FlowChart y el OrgChart, dos componentes muy buenos que hacen lo que tu necesitas.

Si no me equivoco creo que TMS Software tambien tiene algo parecido.

Espero que te sirva.

Saludos
Responder Con Cita
  #3  
Antiguo 19-03-2008
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Una forma facil es crear un label arriba del componete TShape.

Otra es crear una clase descendiente de TShape y agregar la propiedad text. Luego en su evento Pain lo escribis.

Algo asi:
Código Delphi [-]
  TMiShape = class (TShape)
  private
    FText: string;
    procedure SetText(value: string);
  protected
    procedure Paint; override;
  public
    property Text: string read FText write SetText;
  end;

...

procedure TMiShape.Paint;
begin
  inherited Paint;
  Canvas.TextOut(10,10, FText);
end;

procedure TMiShape.SetText(value: string);
begin
  FText := value;
  Invalidate;
end;

puede contener errores el codigo pero es la idea.
__________________
[Crandel]
Responder Con Cita
  #4  
Antiguo 20-03-2008
Jorge Rojas M. Jorge Rojas M. is offline
Miembro
 
Registrado: mar 2008
Posts: 12
Poder: 0
Jorge Rojas M. Va por buen camino
Thumbs up

Muchas gracias a ambos por las respuestas y si efectivamente el componente FlowChart es demasiado poderoso para lo que yo quiero desarrollar sin embargo me da un panorama más amplio para eventualmente pensar en algo más elaborado, por otra parte la solución que plantea Crandel me es mucho más económica y cumple con lo que yo quiero en un principio, sólo tengo una duda dado que no he podido probar el código pues estoy en Exámenes de la U, el procedimiento Paint en el momento de ejecutar la línea Canvas.TextOut(10,10,ftext), va escribir en la posición 10,10 del Shape no del Form?

Gracias....
Responder Con Cita
  #5  
Antiguo 20-03-2008
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Cita:
Empezado por Jorge Rojas M. Ver Mensaje
... el procedimiento Paint en el momento de ejecutar la línea Canvas.TextOut(10,10,ftext), va escribir en la posición 10,10 del Shape no del Form?
si, lo deje asi para no complicar mas el ejemplo.

Puedes agregarle propiedades al componente para asignarle el lugar donde escribir o calcular de forma automatica la posicion, segun te guste
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 25-03-2008
Jorge Rojas M. Jorge Rojas M. is offline
Miembro
 
Registrado: mar 2008
Posts: 12
Poder: 0
Jorge Rojas M. Va por buen camino
Thumbs up

Cita:
Empezado por Crandel Ver Mensaje
si, lo deje asi para no complicar mas el ejemplo.

Puedes agregarle propiedades al componente para asignarle el lugar donde escribir o calcular de forma automatica la posicion, segun te guste
Muchísimas Gracias Crandel, ya lo pude programar y funciona perfectamente, en cuanto a la posición si estoy tratando de que éste calcule la misma de forma automática, si tienes algo por ahí me puedes ayudar muchísimo. De todos modos muchas Gracias.
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
Una ayudita con TShape JerS Varios 8 28-04-2010 04:07:11
Mover un Tshape en ejecucion rex Varios 1 25-11-2006 00:37:20
Componente "tipo label" marceloalegre Varios 3 19-10-2005 16:15:14
Un TShape con personalidad elcigarra Gráficos 7 21-07-2005 04:47:00


La franja horaria es GMT +2. Ahora son las 23:28:51.


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