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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
データベース【CADデータベースな話(5.5)】
まずは[水平][垂直][線分][四角]の作図コマンドを作成してみます。ツールバーとメニュー項目を用意します。ボタンではなくツールバーにしているのは、ボタンの場合だとフォーカスを持ってしまい矢印キー等の処理がそちらに移ってしまって作図画面中でのキー操作ができなくなってしまうのでそれを避ける為です。
このプログラムでは少しイレギュラーな事をしています。通常はマウスイベント内にマウスクリック対応処理を含ませると思われますが少し分かり難くなってしまいますので、SpeedButtonClickイベント内でマウス指示待ちループを組んでいます。これによってこのイベント内に記述出来るので多少分かりやすくはなるのですが、これによる不安定面は多少残るようです。が余り気にせずコーディングしていますので実際に実用プログラムを作成する場合には御自身で色々試してみて下さい。
[水平]=水平線は、通過点指示→開始点指示→終了点指示 を行い、通過点を通る水平線の作図を行います。[垂直]は通過点を通る垂直線、[線分]は2点を結ぶ線分、[四角]は2点を結ぶ4本の線分、を作図します。作図は、データを登録し、画面に線分の作図を行いますが
『要素−線分テーブル「ENT_LINE_〜」(TABLE14)』
だけではなく同時に
『共通変数用テーブル「VAR_〜」(TABLE11)』
『アンドゥ・リドゥ対応テーブル「HISTORY_〜」(TABLE12)』
『各要素管理テーブル「ENTITY_〜」(TABLE13)』
への登録も行います。
この4つのテーブル書き込みが全て成功して初めてOKとなりますがこういう場合には、トランザクションの指定をこれらの前後に行って例外処理を記述する必要があります。ですので Form1(Unit1.pas)にトランザクション指定無しの関数を用意して、これらを使うようにして、呼出側である Form13(Unit13.pas)のほうでトランザクションと例外処理を記述するようにします。
仮に、トランザクションを個別に行ってデータ登録した場合、例えば各要素管理テーブルの登録は出来たけれども線分テーブルの登録が失敗した場合、テーブルレコード数がずれてしまい、おかしな事になってしまいます。また、共通変数用テーブルを用意しているのは、他PCと同時作業中、他PCで使った番号と同じ番号になったりすると後々で面倒な事になりそうだからです。
 
線分データは、現在レイヤ(CurLay)、現在色(CurCol)、現在線種(CurLtp)、現在線幅(CurWid)で登録&描画を行います。但し、現在色・現在線種・現在線幅の各値が「0」の場合はレイヤ依存値=レイヤテーブルに登録された内容での表示になりますので注意します。各座標は、マウスクリックにより取得された用紙上寸法を利用し、現在レイヤのレイヤ尺度を参照して(レイヤ尺度で割り算をして)実寸データとして登録を行います。線分データを画面に描画する際には、実寸値である各座標にレイヤ尺度を掛けて用紙上寸法にしてから線分作図を行います。線種ピッチ値、線幅値は用紙上寸法での値です。
なお、マウス左クリックはそのマウス任意点での指示、マウス右クリックは線分データを参照して 5ドット距離内にある座標を取得する事によって端点スナップを行うようにしています。グリッドを表示している際には、マウス左クリックはグリッド値となります。
 
画面描画は、これまでテスト画面を表示していましたが、データを参照して描画するようにしています(線分データのみ)。但し、レイヤテーブル・色テーブル・線種テーブル・線分テーブルを1レコードずつ番号指定によって参照して表示しているため(各要素管理テーブルだけは一旦動的配列に入れてしまっています)描画速度はかなり遅くなっています。少なくともレイヤ・色・線種テーブルの全データを一旦動的配列に入れてしまってそれを参照するようにすれば少しは速く表示されるようになる、かもしれません。また、線分作図の箇所などはベタベタにコーディングしていますが、変に手続き状態にするよりも取りあえずそのままにしてあります。
 
現在、線分の作図しか出来ませんが、それでも実行すると結構面白いと思いますので試してみてください。なお、画面の自動更新は行っていません。ウインドウ操作で画面が乱れる場合もあります。その場合は画面を再描画させて下さい。
 
ここまでのソースプログラム及び実行プログラムを
圧縮しています。
各画面やプログラム内容は下記で確認して下さい。

 
中途半端に終わっていますが、円・円弧・文字のデータ登録&作図はさほど難しくないと思いますし、編集コマンドや画面の同期用のコマンドもありませんが、これまでにデータの変更や削除等については記述していますし、それほど難しくも無いと思われます。これまで御意見御感想等の反響はありませんでしたし、当初の目的である「Firebirdの利用」が結構色々出来そうだという自身の感覚も持てましたので、これでデータベースのお話は終了と致します。
 
 


 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
 A B C D
 E F G H
 I J K L
 M N O P
 Q R S T
 U V W X
 Y Z
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.