Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 07-03-2014
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Buenas...

Veo escafandra, que tienes mas pacienza que el Santo Job ... Al revisar tu nuevo algoritmo note que era muy similar al ultimo que yo habia implementado: en el que la aplicacion Refresh no me mostraba el panel encima del TImage pero lo mostraba fuera de este, en el resto del componente (no aplique Imagen->Align = alClient).... Partiendo de que es muy raro (por no decir imposible) que muestres un algoritmo que no funcione.. me plantee si el error no era que el TPanel se mostrase en "segundo plano" (por debajo del TImage) y .. Eureka.. el error por que no me el muestra el TPanel encima del TIMage es que no reconoce la accion pulsar botones raton cuando el cursor esta encima de este.. que es cuando debe de visualizarlo o no...

Código:
 
 void __fastcall  WMLbuttonDown (Messages::TMessage Message);
 void __fastcall  WMRbuttonDown (Messages::TMessage Message);
 BEGIN_MESSAGE_MAP
  VCL_MESSAGE_HANDLER(WM_RBUTTONDOWN, TMessage, WMRbuttonDown);
  VCL_MESSAGE_HANDLER(WM_LBUTTONDOWN, TMessage, WMLbuttonDown);
 END_MESSAGE_MAP (TWinControl);
 
 void __fastcall  TPrueba::WMLbuttonDown (TMessage Message)
  {
      MostrarPanel
 
 void __fastcall  TPrueba::WMRbuttonDown (TMessage Message)
   {
      AnularPanel

Ahora solo me queda detectar cuando se acciona el raton sobre el TIMage

Muchisimas gracias por tu pacienza.
Responder Con Cita
  #22  
Antiguo 07-03-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El sistema de pintado de rayas es el mismo que tu pusiste, quería que el código comenzase a serte familiar.

Tienes una forma de detectar las pulsaciones del ratón que es asignar los eventos del mismo a una función tuya, exactamente como lo haces en el entorno visual con un formulario. La mecánica sería OnEvento = MiFuncion. Esto es aplicable a cualquier evento del control sobre el que trabajes, sólo tienes que declarar tu función como se declara el evento y asignar el puntero. De esta forma to tienes que capturar los mensajes de Windows, reservando esa técnica para cuando el control no reacciona a cierto evento que te interese.

Para ilustrar el tema te pongo un ejemplo sobre el anterior:
Código:
class TPrueba: public TWinControl
{
  __published:
    void __fastcall PruebaMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);  
  private:
    TImage *Imagen;
    TPanel *Panel;
  public:
   __fastcall TPrueba(TComponent* Owner);
};
Código:
__fastcall TPrueba::TPrueba(TComponent* Owner): TWinControl(Owner)
{
  Imagen = new TImage(this);
  Imagen->Parent = this;
  Imagen->Align = alClient;
  for(int y=0; y<200; y++) {
    if((y%2)==0){Imagen->Canvas->Pen->Color = clRed;}else{Imagen->Canvas->Pen->Color = clBlue;}
    Imagen->Canvas->Pen->Width = 1;
    Imagen->Canvas->MoveTo(0,y);
    Imagen->Canvas->LineTo(199,y);
  }

  Panel = new TPanel(this);
  Panel->Top = 0;
  Panel->Left = 0;
  Panel->Width = 20;
  Panel->Height = 20;
  Panel->Parent = this;

  Imagen->OnMouseDown = PruebaMouseDown;  // Asignando el evento del TImage...
}

void __fastcall TPrueba::PruebaMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
   // Tu respuesta al ratón
}

Saludos.

Última edición por escafandra fecha: 07-03-2014 a las 19:43:20.
Responder Con Cita
  #23  
Antiguo 11-03-2014
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Buenas

Gracias por contestarme escafandra...recurro a ti otra vez (espero que sea ya la ultima) por que temgo problemas a la hora de dimensionar el componente TWinControl

Código:
 __fastcall TPrueba::TPrueba(TComponent* Owner)
        : TWinControl(Owner)
{
   Width = 1000;
   Height= 1000;

   Grafica = new  TImage(this);
   Grafica->Parent  = this;
   Grafica->Align   = alClient;

   ...............................
   ..............................
no dimensiona el componente

y si quiero redimensionar e TImage en tiempo de ejecucion

Código:
void TPrueba::Pintar()
{

  Grafica->Width =200;
  Grafica->Height=200;
no lo hace...

Que hago mal....
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
Dibujar Elipse y Parábola pixel a pixel Deiv Gráficos 9 28-11-2016 10:19:41
Como obtener el color de un pixel ilichhernandez Gráficos 11 02-11-2006 15:40:00
Guardar y recuperar noipa Varios 3 07-02-2006 14:46:21
pasar imagen pixel a pixel gulder Gráficos 7 26-06-2005 02:10:45
¿ Cual es la mejor forma de implementar una Pizarra con Sockets? pixel a pixel ? sase Internet 1 22-10-2003 16:23:50


La franja horaria es GMT +2. Ahora son las 18:01:57.


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