![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#5
|
|||
|
|||
|
Ante todo muchas gracias por vuestro consejo y esfuerzo.
Voy a intentar concretar el tema... No se si lo que quiero hacer se puede hacer si crearte tu propio componente y tus propios eventos. Sospecho que si, así que intentaré explicarme con mas claridad metiendo mas código de por medio No pondré las clases que uso porque son un poco coñazo y largas, así que extrapolaré algo que mas o menos sea equiavlente pero resumido: Código:
unit unit1;
TDibujo = class
private
nombre:String;
x,y:single;
radio:single;
imagen:TImage;
procedure _Onclick(Sender:TObject);
constructor Create(nombre:String;cx,cy,radio:single;im:String;padre:TWinControl);
(...)
end;
implementation
constructor
TDibujo.create(nombre:String;cx,cy,rad:single;im:String;padre:TWinControl);
begin
x:=cx;
y:=cy;
radio:rad;
imagen:=TImage.Create(nil);
imagen.Parent:=padre;
imagen.Picture.Bitmap.PixelFormat:=pf24bit;
imagen.OnClick:=_imagenclick;
if radio<10 then
imagen.Picture.LoadFromFile('pequeño.bmp')
else
imagen.Picture.LoadFromFile('grande.bmp');
end;
(...)
procedure _OnClick(Sender:TObject);
begin
?¿?¿?¿?
end;
IDEA - OBJETIVO En el form de la unit2 habrán: -boton CREAR: que cada vez que se pulse, creará un objeto de tipo TDIbujo. La imagen se presentará en el form según las coordenadas que se le asignaron al objeto al crearlo ( por ejemplo de forma aleatoria ). Claro,¿no? :P - 4 Componentes tipo TEdit, vacios, en la parte inferior del form, con sus TLabels: "nombre, coordenada X, coordenada Y, Radio". Así tendré tantas imágenes en el form como objetos creados de TDibujo. Estas imágenes que representan a los objetos de TDibujo, se pueden mover con el ratón, es decir, pinchando sobre una y arrastrandola donde quieras. Las coordenadas de donde sueltes la imagen, deben actualizarse en el objeto. ESTO LO TENGO RESUELTO GRACIAS A NEFTALI .EL PROBLEMA Tambien quiero que cuando hagas un click sobre cualquier imagen, en los TEdit aparezca los datos del objeto que representa esa imagen. Se entiende ¿no?. Hago click sobre una imagen, y aparece su nombre, coordenadas, y radio en los TEdit del formulario. LA SOLUCIÓN CUTRE Si declaro/implemento la clase TDibujo en la unit2 podría implementar así: Código:
procedure TDibujo._OnClick(Sender:TObject); begin TEditNombre.text:=nombre; TEditcX.text:=FloatToStr(x); TEditcY.text:=FloatToStr(y); TEditRadio:=FloatToStr(radio); end; Pero esta solución me parece muy poco elegante, aparte de otras cosas. EL PROBLEMA (AMPLIACIÓN) Como la clase está en la unit1, y en la unit2 empiezo así: Código:
unit unit2 uses unit1; Código:
procedure TDibujo. _OnClick(Sender:TObject); begin unit2.TEditNombre.text:=nombre; (...) Cuando hago un click sobre la imagen, capturo el evento, pero tengo que codificarlo en la unit1, y por lo tanto no puedo acceder a los componentes de la unit2 para mostrar los datos del objeto....arf arf. Espero que ahora se entienda bien mi problema :P. La idea de jachguate de crearme mi propio componente y mis propios eventos, me parece buena....pero mis conocimientos no llegan a tanto... Y por ahora no tengo demasiado tiempo para aprenderlo, aunque lo haré en un futuro ya que ya veo que es bastante útil. Creo que no se me olvida nada....de todos modos ¡¡¡MUCHAS GRACIAS POR VUESTRA AYUDA!!! Editado por jachguate. razon: sacar de la etiqueta code lo que no debia estar alli: Última edición por jachguate fecha: 18-09-2004 a las 01:11:18. |
|
|
|