ようこそゲストさん | ログイン |

掲示板

トップページ > 過去ログ > 記事閲覧
引き出し線について
日時: 2008/04/15 15:17
名前: GEOSISサポート受付

「Geosis Ver7.0004 VB2005 geoDLL使用可能」
現在、"FGPULL"と "FGPULLMOVE"を利用して引出し線(DBベクター)を作成していますが、以下の点で上手くできません。
@左側に配置した引出し線の場合、画面をズームインしたりスクロールして引き出しの左端点が画面からはみ出すと文字列の表示が消えてしまう。
(文字列も同じで原点がOCXから外れると、文字の表示が消えてしまうので、消えないようにしたい)文字数が多くてOCXの表示範囲を超えてしまう場合。
A作成時に文字列の下線が短くなってしまう。
B引出し図形を取得できない。
C引出し線の一括移動をする場合、ズームインした画面でOCXの範囲に文字列の動く余裕がないと移動できない。
安定的な処理を行い為これらの状況を解決したいのですが、どのような流れにしたら良いでしょうか?ご指導をお願いします。

Page: 1 |

Re: 引き出し線について ( No.1 )
日時: 2008/04/15 15:19
名前: NCG

@に対する回答
申訳ありませんが、DBベクタの場合、ラインとポリゴン以外は原点が表示範囲内に無いと図形の描画が行われない仕様となっております。

Aに対する回答
現象が確認できませんでした。
FGPULLで登録された図形の引き出し線が短くなるのでしょうか?

Bに対する回答
現象が確認できませんでした。
FGFILLIFVで図形の取得が行えないのでしょうか?
下記の”■引出し図形の再取得処理”を変更することで改善されるかご確認下さい。

Cに対する回答
申訳ありませんが、注記全体が画面内に入りきらない配置は行えない仕様となっておりますので注記を配置したいエリアが入るようにに画面を縮小し引出し注記の移動を行って下さい。

■引出し図形の再取得処理
FGPULLに使用した中間ファイルでFGFILLIFを実行することで図形の取得が行えます。

  ◆変更前
'> 引き出し図形の再取得
georet = gexec("FGCURDB", "elTMP C", SZEL, "! ! ! ! ! ! !", geoLAY)
georet = gexec("FGFILLIFV", "elTMP edTMP 0 CUR CLIP LA")

  ◆変更後
georet = gexec("FGFILLIF", "inTMP edTMP 0 CUR CLIP LA")
Re: 引き出し線について ( No.2 )
日時: 2008/04/15 15:24
名前: GEOSISサポート受付

@について
対処する方策としてどのような方法が考えられるでしょうか?

Aについて
通常は配置した文字を"FGMODLSTYLE"で編集した後"FGPULLMOVE"で移動するのですが、文字列が画面をはみ出す場合、"FGPULLMOVE"でErr29が発生し、当初に配置した下線の長さになってしまうようです。
つまり配置した文字サイズ変更後の長さに下線が延びない状態になります。
多分C「注記全体が画面内に入りきらない配置は行えない仕様」に影響されているのだと思います。

Bについて
画面に入りきらない文字列を含む引出し線を移動する場合ですが、取得とでなく、取得後の"FGPULLMOVE"にErr29が発生するため図形が取得できないように見えていたようです。
多分これも C「注記全体が画面内に入りきらない配置は行えない仕様」に影響されているのだと思います。

尚、■引出し図形の再取得処理を実行してみましたが、"FGMODASTYLE"でErr41が発生し、文字のサイズが変更できませんでした。

OCX上の「DBベクタの仕様」は解りましたが、引出し線や文字で、「注記全体が画面内に入りきらない配置は行えない仕様」に対する対応策はどのような方法が考えられるでしょうか?
Re: 引き出し線について ( No.3 )
日時: 2008/04/15 15:28
名前: NCG

@に対する回答
DBベクタで文字の大きさを考慮して図形の表示を行うと、全ての注記データを検索する必要があり図形の描画速度が遅くなります。図形の描画速度を考慮して、ラインとポリゴン以外の図形については表示画面内に原点があるデータのみを表示する仕様となっております。
現状では対応策が無い状態ですが、ご理解下さいますよう、お願い致します。

■引出し図形の再取得処理の件
FGFILLIFのパラメータに誤りがあり、正常に中間ファイルが作成されていませんでした。
そのため、その後のコマンド”FGMODASTYLE"でErr41が発生していました。
以下のように訂正を行い、ご確認下さい。

 ◆誤り
georet = gexec("FGFILLIF", "inTMP edTMP 0 CUR CLIP LA")
    ↓ 
 ◆訂正
georet = gexec("FGFILLIF", "inTMP edTMP 0 CUR LA")

Re: 引き出し線について ( No.4 )
日時: 2008/04/15 15:39
名前: NCG

■注記全体が画面に入りきらない場合の対応について
FGPULLMOVEを実行する前に引き出し注記が上下左右に移動できる範囲に表示範囲を変更することで、FGPULLMOVEのエラーを回避することが出来ますので、ご検討下さい。
処理の流れの例を紹介します。

1)注記・ラインのスタイル変更(FGMODASTYLE・FGMODLSTYLE)

2)注記の長さを取得
    @FGGETMINMAXRECT(注記の大きさの中間ファイル作成)
      ※FGMODASTYLEで使用した中間ファイルを使用
    AFGGETINFO(@で作成した中間ファイルのXMIN,XMAXを取得し幅を算出)

3)現在の表示画面の幅を取得
    @FGO2T(画面内の中間ファイルを作成)
    AFGGETINFO(@で作成した中間ファイルのXMIN,XMAXを取得し幅を算出)

4)2)で取得した注記の長さの2倍と3)で取得した表示画面の幅を比較
  ※注記を左右に動かせるようにするために2)で取得した文字の長さを2倍にします。

5)4)で比較した結果、現在の表示画面が狭い場合(引出し注記の左右移動が行えない範囲の場合)には
  表示範囲を広げるための中間ファイルを作成
  ※表示範囲が狭くない場合は5)、6)の処理を省略し7)を実行します。

  引出し注記の登録位置(プログラム内の変数の sx , sy)から文字の幅分広げた範囲で中間ファイルを作成
   例)
gexec "fgcurdb", "wrect", "c", "! ! !", sX -注記の長さ, sY - 注記の長さ
gexec "fgcurdb", "wrect", "A", "! ! !", sX +注記の長さ, sY + 注記の長さ

6)5)で作成した中間ファイルの範囲を表示(FGDISP)

7)引出し注記の移動(FGPULLMOVE)

Page: 1 |



| 利用規約 |

(C) 2024 AS Locus INC.