CorelDRAWでマクロを利用するためのドキュメント「3.3 - What are the main elements of automation?」の和訳です。
あなたが、これまでに、C++、Delphi、Javaで、オブジェクト指向のコードを開発したことがある場合、あなたは、すでに、"object"、"class"、"property"、と"method"のような、プログラミングに関連した概念をよく知っています。しかしながら、Corel DESIGNER、CorelDRAW、Corel PHOTO-PAINTの自動化に適用される用語を再検討してみましょう。
このトピックの内容
In this topic
このトピックには、次のサブトピックが含まれています。
- オブジェクト・モデルとは、何ですか?(What is an object model?)
- クラスとは、何ですか?(What is a class?)
- コレクションとは、何ですか?(What is a collection?)
- プロパティとは、何ですか?(What is a property?)
- メソッドとは、何ですか?(What is a method?)
- イベントとは、何ですか?(What is event?)
- 列挙体とは、何ですか?(What is enumeration?)
- 定数とは、何ですか?(What is constant?)
オブジェクト・モデルとは、何ですか?
オブジェクト・モデルは、アプリケーションを構成する、items(または"objects")の階層を表します。そして、その階層の範囲内で、オブジェクトの相互関係を定義します。オブジェクト・モデルでは、それぞれのオブジェクトは、さらに別のオブジェクトの子の他のオブジェクトの子などです。さらにまた、オブジェクト・モデルのそれぞれのオブジェクトは、プロパティ、メソッド、イベント、または、これらのアイテムの組み合わせによって、定義されます。
高レベルの構造を提供することに加えて、また、オブジェクト・モデルを使用すると、さまざまな方法でオブジェクト型(あるいは「クラス」)を使用できます。たとえば、それぞれが"group"型、あるいは、他の型のものです。"rectangle"、"curve"、"text"のような、それぞれが"group"型や他の型のものです。
この高度な編成により、オブジェクト・モデルが使いやすくなり、その上、強力です。
オブジェクト・モデルは、自動化で、どのように使用されますか?
How is an object model used in automation?
Corel DESIGNER、CorelDRAWやCorel PHOTO-PAINTを自動化することは、文書内で、いろいろなオブジェクトにアクセスするために、アプリケーションのオブジェクト・モデルを使用することにより、達成されます。そして、それらのオブジェクトの変更をします。
Corel DESIGNER、CorelDRAWとCorel PHOTO-PAINTで、Applicationオブジェクトは、オブジェクト階層の上部を表示します:プログラムそのもの。すべてのオブジェクトは、アプリケーションの子供たちや孫(または曾孫など)です。
Applicationオブジェクトから開始し、あなたは、オブジェクト・モデルで、あなたが望むもの、そして、通常、より具体的なオブジェクトを見つけるまで、階層の層を"drill down"できます。望むオブジェクトを参照するために、あなたは、オブジェクト階層のそれぞれのレベルを区切るために、標準表記を使用する必要があります。多くのオブジェクト指向言語のように、自動化環境では、ピリオドや"ドット演算子" (.)を使用して示す必要があります。それは、左側のオブジェクトのメンバー(あるいは、子)の右側のオブジェクトです。
Application.Documents(1).Pages(1).Layers(1).Shapes(1).Name = "ABC"
オブジェクトには、ショートカットを利用できない限り(あるいは、それが、暗黙的、あるいは、暗黙的な意味を持たない限り)、その完全な階層の(または"完全修飾")参照が必要です。オブジェクト・ショートカットは、オブジェクトの省略しない書き方のバージョンのための単なる構文上の置き換えです。たとえば、ショートカットのActiveLayerオブジェクトは、ショートカット・オブジェクトのActiveSelectionが、省略しない書き方のバージョンのApplication.ActiveDocument.Selectionを置き換える間、省略しない書き方のバージョンのApplication.ActiveDocument.ActivePage.ActiveLayerを置き換えます。
オブジェクト・ショートカットの詳細については、「オブジェクト・ショートカットを使用する」を参照してください。
クラスとは、何ですか?
What is a class?
クラスは、オブジェクトの定義や説明です。クラスは、アプリケーションで、オブジェクトの型を適用するプロパティ、メソッド、イベントの概要を示します。;それは、その型のクラスの、すべてのオブジェクトのためのひな形として機能します。比喩を使用するために、クラス"car"は、エンジンと4つの車輪付いた小さい乗物です。
オブジェクトは、クラスのインスタンスです。車の比喩を拡張するために、運転する目的で購入した実際の物質の車は、オブジェクトです。(つまり、クラス"car"のインスタンス)。
Corel DESIGNER、CorelDRAWとCorel PHOTO-PAINTの文脈で、それぞれの開いた文書は、Documentクラスのインスタンスです。文書におけるそれぞれのページは、Pageクラスのインスタンスです。そして、それぞれのレイヤー(そして、それぞれのレイヤー上のそれぞれの形状)は、より多くのクラスのより多くのインスタンスです。たとえば、文書は、ソフトウェア・プログラムに、Documentクラスを表示します。しかしながら、ActiveDocumentは、1つのオブジェクトに特別な参照を作成するため、そのクラス内でオブジェクトを表示します。
既に説明したように、多くの場合、オブジェクトは、他の小さなオブジェクトで構成されています。たとえば、carには、"wheel"クラスの4つのオブジェクトと"headlight"クラスの2つのオブジェクトなどが含まれています。これら、それぞれの子オブジェクトは、そのクラス型と同じプロパティとメソッドを持っています。特に、それぞれのオブジェクトを参照するとき、オブジェクトのこの親子関係は、認識すべき重要な関係です。
いくつかのクラスは、親から機能を「継承」します。たとえば、Corel DESIGNER、CorelDRAWとCorel PHOTO-PAINTの文脈で、Shape型は、Rectangle、Ellipse、CurveとTextを含む、多くのサブタイプ(または「継承型」)を持っています。これらのサブタイプのすべては、移動する、そして、形状を変更する、そして、色を設定するためのメソッドが含まれる、Shape型の基本的なメンバーを利用することができます。しかしながら、サブタイプは、それら独自の専門メンバーを持っています。;たとえば、Rectangleは、角半径を持つことができます。一方、Textには、Fontプロパティが関連付けられています。
コレクションとは、何ですか?
What is a collection?
コレクションは、オブジェクトの配列に似ています。;それは、型に類似しているオブジェクトのグループが含まれるオブジェクトです。これらのオブジェクトは、同じプロパティ、メソッドとイベントを共有しています。そして、それらは、コレクション内で、インデックス番号や名前により一意に識別されています。コレクション・オブジェクトは、同じように動作し、常に複数形です。たとえば、文書は、ソフトウェア・プログラムで、Documentsコレクション・クラスを表示します。しかしながら、Documents.Item(1)は、そのコレクション内の最初のDocumentオブジェクトを参照します。
プロパティとは、何ですか?
What is a property?
プロパティは、オブジェクトの属性や特性の質を表すという点で、形容詞に似ています。プロパティを返したり、設定することができます。あるいは、それらは、読み取り専用にすることができます。
ほとんどのクラスは、プロパティを持っています。具体例として、クラス"car"のプロパティは、小さい、エンジンを持っている、そして、それは、4つの車輪を持っています。クラス"car"のすべてのインスタンス(つまり、そのクラスのあらゆるオブジェクト)は、色、速度と座席数のような、プロパティも持っています。読み取り専用プロパティは、クラスの設計によって修正されています。;たとえば、車輪や座席の数は(通常)車ごとに変わりません。しかしながら、他のプロパティは、オブジェクトの作成後に変更できます。;たとえば、車の速度は、上下ができます。そして、少し助けを借りて、その色は、変更することができます。
Corel DESIGNER、CorelDRAWとCorel PHOTO-PAINTの文脈では、Documentオブジェクトは、名称、解像度と水平および垂直のルーラー・ユニットを備えています;それぞれの形状は、位置と回転係数と同じように、outlineプロパティとfillプロパティを持っています。;そして、テキスト・オブジェクトは、テキスト自体が含まれる場合があるテキスト・プロパティを持っています。たとえば、ActiveDocument.Nameは、DocumentオブジェクトのNameプロパティを表示します;それは、アクティブ文書の名称を指定します。
メソッドとは、何ですか?
What is a method?
メソッドは、オブジェクトによって、あるいは、オブジェクト上で実行できる動作を表すという点で動詞に似ています。クラス"car"の例では、車を、より速く、より遅く動かすことができます。そのため、クラスのための2つのメソッドは、"accelerate"と"decelerate"です。
Corel DESIGNER、CorelDRAWとCorel PHOTO-PAINTの文脈で、文書には、新しいページを作成するためのメソッドがあります。レイヤーには、新しい形状を作成するためのメソッドがあります。そして、形状は、変換と効果を適用するためのメソッドを持っています。たとえば、ActiveDocument.Closeは、DocumentオブジェクトのCloseメソッドを表示します;それは、アクティブな文書を閉じます。
イベントとは、何ですか?
What is event?
イベントは、オブジェクト内で行われる動作を表すという点で名詞に似ています。イベントは、マウスをクリックする、キーを押す、あるいは、システム・タイマーのような、動作によって引き起こされます。イベントは、そのオブジェクトで、適切なトリガーに反応するコードを作成することができます。
たとえば、ActiveDocument.AfterSaveイベントは、それが保存されたあと、Documentオブジェクトで動作をトリガーします。
列挙体とは、何ですか?
What is enumeration?
列挙体(「列挙型」とも呼ばれる)は、マクロのためにコーディングの手順と関数の固定値を表示します。変数が変化するデータ値を一時的に保存するのに対して、列挙体の値は、変化しません。
定数とは、何ですか?
What is constant?
定数は、列挙体のインスタンスです。そして、列挙体は、類似した定数を一緒にグループ化します。たとえば、cdrPageOrientationは、列挙体です。まだ、cdrPortraitとcdrLandscapeを含む、いくつかの定数が含まれています。