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 05-05-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Array TPanel y popup menu

Hola, la verdad es que no se muy bien si mi pregunta está bien encuadrada en este grupo, pero ahí va.

Vereis estoy haciendo la gestión de una hotel y me estoy pegando con el planning de ocupación.

El planning está realizado con un array de paneles que consta de 21 filas y 39 columnas de las cuales los datos van apartir de la 3 fila y de la 3 column ya que las anteriores son para datos como habitaciones y días, pues bien dependiendo de si el panel está vacio ó tiene una reserva ó una estancia se le adjudica un popupmenú u otro, necesito saber que panel es el que llama al popupmenú , ya que del caption del panel cojo los datos necesarios para realizar las funciones del popupmenú.

No se si me he explicado necesito cojer el caption del panel que llama al popupmenú, el panel tiene el siguiente formato al ser array p[i,j] , una opción que había pensado es saber el i y el j (fila y columna) de esa forma se en que panel estoy, pero como buscar el i y el j si no tengo ninguna referencia para ello, sólo un popup menú que puede estar en otros 20 ó + paneles.

O sino hacerlo con las coordenadas de la pantalla sabiendo cual es el x ó el y del ratón y sabiendo las medidias de los panenles, puedo saber que panel es, pero nada no sale lo que pretendo.

¿Cómo puedo solucionar mi problema?, ¿alguien sabe si puedo saber desde donde se llama al popupmenu?

Espero haberme explicado con claridad para que lo podais enterder.

Eternamente agradecida.
Responder Con Cita
  #2  
Antiguo 05-05-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Igual con saber como adjudicar un evento de un componente a un array de componetes me valdría ya que tengo hecha una función que me puede sevir para calcular el la fila y columna de mi panel y así sacar el caption.


es decir necesito saber como adjudicar el evento OnMouseMove del panel ha cada uno de los paneles del array.


Muchas gracias, espero vuestra ayuda.
Responder Con Cita
  #3  
Antiguo 05-05-2005
Avatar de hermes_32
hermes_32 hermes_32 is offline
Miembro
 
Registrado: jul 2003
Posts: 94
Poder: 21
hermes_32 Va por buen camino
Hola VRO,

la verdad que no me entero bien de lo que intentas explicar y eso que lo he leido varias veces, te lo aseguro. Pero creo que te estas liando demasiado.

Yo que tu jugaría con la propiedad tag de los paneles y así puedes localizar mejor cuál es el panel correcto y poder asignarle el evento OnMouseMove al panel adecuado.

para asignarle el evento sería

Código Delphi [-]
(tuarray[i,j] as tpanel).onmousemove := panelbueno.Onmousemove;

No se si es lo que quieres pero espero que te sirva.

Un saludo.
Responder Con Cita
  #4  
Antiguo 05-05-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
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
Puedes utilizar los eventos OnEnter y OnExit de los paneles para saber en cada momento en qué panel se encuentra el ratón. De igual forma me da la impresión de que con alguno de los eventos del ratón (Down/Up) podrás detectar en qué panel se está desplegando el menú y no tendrás que hacer cálculos con coordenadas.
__________________
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
  #5  
Antiguo 05-05-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Smile

Efectivamente me explico fatal , pero vosotros lo habeis adivinado, exactamente me refería a eso a saber en que panel del array me encuentro de esa forma poder acceder a lo que pone en el caption.


Gracias a ambos y al resto de personas que me han ayudado tantas veces, probaré vuestras respuestas y os comento.

GRacias
Responder Con Cita
  #6  
Antiguo 05-05-2005
Avatar de hermes_32
hermes_32 hermes_32 is offline
Miembro
 
Registrado: jul 2003
Posts: 94
Poder: 21
hermes_32 Va por buen camino
Hola VRO,

Cita:
Empezado por VRO
tengo hecha una función que me puede sevir para calcular el la fila y columna de mi panel
Si esto lo tienes controlado, entonces no veo el problema, ya que puedes hacer:

Código Delphi [-]
  (TuArray[i,j] as TPanel).caption

Y tienes acceso al caption del panel que quieres.

Un saludo.
Responder Con Cita
  #7  
Antiguo 06-05-2005
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Poder: 21
VRO Va por buen camino
Ya está, problema solucionado.

¡¡¡ Yaaaaaaa está !!!!!, no problem, pensando lo que dijo Neftalí que en el evento OnMouseDown/Up puedo acceder directamente al caption sín necesidad de hallar las coordenadas, estuve pensando e investigando y lo encontré, para gente puede ser una chorrada encontrar estop que mucha gente ya sabrá, pero yo no lo sabía quizas porque soy un poco cenutria ó porque todavía me quedan muchas cosas que aprender de Delphi y demás. Bueno sin animo de enrrolarme mucho lo que hecho de esta forma:

Código Delphi [-]
 
procedure TMenugeneral.mouse(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if Button=mbRight then
    begin
        if (sender is TPanel) then
         begin
          codreserva:=(TPanel(sender).Caption);
          pos_i:=IntToStr((TPanel(sender).top));
          pos_j:=IntToStr((Tpanel(sender).left));
         end;
    end;
end;

Cuando creo los TPanel del array ,le asigno al evento OnMouseDown la llamada a la función mouse que he pasado de la siguiente forma:

Código Delphi [-]
  p[i,j].onmousedown:=mouse;

Enla función mouse hallo el caption del TPanel en el que he pulsado el botón derecho para asignarle el popupmenu.

Bueno, pongo el código ya que creo que mi deber es poner como lo he hayado para que otro inexperto como yo ó empanado le sirva de ayuda, ya que es de lo que se trata en este foro.


Muchas gracias a todos y buena tarde.
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


La franja horaria es GMT +2. Ahora son las 16:54:03.


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