Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Evento onChange en TImage (https://www.clubdelphi.com/foros/showthread.php?t=66681)

MAXIUM 07-03-2010 15:59:51

Evento onChange en TImage
 
Cuando cambie la imagen en un TImage, necesito que haga algo. ¿Cual sería el código?

BrunoBsso 07-03-2010 22:48:07

Se me ocurre que podrías hacer tu propio procedimiento que haga algo, y cada vez que modifiques la imagen (porque el usuario es el que modifica la imagen) llames a ese procedimiento.
Código Delphi [-]
//un procedimiento creado por vos
procedure OnChangeImagen(Argumentos_que_quieras);
begin
  //hacé lo que necesites
end;

//OnClick de un botón cualquiera
Image1.Picture.Bitmap.LoadFromFile(RutaArchivo);
//también cuando hagas Image1.Picture.Bitmap.Assign(Argumento); que se usa para asignar otra imagen ya cargada
OnChangeImagen(Argumentos_necesarios);
Saludos!

MAXIUM 08-03-2010 00:15:12

Más ideas por favor.

Como usar el procedimiento OnChange, este evento si existe, pero no me aparece en el inspector de objetos y no se como se hace la declaración

Image1.Picture.OnChange(Sender: TObject)

BrunoBsso 08-03-2010 03:02:11

Bueno, entonces tendrías que crear algún procedimiento llamado OnChangeImg(Sender:TObject).
Acá te dejo un ejemplo, vos después modificalo a tu gusto.
Código Delphi [-]
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure OnChangeImg(Sender:TObject); //Tu propio OnChange
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnChangeImg(Sender:TObject);
//Este PROC tiene que estar declarado en el form que lo use
begin
  Self.Refresh; //Si no refrescas, no carga la imagen
  ShowMessage('La imagen cambió.');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.Bitmap.LoadFromFile('Una imagen cualquiera');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Asigno el OnChangeImg a Image1.Picture.Bitmap.OnChange
  Image1.Picture.Bitmap.OnChange:=OnChangeImg;
  {Si lo asignas a Image1.Picture.OnChange, llama dos veces al evento (una porque cambia la propiedad Picture y otra porque cambia la propiedad Bitmap)}
end;

Saludos!


La franja horaria es GMT +2. Ahora son las 21:03:21.

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