Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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-04-2009
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Crear TLabel en Runtime asociado a una TImage

hola amigos del foro.

Estoy utilizando los componentes de Neftali (TSelectOnRunTime y TsaveComps).

Adjunto a estos componentes tiene un ejemplo de un restorant.
Lo que necesito hacer es muy semejante a esto, pero con algunas cosas extras.
Primero necesito que a las mesas se le despliegue un Popup, lo cual lo logre al agregar una linea como sigue.

Código Delphi [-]
procedure TForm1.OnpuntoClick(Sender: TObject);
begin
  if (pcModo.ActivePageIndex = 0) then begin
    SelectOnRunTime.Selected := False;
    // En un TControl?
    if (Sender is TControl) then begin
      SelectOnRunTime.Selected := false;
      SelectOnRunTime.SelectControl := TControl(Sender);
      SelectOnRunTime.Selected := True;
  if (Sender is TImage) then Timage(sender).PopupMenu:=popupmenu1;
   end;
  end;
end;

esto funciona bien, lo segundo, que es el porque de mi consulta, es que quiero agregar algunas TLabel asociadas a cada una de las mesas. Además que cuando modifique la posicion de alguna de estas mesas, las Tlabel asociadas a esta mesa en particulas se mueva con la mesa.

Otra cosa la cantidad de Tlabel que contenga cada mesa puede ser variable, y depende de usuario que escogera de una lista cuales quiere que aparezcan.

Se podra hacer esto... como se hace??

Espero que me puedan ayudar.. mil gracias
Responder Con Cita
  #2  
Antiguo 19-04-2009
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Algunas preguntas.

Al crear un componente no puedo seleccionar como parent a un TImagen?
Que componentes puedo utilizar como parent?

He pensado en utilizar un TPanel como parent, en donde colocar un TImagen y TLabel. El problema que estoi teniendo es que el Tpanel no tiene la propiedad transparent como un TImagen, por lo que se ve mal.

Entonces, que otro componente poder utilizar en donde genere otros componentes (imagen y label), pero que sea transparente... existe??

Si no existe como puedo crear alguno que cumpla estas condiciones.

Espero que me puedan ayudar... muchas gracias
Responder Con Cita
  #3  
Antiguo 20-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mjjj Ver Mensaje
(1) Que componentes puedo utilizar como parent?

(2) He pensado en utilizar un TPanel como parent, en donde colocar un TImagen y TLabel. El problema que estoi teniendo es que el Tpanel no tiene la propiedad transparent como un TImagen, por lo que se ve mal.
Hola.

(1) Cualquiera que derive de TWinControl (cosa que no hace TImage).

En cuanto a la cuestión, yo lo que haría en este caso es no utilizar como parent el TImage, sino el Parent de TImage y luego mover la etiqueta/s cuando muevas el componente.

Te lo muestro. He utilizado el ejemplo que hay aquí, que mueve imágenes con el ratón. Y lo he modificado para crear una etiqueta y que se mueva cuando mueves la imagen.

Crear la etiqueta:

Código Delphi [-]
function TForm1._CreateAsociatedLabel(AImage: TImage):TLabel;
var
  lbl:TLabel;
begin
  lbl := TLabel.Create(Self);
  lbl.Parent := AImage.Parent;
  lbl.Left := AImage.Left + 5;
  lbl.Top := AImage.Top + 5;
  lbl.Caption := 'Imagen';
  lbl.Color := clYellow;
  lbl.Name := 'Label_' + IntToStr(Random(100000));  
  Result := lbl;
end;

Mover la etiqueta cuando mueves la imagen...

Código Delphi [-]
    // Mover el TLabel asoaciado
    lbl := TLabel(FindComponent(TImage(Sender).Hint));
    lbl.Left := TImage(Sender).Left + 5;
    lbl.Top := TImage(Sender).Top + 5;

En este caso utilizao el Hint de la imagen para almacenar el nombre de la etiqueta asociada y luego buscarla. Este método está bien para la prueba, pero en tu caso utilizaría algo más robusto para almacenar las etiquetas asociadas a un TImage; Además comentas que debes poder asociar varias etiquetas, con lo que esta solución se queda "corta".
Archivos Adjuntos
Tipo de Archivo: zip Mover_Imagen_con_Raton_etiqueta.zip (11,3 KB, 16 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 22-04-2009
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Gracias Neftali, me funciona bien el tema de arrastrar varias TLabel con la imagen... lo que hize fue almacenar todas las Tlabel asociadas a una imagen, cosa que la moverla se mueven todas las que estasn asociadas.

Por otro lado, el problema que me surgio fue que al mover la imagen, si me salgo de la aplicacion (con el mouse) , la fota queda fuera de la vista, fuera del parent al cual corresponde.

Como puedo hacer para restringuir esto, que la imagen solo pueda moverse dentro de cierto componente, por ejemplo un TPanel.

Espero que se entienda mi duda.

Muchas gracias
Responder Con Cita
  #5  
Antiguo 22-04-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por mjjj Ver Mensaje
Como puedo hacer para restringuir esto, que la imagen solo pueda moverse dentro de cierto componente, por ejemplo un TPanel.

En el evento MouseMove tienes las coordenadas actuales; Ahí puedes comprobar si está fuera de límites y dejar la nueva posición donde te interese (sin exceder los límites).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 17-11-2009
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 524
Poder: 22
IVAND Va por buen camino
Hola Neftali

Excelente ejemplo como siempre ,

Una pregunta solamente , estoy intentando darle una mejora a mi sistema financiero echo con delphi 6 y firebird 1.5 , y entre las mejoras estan el poder arrastar un elemento de un menu cualquiera y pegarlo en un panel como si se tratase de un acceso directo (tal como se lo hace en windows seleccionas un elemento de un menu y lo arrastas al escritorio y se crea un acceso directo

Esto se puede lograr un poco con la idea de tu programa .. pero cuando salgo del aplicativo se borran los elementos creados ... como se podria evitar q no se borren cuando se vuelva a ejecutar el programa


Gracias por tu tiempo
__________________
IVAND
Responder Con Cita
  #7  
Antiguo 18-11-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por IVAND Ver Mensaje
Esto se puede lograr un poco con la idea de tu programa .. pero cuando salgo del aplicativo se borran los elementos creados ... como se podria evitar q no se borren cuando se vuelva a ejecutar el programa
Está claro que debes guardarlo de alguna forma, ya sea en INI o Base de Datos, para que la siguiente vez que vuelvas a entrar en el programa seas capaz de recrear esos objetos de nuevo.

Piensa los datos que necesitas para crear esos objetos y esos son los que deberás guardar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 18-11-2009
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 524
Poder: 22
IVAND Va por buen camino
Si creo q es la mejor opcion .... como puedo simular la accion de arrastar un objeto desde un Tmenu

Voy a revisar lo q me sugieres y de antemano nuevamente muy agradecido
__________________
IVAND
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
Crear TForm en Runtime mjjj Varios 10 15-04-2009 10:23:12
Crear imagen en runtime salvica Gráficos 1 03-01-2008 17:58:16
Crear columnas en runtime Pedro-Juan OOP 8 09-02-2007 12:38:18
Crear índice en runtime Gabriel2 Tablas planas 2 17-11-2005 22:19:00
Crear QuickRep en RunTime MLePuff Impresión 2 18-10-2005 05:32:23


La franja horaria es GMT +2. Ahora son las 09:40:28.


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