![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
tienes razon, no queria meter el codigo porque es c++ y no quiero asustar pero un ejemplo en delphi me viene bien
este es el archivo de cabecera (.h) Código:
//---------------------------------------------------------------------------
#ifndef Image1H
#define Image1H
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TImage1 : public TImage
{
private:
protected:
public:
__fastcall TImage1(TComponent* Owner);
__published:
//aqui van mis supuestos eventos personalizado (definicion)
void __fastcall Image1MouseEnter(TObject *Sender);
void __fastcall Image1Click(TObject *Sender);
};
//---------------------------------------------------------------------------
#endif
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Image1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TImage1 *)
{
new TImage1(NULL);
}
//---------------------------------------------------------------------------
__fastcall TImage1::TImage1(TComponent* Owner)
: TImage(Owner)
{
}
//---------------------------------------------------------------------------
namespace Image1
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TImage1)};
RegisterComponents("Standard", classes, 0);
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//aquie van la implementacion de mis eventos (no creo que sea asi)
void __fastcall TImage1::Image1MouseEnter(TObject *Sender)
{
this->Visible=false;
}
void __fastcall TImage1::Image1Click(TObject *Sender)
{
this->Visible=false;
}
despues de crear mi nueva clase, debo llamarla desde otro lado, la instancio de esta forma Código:
TImage1 *temp= new TImage1(Owner);//tambien coloque como parametro Form1, Application y no vi cambios
// ahora modifico los atritutos para acomodar
temp->Left=2;
temp->Top=2;
temp->Picture->LoadFromFile("00060001.BMP");
temp->Width=200;
temp->Height=200;
temp->Parent=Form1; // indica que form1 es el padre, y hace que temp se vuelva visible
|
|
#2
|
||||
|
||||
|
KeyBoy tiene razon, le asigno un property donde escribo lo que quiero que haga, pero el problema esta en que el formulario no me pasa el evento porque en el momento de compilacion no estan los objetos implementados ni definidos, por lo tanto, si hago click en el objeto 98 este se tiene que hacer invisible, pero para eso form me debe pasar el evento a ese objeto, el cual este reaccionara con el property definido por mi, dentro del property va un
this->visible=false; o this.visible:=false; |
|
#3
|
|||
|
|||
|
No entiendo. Disculpa que escriba en delphi pero me marea C
![]() Tú puedes definir el evento en tu formulario:
Y es éste el evento que asignas en la ejecución. Dado que Sender es el control que genera el evento, equivale al this (Self en delphi) de tu clase. Bye |
|
#4
|
||||
|
||||
|
keyboy estoy viendo el equivalente de
(Sender as TImage) parece que estamos cerca, dentro de un rato doy la solucion (gracias a keyboy) o sigo con las preguntas |
|
#5
|
|||
|
|||
|
Quizá me equivoco, pero creo que el equivalente al operador as en C++ Builder es algo que se llama dynamic typecasting.
Bye |
|
#6
|
|||
|
|||
|
#7
|
||||
|
||||
|
Mi codigo de fuente primitivo (porque el programa final es el juego de encerrar al gato, proyecto de la materia gestion de datos -UTN)
juego codigo de fuente: http://rapidshare.com/files/102919304/enc_gato.rar.html captura del programa (al hacer click sobre cualquier imagen esta se hace invisible) ![]() el problema estaba en que yo definia los eventos en la nueva clase creada, cuando en realidad tenia ke definier el evento en el formulario (o en el objeto contenedor, esta vez era el formulario) y despues cuando lo creo en forma dinamica asignar al evento de mi objeto instanciado el evento que he creado en el formulario contenedor cosas a tener en cuenta. al crear dinamicamente debo hacer lo siguiente (temp es mi ojeto creado) temp->Parent=Form1; //asignar un objeto contenedor, es necesario para que temp pueda verse temp->OnClick = ImagenClick;//asignacion del evento (gracias keyboy, tu ayuda no solo soluciona los problemas sino suben la moral en el momento de desarrollo, uno no se siente tan solo) y definir en el formulario contenedor el efento ImagenClick (nombrado a discresion) en el archivo cabecera de la forma: Código:
void __fastcall ImagenClick(TObject *Sender); (dentro de __published) Código:
void __fastcall TForm1::ImagenClick(TObject *Sender)
{
TImage *Aux_Ima = (TImage *)(Sender);
Aux_Ima->Visible=false;
}
al que sender nos envia la ayuda de keyboy me hizo caer en esta pagina que es la fuente y soluciono el problema porque la verdad que no tenia idea para que servia ese tal "sender" FUENTE Última edición por grandmasterdari fecha: 28-03-2008 a las 02:46:28. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| generar bd My Sql en tiempo de ejecucion | meosre | MySQL | 7 | 05-01-2008 15:54:30 |
| Crear componente Image en tiempo d Ejecucion | Jessica666 | Gráficos | 6 | 30-05-2004 01:58:22 |
| Tiempo de ejecucion? | st7 | Varios | 3 | 11-05-2004 22:03:28 |
| Creacion de componente en tiempo de ejecución | cone220 | OOP | 1 | 16-09-2003 03:47:16 |
| ¿Como saber cuabdo un componente esta invisible en tiempo de ejecuciòn? | danytorres | Varios | 1 | 20-05-2003 15:51:21 |
|