AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
CAD作ろ! ソースプログラムの複数化
プログラムの機能を増やしていくと、どんどん複雑になっていき、プログラムも読みにくくなってしまいます。そうなってくると、自分で作っているにも関わらず、混乱してしまったり、思わぬプログラム上の不具合(バグ)を作ってしまったりします。
それを防ぐには、
 1)プログラムを整理する
 2)適切なコメントを付ける
  (不要なコメントは付けない、必要なコメントを付ける)
 3)他の人が見ても分かるように書く
 4)適度にソースプログラムを分割・複数化する
 5)変数名や関数名・手続き名は、分かりやすくする
等の処置を施します。
 
それでは前章のプログラムを少し整理してみます。
 
@図面・ウインドウ関連の変数を別ユニットにして外部宣言をし、変数名を変更する。
 x1,y1のような変数名だと勘違いしてしまう可能性がありますので、WD_x1,WD_y1のように、グローバル変数は「大文字2文字+'_'+〜」というルールで名前を付ける事にして、ローカル変数と区別しやすくします。なお、Delphiでは、変数の小文字と大文字は区別されず同じものとして扱われますので注意して下さい。
 変数宣言だけを行う別ユニットを作りたい場合は、メニュー「ファイル|新規作成|ユニット」を行い、
unit Unit1;
 
interface
 
implementation
 
end.
   ↓
unit Unit1;
 
interface
 
var
 SC_x,SC_y : Integer ; // 画面ドットサイズ
 PA_x,PA_y : Double ; // 用紙サイズ
 ・・・
 
implementation
 
end.
のように変数宣言部を追加します。すぐにユニットを保存しておくのが良いでしょう(今回の場合は Unit0033va.pasとして保存しています)。メニュー「表示|プロジェクトマネージャー」で、メインのユニットと、このユニットの2つがある事を確認して下さい。
 このユニットを利用するメインのユニットの uses節に、このユニットの名前を追加します。
unit Unit0033;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus ;
・・・
     ↓
unit Unit0033;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, Unit0033va ;
・・・
 
A画面移動・拡大のボタンを別の画面(フォーム)で行う。
 サブ画面を作成したい場合には、メニュー「ファイル|新規作成|フォーム」を行い、Nameプロパティにそのフォームにふさわしい名前を付けて、取りあえず直ぐに保存をし(今回の場合は Unit0033a.pasとして保存しています)、メニュー「表示|プロジェクトマネージャー」で3つのユニットがある事を確認して下さい。
 このフォームを呼び出して表示させるメインのユニットの uses節に、このフォームの名前を追加します(Nameプロパティではなくファイル名から「.pas」を省いたもの)。
 さて、このフォームから、メイン側にある関数や手続きを利用したい場合には、それらをグローバル変数と同じく、グローバル関数/手続きにする手法もありますが、それがやりにくい場合・出来ない場合には、
var
FmWindowPal: TFmWindowPal;
 
implementation
 
{$R *.dfm}
     ↓
var
FmWindowPal: TFmWindowPal;
 
implementation
 
uses
 Unit0033 ;
 
{$R *.dfm}
のように implementation以下に uses節を追加します。これは、双方で最初のuses節に追加し合うと、循環参照となってしまい、正常にコンパイル出来ないためです。
 そして、他のフォームから使いたいメイン側の変数・関数・手続きを、Private宣言部に記述するのではなく、Public宣言部に記述します。他のフォームから「Form1.〜」のように指定すれば、Form1のPublic宣言された変数・関数・手続きを使う事が出来ます。
 ラベルやボタン等のコンポーネントを配置し、プログラムコードを記述します。Form1のコントロールに直接アクセスさせるようには敢えてせず、Public宣言された関数・手続きを経由して行うようにしておきます。
 プログラムが実行出来る事を確認したら、メイン側(Form1)にあった画面移動拡大関連のボタンと、そのイベント等を削除します。
 
Bメニューの追加
一般アプリケーションっぽくするために、メニューを追加します。メニューは[Standard]内の「MainMenu」をフォームに貼り付けてダブルクリックし、メニューを作ります。Captionプロパティ、Nameプロパティを記述して、OnClickイベントを記述します。
 
Cサブ画面を表示させるコードを追加
 他のフォームを表示させるには、「(フォーム名).ShowModal」で行う方法と、「(フォーム名).Show」で行う方法の2種類があります。前者は、他のフォームを表示中には、元のフォームを操作する事は出来ません。後者は、2つのフォームを表示させて双方とも操作させる事が出来ます。
 このプログラムでは、サブ画面を同時に操作させたいので「Show」で表示させています。
 
Dプログラムの整理
 目的別にプログラムを整理します。イベントを追加したり、独自の関数・手続きを追加したりしていくと、どんどん複雑化しプログラムも汚くなっていきます。関数・手続きを入れ替えたりして整理します。
 同じコードを何度も書かずに、適切に独自の関数・手続きを作ってまとめる事も重要になってきますが、余り無茶に詰め込むと後々の可読性が落ちますので注意して下さい。
 
 
ここまでのプログラムです。
サンプルプログラムのソース
 
 
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
 ▲PREV
 ▼NEXT
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.