【Jw_cad 外部変形】
Delphi6を使い外部変形アプリ作成に挑戦
さて、今回から Borland Delphi6を利用して外部変形アプリケーションの作成について考えていこうと思います。Delphi6の事は全く知らないという方は、
Delphi入門編
などを参照して下さい。Delphiは基本的に上位互換性が高いので、Delphi7・2005・2007やTurbo Delphiなどを利用してみるというのも良いかもしれません。が、当方では動作チェックは出来ませんので自己努力にて宜しくお願いします。
Delphiプログラムは、「C:\DelphiProgram\jww」というフォルダを作成し、その中に更に「p020」「p021」・・・というフォルダ(その説明文のHTMLファイルと同じ名前)を作成してその中にプロジェクトファイルや各関連ファイルを作る事とします。
それではまず最初のテストとして、これまでメモ帳で作業をしてきましたが、Delphiで作成した自分のメモプログラムを動かしてみる事にします。
プログラムの引数として、開くファイル名を受け渡すというパターンがありますが、同じフォルダ内の「JWC_TEMP.TXT」であるという事は分かっていますので、プログラム内で直接書く事として、引数としては受け渡さない事とします。
まずはプログラミング作業用フォルダを作成して準備します。Windowsのエクスプローラ等を使ってフォルダの新規作成を行って下さい。(※本サイトの説明ページ毎に異なります)
Delphi6を起動します。起動したら最初にメニュー「プロジェクト」→「オプション」を実行し、[アプリケーション]頁のタイトルの入力と、[ディレクトリ/条件]頁のパス及びディレクトリ全てに「C:\DelphiProgram\jww\p020」(※本サイトの説明ページ毎に異なります)と入力して[OK]をクリックします。
↓
まだ何もしていませんが、最初に保存しておきましょう。
メニュー「ファイル」→「名前を付けて保存」
にて「C:\DelphiProgram\jww\p020」の中に「Unit1.pas」を保存
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
にて同じ「C:\DelphiProgram\jww\p020」の中に「p020.dpr」を保存します。後に、コンパイル、再構築、を行うとプログラム「p020.exe」が作成されます。
ここまでがプログラムを作成する最初の準備段階となります。以降の各説明ページでは省きますが、「準備を行います」とある場合にはここまでの作業を指しますので御了承下さい。
それでは、メモ帳もどきを作成してみましょう。
オブジェクトインスペクタで Form1 の Captionを「p020−メモ帳もどき」と入力します。すると画面上部にそのまま表示されます。自由に好きなように出来ます。
[Win32]内にある[StatusBar]をダブルクリックしてForm1に配置します。使う予定はないですが、画面のリサイズを行うプログラムの場合にはこのステータスバーがあった方が操作しやすいので、そのためです。勿論、有効利用したい場合には自由に使って下さい。
↓
次にメモ部分ですが、Delphiには「Memo」コンポーネントというものがありますが、開けるファイルの容量に問題がある場合があるので、ここでは[Win32]内の[RichEdit]コンポーネントを使います。
↓
オブジェクトインスペクタにて配置した「RichEdit1」のプロパティを以下のように変更します。
Align
alClient
Font内
Name
MS ゴシック
Font内
Size
10
MaxLength
10000000
PlainText
True
ScrollBars
ssBoth
WordWrap
False
オブジェクトインスペクタにて
Form1 に切り替えて、イベントにて OnShowの箇所でダブルクリック、OnCloseの箇所でダブルクリックします。コード欄は下記のようになります。
(※以下では全角空白を付けて桁調整等をしていますが実際は半角空白或いは無しです)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
RichEdit1: TRichEdit;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
end;
end.
FormShow内はプログラム起動時の処理、FormClose内はプログラム終了時の処理を記述します。プログラム起動時にはファイル「JWC_TEMP.TXT」を開く処理を記述し、プログラム終了時にはファイル「JWC_TEMP.TXT」を上書き保存する処理を記述します。
(※以下では全角空白を付けて桁調整等をしていますが実際は半角空白或いは無しです)
(前部省略)
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
RichEdit1: TRichEdit;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private 宣言 }
AppPath : string ;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 起動時
procedure TForm1.FormShow(Sender: TObject);
begin
// プログラムのあるフォルダを取得します
AppPath := ExtractFilePath(Application.ExeName) ;
// JWC_TEMP.TXTを開きます
RichEdit1.Lines.Clear ; // テキストをクリア
try
RichEdit1.Lines.LoadFromFile(AppPath+'JWC_TEMP.TXT');
except
;
end;
end;
// 終了時
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// JWC_TEMP.TXTを上書き保存します
try
RichEdit1.Lines.SaveToFile(AppPath+'JWC_TEMP.TXT');
except
;
end;
end;
end.
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」(「コンパイル」でも可)を行います。入力ミス等があるとエラー表示されたりしますが、問題が無ければ再構築終了し、「C:\DelphiProgram\jww\p020」内に「p020.exe」が作成されます。Delphi6を終了します。
Windowsのメモ帳やテキストエディタ等を利用し、フォルダ「Gapp」内に以下のようなバッチファイルを作成します。
p020.bat
REM 線選択してメモ帳もどきを起動
REM #jww
REM #cd
REM #zs
REM #zw
REM #1ln 線を指示して下さい。(L)free (R)Read
REM #e
start /w p020.exe
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p020」内にある「p020.exe」をフォルダ「Gapp」内へコピーします。
Jw_cad を起動し、何か作図してある状態で
メニュー→その他→外部変形
「ファイル選択」画面でフォルダ「Gapp」を指定し、上記で作成したバッチファイル「p020.bat」を実行します。
バッチファイルで指定したように「線を指示して下さい」と表示されますので、線をクリックします。
コマンドプロンプト画面が表示されて、上記で作成した外部変形プログラム「p020.exe」=「p020−メモ帳もどき」が起動されます。
試しに、冒頭の「hq」を消して「hd」に書き換え、「lt1」を「lt3」に書き換えて線種を変更するようにしてみました。右上の[×]をクリックして終了します。
指示した線の線種が変更された事が分かります。
以上で、オリジナルの外部変形アプリケーションが作成出来ました。
今回は単純に RichEditコンポーネントを利用して「JWC_TEMP.TXT」を開いただけですが、今後も RichEdit コンポーネントを利用するのも良いですが(画面に見せないよう Visibleプロパティを Falseにする等)書き出しデータが多くなると少し遅いという事と、RichEditの各行は、Linesプロパティで分かるのですが、その取り込み自体も少し遅いかもしれないという事で、以降のプログラムでは別手法をとります。
それはさておき、
以上、外部変形アプリケーションはこういったパターンで作成していく事が出来ます。今後も同様なパターンで作成していきます。
なお、Delphiで作成したプログラムは、Visual BASICのようなランタイムライブラリも不要なのですが
(※データベースを扱ったり特殊なdll/ocx等を利用する場合を除く)
、Windows画面を出すプログラムですし、実行プログラムのファイルサイズはそれなりに大きくなります。(上記の p020.exe では 418KB)
Delphiでも Windows画面を出さないコンソールアプリケーションは作成出来ますし、その場合には実行プログラムのファイルサイズもそれなりに小さくなるのですが、ここでは説明しませんので予め御了承下さい。
次回:矩形を作図する(1)
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
M7
Jw_cad
[BACK]
[NEXT]
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.