|
前節の続きです。
プログラムが複雑になってきましたので、少しまとめてみます。今後、画面への作図関係が増えていくと予想出来ますので、それらを1つのユニットにまとめましょう。
まずは、Delphiのメニュー「ファイル|新規作成|ユニット」を実行します。すると、プロジェクトに Unit1.pas(既に Unit1.pasがある場合には、Unit2.pas、・・・)として下記のようなファイルが新規作成されます。
unit Unit1;
interface
implementation
end. |
interface節に、外部から参照する変数(グローバル変数)の宣言や外部から呼び出す関数の一覧を記述します。そして、implementation節に、その関数の内容を記述します。その関数内でDelphi標準の各種関数を使う場合には、interface節に、uses節を自分で追加する必要がありますので注意して下さい。
例:IntToStr関数を利用したい場合
IntToStr関数は SysUtilsルーチン内で定義されています
unit Unit1;
interface
uses
SysUtils;
function ABC(X:integer):String;
implementation
function ABC(X:integer):String;
begin
Result := IntToStr(X);
end;
end. |
使用する関数がどこで定義されているのかを調べるには、ヘルプを見るのが簡単です。なお、「System」と記されているものは uses節に記述する必要はありません。
※フォームやコントロールのプロパティを参照する場合には、uses節に色々なユニットを記述する必要がありますが、基本的に、新規ユニット内で他のフォーム内のプロパティ等を参照する事は避けておく方が無難です。
画面への作図関係の関数を、「UnitGraph」としてまとめる事にして、メインプログラムでは、MoveTo・LineTo等を直接行わないようにして、UnitGraph内に独自の関数を用意して、その関数を呼び出す事にします。
なお、
procedure G_CLS(x1,y1,x2,y2:integer) ;
begin
with PaintBox1.Canvas do begin
with Pen do begin
Mode := pmCopy ;
Color := clWhite;
・・・・ |
とはせず
procedure G_CLS(C:TCanvas;x1,y1,x2,y2:integer) ;
begin
with C do begin
with Pen do begin
Mode := pmCopy ;
Color := clWhite;
・・・・ |
としているのは、
@このユニットのuses節にフォーム等を指定したくない
(uses節が多くなると重い感じがする)
A将来、他への転用を可能にしたい
(例えば、全く別のImageコンポーネントへの描画をしたくなる、かもしれません)
B関数はなるべく汎用的に作っておきたい
等の理由からです。
取りあえず、ここまでのサンプルプログラムです。
内容は、前節とほとんど変わっていません。
【サンプルプログラムのソース】
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|