Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Problema incomprensible con FORM

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problema incomprensible con FORM Responder citando

Buenas:

Estoy haciendo un programa que consta de un form principal en que el usuario puede seleccionar una serie de opciones cada una asociada a un form

Una de esas opciones es un TIMage, en el que cargo la imagen de un boton con dos flechas una Arriba y otra abajo (Imagen Bmp). El caso es que segun se pulse la flecha arriba o cursor abajo (Posicion del cursor dentro del TIMage) el programa realizara una serie de operaciones
estas se encontaban en el Evento: TIMageONMouseDown
.

El Caso es que esta Opcion funcionaba perfectamente hasta que cambie la propiedad FormStyle a fsMDIForm antes era fsNormal
desde ese momento el seleccionar tanto la la flecha arriba o Abajo se hizo inutil no realizaba nada de nada(Otras Opciones si funcionan).....Curioso

Pero no termina hay todo , Quise comprobar si el programa seguia entrado en el eventoTIMageONMouseDown para ello puse un "ancla" en el...... Pulso la imagen flechas y si me entra, depuro paso a paso, y todas las operaciones las realiza todas, el programa funciona perfectamente.. (Depurando linea a linea funciona perfectamente, si lo dejo correr no funciona)

Alguna Idea Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: compriobar Responder citando

Para clarificar lo expuesto anterioriomente acontinuacion muestro el codigo de un pequeño programa en donde se produce el error.

Código:
//---------------------------------------------------------------------------

#ifndef MenuH
#define MenuH
//---------------------------------------------------------------------------
#include <Classes>
#include <Controls>
#include <StdCtrls>
#include <Forms>
#include <ExtCtrls>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TImage *Imagen;
        void __fastcall FormActivate(TObject *Sender);
        void __fastcall ImagenMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y);

private:   // User declarations

       TPicture *Flechas;

public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



Código:
//---------------------------------------------------------------------------

#include <vcl>
#pragma hdrstop

#include "Menu.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{

   Flechas = new TPicture();


   //Cargamos la imagen flechas que es un boton con dos flechas, en la 
      mitad superior la flecha hacia arriba y en la mitad inferior la flecha   
      hacia abajo
 
   Flechas->LoadFromFile("Flechas.bmp");
   Imagen->Picture->Assign(Flechas);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::ImagenMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{

  //Si se pulsa la flecha Arriba (si el cursor del raton
    se encuentra en Mitad superior del Boton, entre las cordenadas
     X (0,0-0,25)  Y(0,0-0,20)  correspondientes )

  if (X>0 && X<25>0 && Y<20>LoadFromFile("FlechArriba.bmp");
         Imagen->Picture->Assign(Flechas);
     }

  //Si se pulsa la flecha Abajo (Mitad inferios del Boton)

  if (X>0 && X<25>20 && Y<40>LoadFromFile("FlechAbajo.bmp");
          Imagen->Picture->Assign(Flechas);
     }
}




Nota : Los if de ImagenMouseDown son correctos

Con la Propiedad

FormStyle = fsNormal --- FUNCIONA

FormStyle = fsMDIForm --- NOFUNCIONA


Si alguien puede comprobar el codigo y confirmarme el fallo, para descartar problemas en mi Compilador se lo Agradeceria un monton.....
Y si resuelve el problema mucho mejor

GRACIAS....
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

El área cliente de un MDIForm no está pensado para eso, está pensado principalmente para contener ventanas MDIChild.. lo mejor sería que metas la imagen en un TPanel y este a su vez pegado a alguno de los bordes del Form..

De todas formas tal como lo tienes lo que ocurre es que al cargar una nueva imagen en el TImage en la zona cliente de un MDIForm no se repinta correctamente, puedes forzar el repintado después de cargar una nueva imagen con la siguiente línea:

Código:
InvalidateRect(ClientHandle, 0, FALSE);



PD: Si te fijas el código que has puesto no ha salido correctamente, para que salga correctamente debes marcar la opción "Deshabilitar HTML en este mensaje" para que no confunda los "< >" con etiquetas HTML. También puedes deshabilitarlo para todos los mensajes en las opciones de tu perfil.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por contestar Leo, Con la nueva Linea de codigo va perfecto (como siempre)

Respecto a la aclaracion sobre el problema a la hora de mostrar el codigo
Tomo nota para otra vez

Gracias otra vez eres un crack.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.