Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Unit1 использует Unit2. Unit2 содержит форму, компонент Memo и StatusBar для отображения каждого реализованного метода, для диагностических целей.

3. Создайте Unit2, содержащий форму с компонентами TMemo и TStatusBar. Форма используется для отображения жизнедеятельности в модуле Unit1.pas. Это шаг не является строго обязательным, он помогает понять что происходит в данный момент между клиентом автоматизации и сервером.

4. Создайте клиент автоматизации. В нашем случае модуль имеет имя FontCli, содержит метку, показывающую текущий шрифт и кнопку, устанавливающую MyFont на сервере.

unitProject1_TLB;

{ Данный файл содержит паскалевские декларации, импортированные из библиотеки типов. Данный файл записывается во время каждого импорта или обновления (refresh) в редакторе библиотеки типов. Любые изменения в данном файле будут потеряны в процессе очередного обновления. }

{ Библиотека Project1 }

{ Версия 1.0 }

interface

usesWindows, ActiveX, Classes, Graphics, OleCtrls, StdVCL;

constLIBID_Project1: TGUID = '{29C7AC94-0807-11D1-B2BA-0020AFF2F575}';

const

{ GUID'ы класса компоненты }

Class_MyFontServer: TGUID = '{29C7AC96-0807-11D1-B2BA-0020AFF2F575}';

type

{ Предварительные объявления: Интерфейсы }

IMyFontServer = interface;

IMyFontServerDisp = dispinterface;

{ Предварительные объявления: CoClasse'ы }

MyFontServer = IMyFontServer;

{ Диспинтерфейс для объекта MyFontServer }

IMyFontServer = interface(IDispatch)['{29C7AC95-0807-11D1-B2BA-0020AFF2F575}']

functionGet_MyFont: IFontDisp; safecall;

procedureSet_MyFont( constValue: IFontDisp); safecall;

propertyMyFont: IFontDisp readGet_MyFont writeSet_MyFont;

end;

{ Объявление диспинтерфейса для дуального интерфейса IMyFontServer }

IMyFontServerDisp = dispinterface['{29C7AC95-0807-11D1-B2BA-0020AFF2F575}']

propertyMyFont: IFontDisp dispid1;

end;

{ MyFontServerObject }

CoMyFontServer = class

class functionCreate: IMyFontServer;

class functionCreateRemote( constMachineName: string): IMyFontServer;

end;

implementation

usesComObj;

class functionCoMyFontServer.Create: IMyFontServer;

begin

Result := CreateComObject(Class_MyFontServer) asIMyFontServer;

end;

class functionCoMyFontServer.CreateRemote( constMachineName: string): IMyFontServer;

begin

Result := CreateRemoteComObject(MachineName, Class_MyFontServer) asIMyFontServer;

end;

end.

{--------------------------------------------------------------------}

unitUnit1;

interface

usesComObj, Project1_TLB, ActiveX, Graphics;

typeTMyFontServer = class(TAutoObject, IMyFontServer)

private

FFont: TFont;

public

procedureInitialize; override;

destructorDestroy; override;

functionGet_MyFont: IFontDisp; safecall;

procedureSet_MyFont( constValue: IFontDisp); safecall;

end;

implementation

usesComServ, AxCtrls, Unit2;

procedureTMyFontServer.Initialize;

begin

inheritedInitialize;

FFont := TFont.Create;

end;

destructorTMyFontServer.Destroy;

begin

FFont.Free;

inheritedDestroy;

end;

functionTMyFontServer.Get_MyFont: IFontDisp;

begin

FFont.Assign(Form2.Label1.Font);

GetOleFont(FFont, Result);

end;

procedureTMyFontServer.Set_MyFont( constValue: IFontDisp);

begin

SetOleFont(FFont, Value);

Form2.Label1.Font.Assign(FFont);

end;

initialization

TAutoObjectFactory.Create(ComServer, TMyFontServer, Class_MyFontServer, ciMultiInstance);

end.

{--------------------------------------------------------------------}

unitUnit2;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

typeTForm2 = class(TForm)

Label1: TLabel;

end;

varForm2: TForm2;

implementation

{$R *.DFM}

end.

{--------------------------------------------------------------------}

unitFontCli1;

interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StdVCL, Project1_TLB;

typeTForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

FontDialog1: TFontDialog;

procedureButton1Click(Sender: TObject);

procedureFormCreate(Sender: TObject);

public

MyFontServer: IMyFontServer;

end;

varForm1: TForm1;

implementation

usesActiveX, AxCtrls;

{$R *.DFM}

procedureTForm1.Button1Click(Sender: TObject);

varTemp: IFontDisp;

begin

if(FontDialog1.Execute) then begin

Label1.Font.Assign(FontDialog1.Font);

GetOleFont(Label1.Font, Temp);

MyFontServer.Set_MyFont(Temp);

end;

end;

procedureTForm1.FormCreate(Sender: TObject);

begin

MyFontServer := CoMyFontServer.Create;

end;

end.

{--------------------------------------------------------------------}

Так для чего нам Unit1, создающий реализацию интерфейса? Интерфейс Ole, такой как, например, IFontDisp, может считаться соглашением о том, что свойства и функции будут определены в заданном формате, а функции будут реализованы как определено (для получения дополнительной информации смотри Руководство Разработчика, главу 36, «An Overview of COM» (Обзор COM). Тот факт, что интерфейс определен, не означает, что он реализован. Например, чтобы заставить определенный вами интерфейс IFontDisp быть полезным, необходимо обеспечить хранение шрифта и механизм добавления и извлечения информации об атрибутах шрифта, таких, как имя шрифта, наклонное начертание, размер и пр.

Примечание:

GetOleFont и SetOleFont определены в AxCtrls.pas. IFontDisp определен в ActiveX.pas

Использование CHARTFX.VBX

Delphi 1

Хотя это можно было бы пообсуждать и здесь, но для ChartFX существует контекстно-зависимая подсказка. Киньте компонент на форму, выберите его и нажмите F1.

VBX в приложениях DELPHI: как распространять?

Delphi 1

Чтобы использовать любые элементы управления VBX с компилированным Delphi EXE-файлом, вам необходимо распространить BIVBX11.DLL (расположен в каталоге \WINDOWS\SYSTEM – Borland при установке копирует его туда).

Расскажите, как использовать ChartFX?

Nomadicсоветует:

Лyчше на простеньком примере.

unitChart;

.......................

withChartFX do begin

Visible := false;

{ Устанавливаем режим ввода значений }

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x