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

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 16-06-2006
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Bicho:
De buenas a primeras parece que por ahi van los tiros (OnMouseDown) Gracias.


Pero te comento lo siguiente:

En tu código falta verificar el boton pulsado

Código Delphi [-]
If Button = mbLeft Then
esa es la parte fácil

La cosa se me complica

Tu comparas el valor sólo el valor:

Código Delphi [-]
x <= StatusBar1.panels[1].Width

Este código -así- aplica a los 2 primeros páneles (0 y 1) pero el ejemplo vale.

Yo uso el panel 4 (el quinto) para dibujar los iconos, tendría que calcular primero la pocición "left" del panel (¿suma de los width de los anteriores?) pero luego tendría que calcular:

1. cuantos iconos hay
2. posiciones de cada uno ( al leer las coordenadas left y top de las imagenes son 0,0 )
3. comparar la coordenada X del click con cada uno de los rangos
4 (lo dificil) tengo N imagenes, el click fue en la nro I ¿ cual es la nro I y a que evento debe llamar ? .....

Por cuestiones de presentación no puedo separar las imagenes en paneles individuales (sería lo más facil, tanto que lo voy a considerar seriamente)

¿No habrá alguna manera de pasar el mensaje (click) a las imagenes para que puedan responder directamente?

Por ahora voy a hacer algunas pruebas a ver que consigo.

Gracias nuevamente.

Y todavía dicen que en delphi se hacen los programas "sin escribir una linea de código"

Edito para agregar resultados de las pruebas:

Código Delphi [-]
procedure TForm1.StatusBar1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var
i,j, px : Integer;
begin
If Button = mbLeft Then
   Begin
   Edit1.Text := 'x='+IntToStr(x)+', y='+IntToStr(y);
   Edit2.Text := '';
   Memo1.lines.Clear;
   If (x >= rPanel4.Left)  And (x <= rPanel4.Right) Then //
      Begin
      // Determinar la posición de la primera imagen
      j := NumeroImagenes;
      px := rPanel4.left + (((rPanel4.Right - rPanel4.left)- (j * mrg)) div 2);
      For i := 0 to j do
         Begin
         If (x >= px-1) and (x <= px+17) Then // un poco de margen
            Edit2.Text := intToStr(i); // el valor i contiene el nº del icono pulsado
         // saltar a la posicion de la siguiente imagen
         Inc(px,mrg);
         End;
      End;
   End;
end;

Este codigo soluciona los problemas (1, 2 , y 3) sólo aclarar que rPanel4 es una variable privada de tipo tRect que almacena el valor de Rect en el evento:

Código Delphi [-]
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
Begin
If Panel.Index = 4 then
   Begin
   rPanel4 := Rect;

Solo falta saber cual es el boton: i...
__________________
Sitrico

Última edición por sitrico fecha: 16-06-2006 a las 17:57:39.
Responder Con Cita
 



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
TStatusBar jymy788 Varios 4 28-09-2007 20:04:10
TStatusbar nenufer OOP 3 18-05-2006 20:47:13
implmentar Articulo click..click..run Crash ASAPLTDA OOP 0 21-01-2006 16:16:08
Como guardar en una tabla el resultado de un query mostrado en un dbgrid luisreg OOP 3 09-10-2003 01:35:01


La franja horaria es GMT +2. Ahora son las 12:44:30.


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