 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Jue 30 Oct, 2008 11:30 am Asunto: Problema incomprensible con FORM |
|
|
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 |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Vie 31 Oct, 2008 11:42 am Asunto: compriobar |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 31 Oct, 2008 12:25 pm Asunto: |
|
|
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 |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Vie 31 Oct, 2008 1:04 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|