ВУЗ:
Составители:
4. Ɋɟɚɥɢɡɭɟɦ ɦɟɬɨɞɵ Get_Color ɢ Set_Color:
function TAutoServer.Get_Color: SYSUINT;
begin
result:=Form1.Color;
end;
procedure TAutoServer.Set_Color(Value: SYSUINT);
begin
Form1.Color:=Value;
end;
5. Ɉɬɤɨɦɩɢɥɢɪɭɣɬɟ ɢ ɡɚɪɟɝɢɫɬɪɢɪɭɣɬɟ ɩɨɥɭɱɟɧɧɨɟ ɩɪɢɥɨɠɟɧɢɟ.
ɑɬɨɛɵ ɭɜɢɞɟɬɶ ɪɚɛɨɬɭ ɤɥɢɟɧɬɚ ɢ ɜɧɟɲɧɟɝɨ COM-ɫɟɪɜɟɪɚ, ɪɟɚɥɢɡɭɟɦ
ɞɥɹ ɧɚɲɟɝɨ ɩɪɢɦɟɪɚ ɤɥɢɟɧɬ.
1. ɋɨɡɞɚɣɬɟ ɧɨɜɵɣ ɩɪɨɟɤɬ-ɩɪɢɥɨɠɟɧɢɟ MyClient.dpr ɫɨ ɫɜɨɟɣ ɮɨɪ-
ɦɨɣ.
2. ȼ ɪɚɡɞɟɥɟ ɨɩɢɫɚɧɢɹ private ɮɨɪɦɵ ɫɨɡɞɚɜɚɟɦɨɝɨ ɩɪɢɥɨɠɟɧɢɹ ɜɜɟ-
ɞɢɬɟ ɩɟɪɟɦɟɧɧɭɸ Server ɬɢɩɚ Variant.
3. ɇɚ ɫɨɛɵɬɢɟ OnCreate ɢ OnDestroy ɮɨɪɦɵ ɭɫɬɚɧɨɜɢɬɟ ɩɪɨɰɟɞɭɪɭ
ɜɵɡɨɜɚ ɧɚɲɟɝɨ ɫɟɪɜɟɪɚ:
procedure TForm1.FormShow(Sender: TObject);
begin
Server:=CreateOLEObject('MyServer.AutoServer');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Server:=NULL;
end;
4. ɇɚ ɮɨɪɦɟ ɭɫɬɚɧɨɜɢɬɟ ColorDialog ɢ Button1. Ɋɟɚɥɢɡɭɣɬɟ ɫɨɛɵɬɢɟ
OnClick ɤɧɨɩɤɢ:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then Server.Color:=ColorDialog1.Color;
end;
5. Ɉɬɤɨɦɩɢɥɢɪɭɣɬɟ ɩɨɥɭɱɟɧɧɨɟ ɩɪɢɥɨɠɟɧɢɟ.
49
ɉɪɢ ɫɬɚɪɬɟ ɩɪɢɥɨɠɟɧɢɹ-ɤɥɢɟɧɬɚ ɚɜɬɨɦɚɬɢɱɟɫɤɢ ɡɚɩɭɫɤɚɟɬɫɹ ɜɧɟɲɧɢɣ
COM-ɫɟɪɜɟɪ. Ɏɨɪɦɚ ɫɟɪɜɟɪɚ ɦɟɧɹɟɬ ɫɜɨɣ ɰɜɟɬ ɜ ɫɨɨɬɜɟɬɫɬɜɢɢ ɫ ɜɵɛɪɚɧ-
ɧɵɦ ɰɜɟɬɨɦ ɜ ɞɢɚɥɨɝɨɜɨɦ ɨɤɧɟ ɤɥɢɟɧɬɚ, ɜɵɡɵɜɚɟɦɨɦ ɩɪɢ ɧɚɠɚɬɢɢ ɧɚ
ɤɧɨɩɤɭ Button1. Ɉɛɪɚɬɢɬɟ ɜɧɢɦɚɧɢɟ, ɤɨɝɞɚ ɤɥɢɟɧɬ ɡɚɜɟɪɲɚɟɬ ɪɚɛɨɬɭ, ɫɟɪ-
ɜɟɪ ɬɨɠɟ ɜɵɝɪɭɠɚɟɬɫɹ.
5.5. ɋɨɛɵɬɢɹ ɜ COM ɢ ɨɛɪɚɬɧɵɟ ɜɵɡɨɜɵ
ɉɪɢ ɪɚɡɪɚɛɨɬɤɟ ɫɟɪɶɟɡɧɵɯ COM-ɩɪɢɥɨɠɟɧɢɣ ɱɚɫɬɨ ɬɪɟɛɭɟɬɫɹ ɜɵ-
ɩɨɥɧɹɬɶ ɩɪɨɝɪɚɦɦɧɵɣ ɤɨɞ ɤɥɢɟɧɬɚ, ɟɫɥɢ ɜ COM-ɫɟɪɜɟɪɟ ɩɪɨɢɡɨɲɥɨ ɬɨ
ɢɥɢ ɢɧɨɟ ɞɟɣɫɬɜɢɟ. Ɉɫɨɛɟɧɧɨ ɷɬɨ ɚɤɬɭɚɥɶɧɨ, ɟɫɥɢ COM-ɫɟɪɜɟɪ ɩɨɞɞɟɪɠɢ-
ɜɚɟɬ ɞɢɚɥɨɝɨɜɵɟ ɨɤɧɚ ɞɥɹ ɜɜɨɞɚ ɤɚɤɢɯ-ɥɢɛɨ ɞɚɧɧɵɯ ɢ ɩɟɪɟɞɚɱɢ ɪɟɡɭɥɶɬɚɬɚ
ɤɥɢɟɧɬɭ. Ɉɫɧɨɜɧɚɹ ɢɞɟɹ ɦɟɯɚɧɢɡɦɚ ɫɨɛɵɬɢɣ ɫɥɟɞɭɸɳɚɹ: ɤɥɢɟɧɬ ɩɪɢ ɩɨɞ-
ɤɥɸɱɟɧɢɢ ɤ COM-ɫɟɪɜɟɪɭ ɩɟɪɟɞɚɟɬ ɢɧɬɟɪɮɟɣɫ, ɜ ɤɨɬɨɪɨɦ ɪɟɚɥɢɡɨɜɚɧɵ
ɮɭɧɤɰɢɢ ɫɨɛɵɬɢɣ. ɂɧɬɟɪɮɟɣɫ, ɩɟɪɟɞɚɜɚɟɦɵɣ ɤɥɢɟɧɬɨɦ COM-ɫɟɪɜɟɪɭ, ɧɚ-
ɡɵɜɚɟɬɫɹ ɢɧɬɟɪɮɟɣɫɨɦ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ.
Ⱦɥɹ ɪɟɚɥɢɡɚɰɢɢ ɤɨɦɩɨɧɟɧɬɚ, ɩɨɞɞɟɪɠɢɜɚɸɳɟɝɨ ɦɟɯɚɧɢɡɦ ɨɛɪɚɛɨɬɤɢ
ɫɨɛɵɬɢɣ ɢ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ, ɜ ɦɚɫɬɟɪɟ Automation Object Wizard ɧɭɠɧɨ
ɭɫɬɚɧɨɜɢɬɶ ɮɥɚɠɨɤ Generate Event support code. ɗɬɨ ɩɨɡɜɨɥɢɬ ɫɝɟɧɟɪɢɪɨ-
ɜɚɬɶ ɲɚɛɥɨɧ ɫɨɡɞɚɜɚɟɦɨɝɨ ɤɨɦɩɨɧɟɧɬɚ ɫ ɩɨɞɞɟɪɠɤɨɣ ɫɨɛɵɬɢɣ:
<ɢɦɹ ɤɨɦɩɨɧɟɧɬɚ> = class(TAutoObject, IConnectionPointContainer,
{<ɢɧɬɟɪɮɟɣɫɵ ɤɨɦɩɨɧɟɧ-
ɬɚ>})
private
{ Private declarations }
FConnectionPoints: TConnectionPoints;
FConnectionPoint: TConnectionPoint;
FSinkList: TList;
FEvents: <ɢɧɬɟɪɮɟɣɫ ɫɨɛɵɬɢɣ>;
public
procedure Initialize; override;
protected
{ Protected declarations }
property ConnectionPoints: TConnectionPoints
read FConnectionPoints implements IConnectionPointContainer;
procedure EventSinkChanged(const EventSink: IUnknown); over-
ride;
end;
ɗɬɨ ɨɫɧɨɜɧɵɟ ɫɜɨɣɫɬɜɚ ɢ ɦɟɬɨɞɵ ɞɥɹ ɩɨɞɞɟɪɠɤɢ ɤɨɦɩɨɧɟɧɬɨɦ COM-
ɫɟɪɜɟɪɚ ɦɟɯɚɧɢɡɦɚ ɫɨɛɵɬɢɣ ɢ ɮɭɧɤɰɢɢ ɨɛɪɚɬɧɨɝɨ ɜɵɡɨɜɚ
. ɉɪɨɰɟɞɭɪɵ
50
4. ��������� ������ Get_Color � Set_Color: ��� ������ ����������-������� ������������� ����������� �������
function TAutoServer.Get_Color: SYSUINT; COM-������. ����� ������� ������ ���� ���� � ������������ � ������-
��� ������ � ���������� ���� �������, ���������� ��� ������� ��
begin ������ Button1. �������� ��������, ����� ������ ��������� ������, ���-
result:=Form1.Color; ��� ���� �����������.
end;
procedure TAutoServer.Set_Color(Value: SYSUINT);
5.5. ������� � COM � �������� ������
begin
Form1.Color:=Value; ��� ���������� ��������� COM-���������� ����� ��������� ��-
end; ������� ����������� ��� �������, ���� � COM-������� ��������� ��
��� ���� ��������. �������� ��� ���������, ���� COM-������ ��������-
5. �������������� � ��������������� ���������� ����������. ���� ���������� ���� ��� ����� �����-���� ������ � �������� ����������
����� ������� ������ ������� � �������� COM-�������, ��������� �������. �������� ���� ��������� ������� ���������: ������ ��� ���-
��� ������ ������� ������. �������� � COM-������� �������� ���������, � ������� �����������
������� �������. ���������, ������������ �������� COM-�������, ��-
1. �������� ����� ������-���������� MyClient.dpr �� ����� ���- �������� ����������� ��������� ������.
���. ��� ���������� ����������, ��������������� �������� ���������
2. � ������� �������� private ����� ������������ ���������� ���- ������� � ��������� ������, � ������� Automation Object Wizard �����
���� ���������� Server ���� Variant. ���������� ������ Generate Event support code. ��� �������� ���������-
3. �� ������� OnCreate � OnDestroy ����� ���������� ��������� ���� ������ ������������ ���������� � ���������� �������:
������ ������ �������: <��� ����������> = class(TAutoObject, IConnectionPointContainer,
procedure TForm1.FormShow(Sender: TObject); {<���������� ��������-
��>})
begin private
Server:=CreateOLEObject('MyServer.AutoServer'); { Private declarations }
end; FConnectionPoints: TConnectionPoints;
FConnectionPoint: TConnectionPoint;
procedure TForm1.FormDestroy(Sender: TObject);
FSinkList: TList;
begin FEvents: <��������� �������>;
Server:=NULL; public
end; procedure Initialize; override;
protected
4. �� ����� ���������� ColorDialog � Button1. ���������� ������� { Protected declarations }
OnClick ������: property ConnectionPoints: TConnectionPoints
procedure TForm1.Button1Click(Sender: TObject); read FConnectionPoints implements IConnectionPointContainer;
begin procedure EventSinkChanged(const EventSink: IUnknown); over-
if ColorDialog1.Execute then Server.Color:=ColorDialog1.Color; ride;
end; end;
5. �������������� ���������� ����������. ��� �������� �������� � ������ ��� ��������� ����������� COM-
������� ��������� ������� � ������� ��������� ������. ���������
49 50
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »
