gedge73
asked on
Creating Image Viewer Component (Again!)
Hi, I am making an Image viewer component in Delphi 7 that displays only bmp's. I have placed all of my sub components in a TPanel, including
an Image Box
a Load File Button
An exit (close) button
A label that displays the file size
I have managed to code where I want my buttons , labels and image box to be, but what I want to know is how I add events to the buttons, what code do I add to make the exit button close and to open a bmp?
I first made an application with all of the functionality working, just need to know how to transfer that to the compnent code?
Any ideas would be gratefully appreciated.
I have already asked this question before and I got a great solution from expert dinilud (his code is below) but I forgot to ask him how I could retrieve & show another 2 image properies in a label
1. File size in bytes or MB
2. Date file was created.
Cheers
an Image Box
a Load File Button
An exit (close) button
A label that displays the file size
I have managed to code where I want my buttons , labels and image box to be, but what I want to know is how I add events to the buttons, what code do I add to make the exit button close and to open a bmp?
I first made an application with all of the functionality working, just need to know how to transfer that to the compnent code?
Any ideas would be gratefully appreciated.
I have already asked this question before and I got a great solution from expert dinilud (his code is below) but I forgot to ask him how I could retrieve & show another 2 image properies in a label
1. File size in bytes or MB
2. Date file was created.
Cheers
unit ImageViewer;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, StdCtrls,ExtDlgs,Forms,Graphics;
type
TImageViewer = class(TPanel)
private
{ Private declarations }
FLoadBmpBtn: TButton;
FExitBtn: TButton;
FInfoBtn: TButton;
FImage1: TImage;
FCreatedLabel: TLabel;
FSizeLabel: TLabel;
FSizeLabelCaption: TLabel;
procedure FExitBtnClick(Sender: TObject);
procedure FLoadBmpBtnClick(Sender: TObject);
function GetPicture:TPicture;
procedure SetPicture(Value:TPicture);
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
published
{ Published declarations }
property Picture:TPicture read GetPicture write SetPicture;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TImageViewer]);
end;
constructor TImageViewer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Caption:=' ';
SetBounds(Left,Top,260,345);
FLoadBmpBtn:=TButton.Create(Self);
FLoadBmpBtn.Parent:=Self;
FLoadBmpBtn.Caption:='Laod';
FLoadBmpBtn.SetBounds(85,305,80,25);
FLoadBmpBtn.Anchors:=[akBottom,akRight];
FLoadBmpBtn.OnClick:=FLoadBmpBtnClick;
FExitBtn:= TButton.Create(Self);
FExitBtn.Parent:=Self;
FExitBtn.Caption:='Exit';
FExitBtn.SetBounds(167,305,80,25);
FExitBtn.Anchors:=[akBottom,akRight];
FExitBtn.OnClick:=FExitBtnClick;
FInfoBtn:= TButton.Create(Self);
FInfoBtn.Parent:=Self;
FInfoBtn.Caption:='Info';
FInfoBtn.SetBounds(2,305,80,25);
FInfoBtn.Anchors:=[akBottom,akRight];
FImage1:=TImage.Create(Self);
FImage1.Parent:=Self;
FImage1.SetBounds(8,8,243,243);
FImage1.Anchors:=[akLeft,akTop,akRight,akBottom];
FImage1.Stretch:=True;
FSizeLabelCaption:= TLabel.Create(Self);
FSizeLabelCaption.Parent:=Self;
FSizeLabelCaption.SetBounds(8,256,32,13);
FSizeLabelCaption.Caption:='Size: ';
FSizeLabelCaption.Anchors:=[akBottom,akLeft];
FSizeLabel:= TLabel.Create(Self);
FSizeLabel.Parent:=Self;
FSizeLabel.SetBounds(FSizeLabelCaption.Left+FSizeLabelCaption.Width,256,32,13);
FSizeLabel.Caption:='0 X 0';
FSizeLabel.Anchors:=[akBottom,akLeft];
end;
destructor TImageViewer.Destroy;
begin
FSizeLabelCaption.Free;
FSizeLabel.Free;
FImage1.Free;
FInfoBtn.Free;
FLoadBmpBtn.Free;
FExitBtn.Free;
inherited;
end;
procedure TImageViewer.FExitBtnClick(Sender: TObject);
var c:TComponent;
begin
c:=Self;
While TWinControl(C).Parent<>nil do
begin
if TWinControl(C).Parent is TCustomForm then
begin
TCustomForm(TWinControl(C).Parent).Close;
Break;
end;
c:=TWinControl(C).Parent;
end;
{ if TWinControl(C).Parent is TCustomForm then
TCustomForm(TWinControl(C).Parent).Close;}
end;
procedure TImageViewer.FLoadBmpBtnClick(Sender: TObject);
var f:TOpenPictureDialog;
begin
f:=TOpenPictureDialog.Create(Self);
try
if f.Execute then
begin
FImage1.Picture.LoadFromFile(f.FileName);
FSizeLabel.Caption:=IntToStr(FImage1.Picture.Width)+' X '+
IntToStr(FImage1.Picture.Height);
end;
finally
f.Free;
end;
end;
function TImageViewer.GetPicture:TPicture;
begin
Result:=FImage1.Picture;
end;
procedure TImageViewer.SetPicture(Value:TPicture);
begin
FImage1.Picture.Assign(Value);
FSizeLabel.Caption:=IntToStr(FImage1.Picture.Width)+' X '+
IntToStr(FImage1.Picture.Height);
end;
end.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER