2001.08.16 更新
1.兄弟パーツの作成 2000.04.30
2.パーツ名変更 2000.04.30
3.パーツの連続共有化 2000.04.30
4.パーツ・移動/コピー 2001.01.17
(パーツを指定してから、移動/コピー先を指定します。)
5.同名子パーツの変換作成 2001.02.12
(親の要素を移動して、親と同じ名前の子パーツを作ります。)
6.同名子パーツの作成 2001.02.12
(親と同じ名前の空の子パーツを作ります。)
7.パーツ検索の使い方
2001.06.17
8.パーツ検索・初期値格納 2001.06.17
9.パーツ検索・枠の定義 2001.06.17
10.パーツ検索・表示データの作成 2001.06.17
11.パーツ検索・データのスクロール 2001.06.17
13.パーツ検索・一次データ作成 2001.06.17
14.パーツ検索・タイトルデータの変更 2001.06.17
15.パーツ検索・データの作成 2001.08.16,2001.06.17
16.パーツ検索・枠の内容定義 2003.02.03 2001.06.17
17.パーツ検索・枠の表示 2001.06.17
DEFINE Ma_part_brotherly
LOCAL Lo_name
INQ_ENV 7
IF (((INQ 302) <> '~1')
AND ((INQ 302)
<> '1')) {TOPで無ければ}
READ STRING '**
作成する兄弟パーツの名前を入力して下さい。 **' Lo_name
EDIT_PART
PARENT
{親パーツに移動}
INIT_SUBPART
Lo_name
{パーツ作成}
ELSE
READ STRING '**
作成する子パーツの名前を入力して下さい。 **' Lo_name
INIT_SUBPART
Lo_name
{パーツ作成}
END_IF
END_DEFINE
DEFINE Ma_part_rename
LOCAL Lo_name
LOCAL Lo_name_now
INQ_ENV 7
LET Lo_name (INQ 301)
READ STRING '** アクティブパーツの変更する名前を入力して下さい。 **'
DEFAULT Lo_name Lo_name_now
RENAME_PART Lo_name_now
END_DEFINE
DEFINE Ma_part_common
LOCAL Lo_name
LOCAL Lo_name_common
LOOP
INQ_ENV 7
LET Lo_name (INQ
301)
{現在のパーツ名の取得}
READ STRING '** 共有化するパーツの名前を入力して下さい。
**' Lo_name_common
INQ_PART Lo_name_common
IF (((INQ 302) <> '~1') AND ((INQ
302) <> '1')) {TOPで無ければ}
INIT_PART
'$$$part'
{仮}
SHARE_PART
Lo_name_common
{共有化}
EDIT_PART
Lo_name
{元のパーツに戻る}
ELSE
DISPLAY '** TOPは共有化できません。
[ESC]キーを入力して、抜けて下さい。 **'
END
END_IF
END_LOOP
END_DEFINE
LOCAL
Part_id_00
{カレント・パーツのユニークなパーツ名}
LOCAL
Part_id_01
{移動するパーツのID}
LOCAL
Part_id_02
{移動先のパーツのID}
INQ_ENV 7
LET Part_id_00 ('~' + (INQ
302))
{カレント・パーツのユニークなパーツ名を保存}
LOOP
PRT_EDITOR
{パーツエディタウィンドウを表示}
IF
(Sirusi<>1)
{移動なら}
READ STRING '**
移動するパーツ欄を指示して下さい。(子パーツが有れば一緒に移動します。) **' Part_id_01
READ STRING '**
移動先のパーツ欄を指示して下さい。(このパーツの子パーツとして、移動されます。) **' Part_id_02
EDIT_PART
Part_id_02
{指定パーツに移る}
GATHER PART
Part_id_01
{パーツを移動}
ELSE
READ STRING '**
コピーするパーツ欄を指示して下さい。(子パーツが有れば一緒にコピーします。) **' Part_id_01
READ STRING '**
コピー先のパーツ欄を指示して下さい。(このパーツの子パーツとして、コピーされます。) **'
Part_id_02
EDIT_PART
Part_id_02
{指定パーツに移る}
GATHER COPY PART
Part_id_01
{パーツをコピー}
END_IF
EDIT_PART
Part_id_00
{元のパーツに戻る}
END_LOOP
END_DEFINE
INQ_ENV 7
LET Lo_name (INQ
301)
{カレントパーツ名の取得}
CREATE_SUBPART
Lo_name
{パーツ作成}
END_DEFINE
INQ_ENV 7
LET Lo_name (INQ
301)
{カレントパーツ名の取得}
INIT_SUBPART
Lo_name
{パーツ作成}
END_DEFINE
CREATE_LTAB 1 1
Table_display
{表示用データのテーブル確保}
END_DEFINE
LET Table_display
'##Selct_display##'
{表示用データのテーブル名}
TRAP_ERROR
TABLE_LAYOUT 'Layout_100'
Table_display
{表示テーブル名/データテーブル名}
IF (NOT CHECK_ERROR)
Bcol1
Bcol0
{表示色・背景色}
ROWS
15
{行数}
FRAME_WIDTH 5
HORIZONTAL SOLID
WHITE
{水平枠}
VERTICAL SOLID
WHITE
{鉛直枠}
SCROLL_BAR Bcol1
Bcol1
{スクロールバー}
TITLE_LAYOUT
(Headline_height+1) ' |
|タイト
ル
| '
4
'
'
(Headline_height+1)
'検索文
字|
|99999'
4
'
'
(Headline_height+1)
'パーツ
名
| | |ID
|共有 |尺度 ' END
COLUMN_LAYOUT
(Headline_height+1)
'12345678901234567890123456789012345678901|
| | ' END
END_IF
END_DEFINE
LOCAL Point00
LOCAL Count00
LOCAL Count01
LOCAL Kaz00
LOCAL Kaz01
LOCAL Moj01
LOCAL Table_display
LET Table_display
'##Selct_display##'
{表示用データのテーブル名}
LET Point00 ((Start_point - 1) * 10 +
1) {表示開始位置の算出}
{ 最長の調査}
LET Kaz00 0
LET Count01 (LTAB_ROWS
Table_display)
{データの量}
LOOP
EXIT_IF (Count01 = 0)
LET Kaz01 (LEN (READ_LTAB Table_display
Count01 4)) {文字列の長さ}
IF (Kaz00 < Kaz01)
LET Kaz00
Kaz01
{更新}
END_IF
LET Count01 (Count01 - 1)
END_LOOP
IF ((Point00 + 31) >
Kaz00)
{スクロールが不要なら}
ELSE
LET Gl_fruit Start_point
END_IF
LET Count01 (LTAB_ROWS
Table_display)
{データの量}
IF (0 <
Count01)
{データが有るなら}
LOOP
LET String01 (READ_LTAB
Table_display Count01 4) {処理文字列読み出し}
IF (Point00 > (LEN
String01)) {表示する部分が無いなら}
LET String01 ''
ELSE
LET String01
(SUBSTR String01 Point00 ((LEN String01) - Point00
+ 1))
END_IF
WRITE_LTAB Table_display
Count01 8 String01 {表示用パーツ名の書き込み}
EXIT_IF (1 = Count01)
LET Count01 (Count01 - 1)
END_LOOP
END_IF
END_DEFINE
LOCAL
Kaz01
{開始位置}
LET Kaz01
Gl_search_scroll_point
{検索表示文字の開始位置}
IF (Kubetu = 1)
IF (1 < Kaz01)
LET Kaz01
1
{左端から表示に}
END_IF
ELSE
LET Kaz01 (Kaz01 + 1)
END_IF
Ma_part_search_displaydata
Kaz01
{パーツ検索・表示データの作成}
LET Gl_search_scroll_point
Gl_fruit
{検索表示文字の開始位置}
END_DEFINE
LOCAL Point00
LOCAL Kaz01
LOCAL Moj01
LET Point00 (POS String00 '~') {ID文字の位置}
{階層}
IF ((POS String00 '[') =
1)
{カレントパーツなら}
LET Kaz01 ((((LEN String00) - (LEN
(TRIM (SUBSTR String00 (POS String00
' ') ((LEN String00) - (POS String00 ' ') + 1))))) - 2) / 2
)
LET Moj01 '*'
ELSE
LET Kaz01 (((LEN String00) - (LEN (TRIM
String00)) - 2) / 2)
LET Moj01 ' '
END_IF
WRITE_LTAB Table_name Count_no 2
Kaz01
{階層の書き込み}
WRITE_LTAB Table_name Count_no 3
Moj01
{カレント区別の書き込み}
{バーツ名}
LET Moj01 (SUBSTR String00 5 (Point00 - 7))
WRITE_LTAB Table_name Count_no 4
Moj01
{パーツ名の書き込み}
LET String00 (SUBSTR String00 (Point00 - 1) ((LEN
String00) - Point00
+ 2)) {データを整形}
{ID}
LET Moj01 (SUBSTR String00 2 ((POS String00 ']') -
2)) {ID}
WRITE_LTAB Table_name Count_no 5
Moj01
{IDの書き込み}
LET String00 (SUBSTR String00 ((POS String00 ']')
+ 2) ((LEN String00)
- ((POS String00 ']') + 1))) {データを整形}
{共有}
IF ((POS String00 '共有されました') >
0) {共有パーツ親なら}
LET Moj01 (SUBSTR String00 (POS
String00 '#') ((POS String00 ']')
- (POS String00 '#')))
LET String00 (SUBSTR String00 ((POS
String00 ']') + 2) ((LEN String00)
- (POS String00 ']') - 1)) {残りの文字}
ELSE_IF ((POS String00 '共有されるパーツの共有') > 0)
{共有パーツ子なら}
LET Moj01 ('#' + (SUBSTR String00 (POS
String00 '#') ((POS String00
']') - (POS String00 '#'))))
LET String00 (SUBSTR String00 ((POS
String00 ']') + 2) ((LEN String00)
- (POS String00 ']') - 1)) {残りの文字}
ELSE
LET Moj01 ' '
END_IF
WRITE_LTAB Table_name Count_no 6
Moj01
{共有の書き込み}
{尺度}
LET Moj01 (SUBSTR String00 2 ((POS String00 ']') -
2))
WRITE_LTAB Table_name Count_no 7
Moj01
{尺度の書き込み}
END_DEFINE
END_DEFINE
LOCAL Search_word {検索文字列}
LOCAL
Row_max
{全バーツ数}
LOCAL
Row_no
{テーブルの行位置}
LOCAL Row_select {検索データの数}
LOCAL
Count00
{カウントデータ}
LOCAL
Count01
{カウントデータ}
LOCAL
String01
{処理文字列}
LOCAL
Length01
{処理文字長}
LOCAL Kaz01
LOCAL Moj01
LOCAL Data01
LOCAL
Class00
{階層}
LOCAL Class01
LET Table_part
'##part_list##'
{バーツデータのテーブル名}
LET Table_select
'##Selct_list##'
{検索データのテーブル名}
LET Table_display
'##Selct_display##'
{表示用データのテーブル名}
LET Frame_name
'Layout_100'
{表示枠名}
RESET_PART_NUMBER
{ID番号の整理}
INQ_ENV 8
LET Row_max (inq
5)
{ID番号の最大値}
CREATE_LTAB (Row_max + 1) 3
Table_part
{バーツデータのテーブル確保}
PARTS_LIST TREE LTAB
Table_part
{パーツ名をテーブルに格納}
CREATE_LTAB 1 1
Table_display
{表示用データのテーブル確保}
CREATE_LTAB 1 1 Table_select {検索データのテーブル確保}
READ '** 検索をする、パーツ名の一部又は全ての文字列を入力して下さい。 **'
DEFAULT Gl_search_word
Search_word
LET Gl_search_word
Search_word
{文字列格納}
LET Row_no 1
{バーツデータの処理}
LOOP
LET Moj01 (READ_LTAB Table_part Row_no
1)
LET Kaz01 (POS Moj01
'~')
{ID文字の位置}
LET Moj01 (TRIM (SUBSTR Moj01 4 (Kaz01
- 5))) {パーツ名の切り出し}
IF ((POS Moj01 Search_word) >
0)
{文字が含まれるなら}
WRITE_LTAB Table_part
Row_no 2 1
ELSE
WRITE_LTAB Table_part
Row_no 2 0
END_IF
WRITE_LTAB Table_part Row_no 3
Row_no {行番号}
LET Row_no (Row_no + 1)
EXIT_IF (Row_max < Row_no)
DISPLAY_NO_WAIT
Row_no
{動作表示}
END_LOOP
SELECT_FROM_LTAB Table_part COLUMN 2 = 1 Table_select {選択合致データを移す}
LET Row_select (LTAB_ROWS
Table_select)
{検索データの数}
IF (0 < Row_select)
LET Row_no 1
{データの構築}
LOOP
LET String01 (READ_LTAB
Table_select Row_no 1) {処理文字列読み出し}
LET Kaz01 (READ_LTAB
Table_select Row_no 3)
WRITE_LTAB Table_select
Row_no 1 Kaz01 {行番号を移す}
Ma_part_search_processdata
String01 Table_select Row_no {処理文字列・格納テーブル名・格納行}
LET Row_no (Row_no + 1)
EXIT_IF (Row_select < Row_no)
END_LOOP
LET Gl_search_part_volume (Row_no -
1) {検索ヒットの数の記憶}
{表示データの作成}
LET Row_no Row_select
LOOP
LET Count00 (READ_LTAB
Table_select Row_no 1) {行番号の取得}
LET Count01 Count00
LET Class00 (READ_LTAB
Table_select Row_no 2) {階層の取得}
LOOP
LET String01
(READ_LTAB Table_part Count01 1) {処理文字列}
{階層の取得}
IF ((POS
String01 '[') =
1)
{カレントパーツなら}
LET
Class01 ((((LEN String01) - (LEN (TRIM (SUBSTR String01
(POS String01 ' ') ((LEN String01) - (POS String01 ' ') +
1))))) - 2) / 2
)
ELSE
LET
Class01 (((LEN String01) - (LEN (TRIM String01)) - 2) /
2)
END_IF
IF ((Class01
< Class00) OR (Count01 = Count00)) {自身又は上の階層なら}
INSERT_LTAB_ROW Table_display 0
1 {1行後にずらす}
Ma_part_search_processdata String01 Table_display 1
{処理文字列・格納テーブル名・格納行}
Ma_part_search_displaydata 1 {表示用データの作成}
LET Class00
Class01
{変更}
END_IF
LET Count01
(Count01 - 1)
EXIT_IF (1 = Class01)
END_LOOP
LET Row_no (Row_no - 1)
EXIT_IF (0 = Row_no)
INSERT_LTAB_ROW
Table_display 0
1
{1行後にずらす}
DISPLAY_NO_WAIT
Row_no
{動作表示}
END_LOOP
ELSE
LET Gl_search_part_volume
0
{検索ヒットの数を0にする}
END_IF
Ma_part_searchframe_title_chg {検索文字・合致数の変更}
END_DEFINE
LET Frame_name
'Layout_100'
{表示枠名}
LET Table_display
'##Selct_display##'
{表示用データのテーブル名}
{タイトル行部分}
Table_control_icons
Frame_name
{タイトル行の記号枠内を記入}
WRITE_LTAB Table_display TITLE 1 Menu_delete_icon
{タイトル行の1番枠内に削除記号[0] を記入}
TABLE_TITLE Frame_name
Pbt_head_fg Pbt_head_bg CENTER 'パーツ検索'
'' 1 3
Pbt_head_fg Pbt_title_bg1 CENTER '' '' 2 1 {二重線内の色付け}
Pbt_title_fg Pbt_title_bg1 LEFT '検索文字'
'' 3 1
Colo0 Bcol4 LEFT Gl_search_word 'Ma_part_search_data_up'
3 2 {検索文字枠}
Colo0 Bcol4 RIGHT (STR
Gl_search_part_volume) '' 3 3 {適合数}
Pbt_title_fg Pbt_title_bg1 CENTER '' '' 4 1 {二重線内の色付け}
Pbt_title_fg Pbt_title_bg1 CENTER
'パーツ名' '' 5 1
Pbt_title_fg Pbt_title_bg1
Menu_scroll_left_icon 'Ma_part_search_name_scroll
1' 5 2
Pbt_title_fg Pbt_title_bg1
Menu_scroll_right_icon 'Ma_part_search_name_scroll
2' 5 3
Pbt_title_fg Pbt_title_bg1 CENTER 'ID'
'' 5 4
Pbt_title_fg Pbt_title_bg1 CENTER '共有'
'' 5 5
Pbt_title_fg Pbt_title_bg1 CENTER '尺度'
'' 5 6
END
{データ行部分}
TABLE_COLUMN Frame_name
COLUMN 1 8 Pbt_data_fg Pbt_data_bg LEFT
'"@v5"' {バーツ名}
COLUMN 2 5 Pbt_data_fg Pbt_data_bg
RIGHT '"@v5"' {ID}
COLUMN 3 6 Pbt_data_fg Pbt_data_bg
RIGHT '"@v5"' {共有}
COLUMN 4 7 Pbt_data_fg Pbt_data_bg
RIGHT '"@v5"' {尺度}
END
END_DEFINE
LET Table_display
'##Selct_display##'
{表示用データのテーブル名}
Frame_layout_100
Frame_display_100
MOVE_TABLE 'Layout_100' UPPER RIGHT OF
END {枠の表示位置/上の右}
SHOW_TABLE ON 'Layout_100'
END_DEFINE
気をつけて作りました、使用してのトラブルに責任は持てませんが、
自由にお使い下さい。(伏 見 表)