Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda!, casi listo. (https://www.clubdelphi.com/foros/showthread.php?t=18553)

animal 16-02-2005 09:34:19

Ayuda!, casi listo.
 
Que tal, estoy creando este boton de tres estados con imagenes pero me faltan un par de detalles.

1- Cuando compilo el componente, me dice:
[Error] BotonJpg.pas(26): Declaration of 'MouseDown' differs from previous declaration
Y no se que tengo que hacer ya que lo he hecho igual al Move.
2- El MouseLeave me dice:
[Error] BotonJpg.pas(27): Method 'MouseLeave' not found in base class

Es lo ultimo que me falta!
Muchas gracias!.
Eduardo

unit BotonJpg;
interface

uses
SysUtils, Classes, Controls, ExtCtrls, Graphics, QControls, Messages;

type
TBotonJpg = class(TImage)
private
{ Private declarations }
FImagenNormal: TPicture;
FImagenHiLight: TPicture;
FImagenPresionado: TPicture;
procedure SetImagenNormal(Value: TPicture);
procedure SetImagenHiLight(Value: TPicture);
procedure SetImagenPresionado(Value: TPicture);
procedure Moused;
protected
{ Protected declarations }

public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
Procedure MouseMove(Shift: TShiftState; X, Y: Integer); Override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Override;
Procedure MouseLeave(AControl: TControl);Override;
published
{ Published declarations }
property ImagenNormal: TPicture read FImagenNormal write SetImagenNormal;
property ImagenHiLight: TPicture read FImagenHiLight write SetImagenHiLight;
property ImagenPresionado: TPicture read FImagenPresionado write SetImagenPresionado;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TBotonJpg]);
end;

constructor TBotonJpg.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImagenNormal := TPicture.Create;
FImagenHiLight := TPicture.Create;
FImagenPresionado := TPicture.Create;
Self.Picture := FImagenNormal;
end;

procedure TBotonJpg.SetImagenNormal(Value: TPicture);
begin
FImagenNormal.Assign(Value);
end;

procedure TBotonJpg.SetImagenHiLight(Value: TPicture);
begin
FImagenHiLight.Assign(Value);
end;

procedure TBotonJpg.SetImagenPresionado(Value: TPicture);
begin
FImagenPresionado.Assign(Value);
end;

Procedure TBotonJpg.MouseMove(Shift: TShiftState; X, Y: Integer);
Begin
if (Self.Picture <> FImagenHiLight) then
Self.Picture := FImagenHiLight;
Inherited; // y ejecutar el procedimiento Click del ascendiente
End;

Procedure TBotonJpg.MouseLeave(AControl: TControl);Override;
Begin
Self.Picture := FImagenNormal;
Inherited; // y ejecutar el procedimiento Click del ascendiente
End;

procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Override;
Begin
if (Self.Picture <> FImagenHiLight) then
Self.Picture := FImagenHiLight;
Inherited; // y ejecutar el procedimiento Click del ascendiente
End;

end.

roman 16-02-2005 14:51:03

1. Quita el override en la implementación del método.
2. El control TImage no tiene un método que se llame MouseLeave, por tanto no es un método que puedas redefinir.

// Saludos

unoccio 16-02-2005 20:09:55

1- fijate, si el cod. es tal cual lo tenés, te falta hacer pertenecer a la clase la implementación del mouseDown:
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
te falta anteponer TBotonJpg.MouseDown en la implementación de ese método.
2- MouseLeave es un método que estás introduciendo vos, por lo tanto no puede ser override, sacale esa palabra reservada y listo.

saludos


La franja horaria es GMT +2. Ahora son las 19:15:04.

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