ラインオブジェクトの初期化について

HOME › フォーラム › 旧サポート掲示板 › ラインオブジェクトの初期化について

  • このトピックは空です。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #156
    魚住
    ゲスト

    いつもお世話になっております。
    今回は罫線(ラインオブジェクト)をプログラム中で作り一旦出力後は、作り出したラインオブジェクトをプログラム内で消す方法について教えて頂ければと思っています。

    現状のプログラムでは次のような記述を行っています。

    ・レポート定義体の指定レイヤのオブジェクト数分ループ
    ・このループ中に、オブジェクト名「WrLine」を含んでいたら
    ・.Dispose()を行う

    この記述で実行すると
    指定されたインデックスは有効範囲を越えています。
    という例外で落ちてしまいます。

    この際のオブジェクト数はプログラムで加えたラインオブジェクトの数も含んだオブジェクト数でしょうか。
    また、実際にラインオブジェクトを消す命令として
    .Dispose()で合っていますでしょうか。

    よろしくご回答をよろしくお願いします。

    #157
    伊藤@ソフトウィング
    ゲスト

    いつもお世話になっております。

    オブジェクト数の取得にはObjectCountを使用しておりますでしょうか?
    ObjectCountを使用している場合ですと、プログラム中で作成を行いました
    オブジェクトの数も含んだオブジェクト数を取得する事が出来ます。

    オブジェクトの削除にはDeleteを使用し、試して頂けますでしょうか。

    以上、宜しくお願い致します。

    #158
    魚住
    ゲスト

    いつもお世話になっております。
    ラインオブジェクトの初期化についてまだうまく初期化できていません。

    アドバイスを頂いたコードで試してみましたが一部だけDelete
    でき、一部が残ってしまいます。
    実際に記述しているコードを載せますので以下のコードで不具合がある部分があればご指摘ください。

    For intI = 1 To wdnReport.Layers(1).ObjectCount – 1
    With wdnReport.Layers(1)
    If intI < .ObjectCount Then
    If .Objects(intI).Name.IndexOf(“WrLine”) >= 0 Then
    .Objects(intI).Delete()
    End If
    End If
    End With
    Next intI

    以上のようなコードを記述しております。改行などが見にくい部分はご容赦ください。よろしくお願いします。

    #159
    伊藤@ソフトウィング
    ゲスト

    いつもお世話になっております。

    下記のように記述した場合

    For intI = 1 To wdnReport.Layers(1).ObjectCount
    wdnReport.Layers(1).Objects(intI).Delete()
    Next intI

    A、B、Cのような3つのオブジェクトが並んでいる場合では、
    ①最初のDeleteで1の位置にいるAが削除されます。
    ②オブジェクトはB、Cとなり1の位置にBが来ます。
    ③2回目のDeleteで2の位置にいるCが削除されます。

    よって、削除されずに残ってしまうオブジェクトが発生してしまいます。

    載せて頂きましたサンプルコードですと、Deleteが行われた際にintIの値
    を-1して試して頂けますでしょうか。

    以上、宜しくお願い致します。

    #160
    魚住
    ゲスト

    いつもお世話になっております。

    .ObjectCountの変わるタイミングを把握でき、ようやくラインオブジェクトの初期化を行うことができました。
    ありがとうございました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。