Основы COM. Рудалев В.Г - 27 стр.

UptoLike

27
2.2.2. Обращение к серверу
Откройте новый проект и сохраните его в папке, где находится файл In-
ProcServer.dll . Используйте два компонента TImage для вывода исходного и
преобразованного изображений и компонент TOpenPictureDialog.
unit TestUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ExtDlgs,
ActiveX, ComObj, AxCtrls, InProcServer_Tlb;
type
TForm1 = class(TForm)
btLoad: TButton;
btChange: TButton;
imSource: TImage;
imResult: TImage;
pdOpen: TOpenPictureDialog;
procedure btLoadClick(Sender: TObject);
procedure btChangeClick(Sender: TObject);
private
PicDisp: IPictureDisp;
srv: ISetImage;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btLoadClick(Sender: TObject);
begin
if pdOpen.Execute then
imSource.Picture.LoadFromFile(pdOpen.FileName);
end;
procedure TForm1.btChangeClick(Sender: TObject);
begin
if pdOpen.FileName<>'' then
begin
srv:=CreateComObject(CLASS_ChangeImage) as ISetImage;
srv.Paint(pdOpen.FileName,PicDisp);
SetOlePicture(imResult.Picture, PicDisp);
end
else
                                         27
2.2.2. О бращ ени ексерверу
О ткрой те нов ы й проект и сохрани те его в папке, гд е наход и тся фай л In-
ProcServer.dll . И спольз уй тед в а компонента TImage –д ляв ы в од а и сход ного и
преобраз ов анного и з ображ ени й и компонентTOpenPictureDialog.
unit TestUnit;
interface
uses
   Windows, Messages, SysUtils, Classes, Graphics,
   Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ExtDlgs,
   ActiveX, ComObj, AxCtrls, InProcServer_Tlb;
type
   TForm1 = class(TForm)
       btLoad: TButton;
       btChange: TButton;
       imSource: TImage;
       imResult: TImage;
       pdOpen: TOpenPictureDialog;
       procedure btLoadClick(Sender: TObject);
       procedure btChangeClick(Sender: TObject);
   private
       PicDisp: IPictureDisp;
       srv: ISetImage;
       { Private declarations }
   public
       { Public declarations }
   end;
var
   Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.btLoadClick(Sender: TObject);
begin
  if pdOpen.Execute then
     imSource.Picture.LoadFromFile(pdOpen.FileName);
end;

procedure TForm1.btChangeClick(Sender: TObject);
begin
  if pdOpen.FileName<>'' then
  begin
    srv:=CreateComObject(CLASS_ChangeImage) as ISetImage;
    srv.Paint(pdOpen.FileName,PicDisp);
    SetOlePicture(imResult.Picture, PicDisp);
  end
  else