メインコンテンツへスキップ

xpa 3.2へマイグレーション後のCaretPosGet()関数について

コメント

16件のコメント

  • ISHIJIMA

     こちらでも確認しましたがuniPaaS とxpaでは動きが違いますね・・・・

    サポートに問い合わせして確認した方がよさそうです。

  • ISHIJIMA

    ボタンではなくてFキー等を割り当てると問題ないみたいです。

    バクなのか・制約事項なのか・回避策はあるのか・・・・

    XPA4.7.1でもできませんでした・・・

  • ISHIJIMA

    回避策として下記内容でできるかと思います。

    ユーザーイベントのパラメタに桁数項目を作成します。

    ボタンを押した時のユーザーイベントのパラメタにCaretPosGet()を入れます。

    イベント内に桁数項目を作成します。

    そうするとそこに桁数が入ってきます。

     

  • tanda

    ファンクションキーの使用ですとか、フォーカスの移動しないイベントならOKのようですね。

  • Tomonari

    ISHIJIMA様、tanda様

    お早い返信ありがとうございます。
    ボタンクリックのように、一旦エディットコントロールから
    フォーカスが離れるような場合は上手くいかないのでしょうかね。


    ISHIJIMA様
    >ユーザーイベントのパラメタに桁数項目を作成します。
    >ボタンを押した時のユーザーイベントのパラメタにCaretPosGet()を入れます。
    >イベント内に桁数項目を作成します。
    >そうするとそこに桁数が入ってきます。

    この場合はボタンクリックでも上手くいくのでしょうか?
    ユーザーイベントを作成してパラメータ等作成してみましたが上手くいかなかったので。
    これは、ユーザーイベントを作成して、そのイベントをボタンクリックした時のイベントから
    呼び出すような仕組みでよろしいのでしょうか?

    宜しくお願い致します。

  • ISHIJIMA

    ボタンでうまくいっています。

    タスク環境のユーザーイベントでイベントを追加する時にパラメタを追加

    ボタンのプロパティ内

     イベントタイプに設定したイベントタイプ

     イベントに設定したイベント

     パラメタにCaretPosGet()

    ロジック

     イベント 設定したイベント(新規にイベントを作成すると自動的に項目パラメタが追加される)

     この項目を使用して処理を行えば該当する位置になるはずです。

  • Tomonari

    ISHIJIMA様

    ありがとうございます。教えて頂いた方法で、カーソルの位置を取得することができました。


    ただ、位置は取得できましたが、実際その位置に挿入しようとするとやはり
    元の文字列全体に上書きしたようになってしまいました。

    ClipAdd(挿入文字列)
    ClipWrite()
    MarkText(カーソル位置-1,0)
    イベントの貼り付け

    以上のような流れで作成していますが、元の文字列が全て削除され、挿入文字列のみが表示されます。
    やはりボタンクリックした時に、全選択になっているようでそのあたりが関係しているのでしょうか。
    ご存知でしたら教えていただけますでしょうか。

    再度、質問のような形になり申し訳ございません。

  • ISHIJIMA

    サンプルを作成してサポートに確認された方が良いかと思います。

  • ISHIJIMA

    >ClipAdd(挿入文字列)
    >ClipWrite()
    >MarkText(カーソル位置-1,0)
    >イベントの貼り付け

    どこの関数がうまくいっていないか確認されましたか?

  • Tomonari

    ISHIJIMA様

    ありがとうございました。サポートに確認したいと思います。

     

  • ISHIJIMA

    MarkText(カーソル位置-1,0)の文字数がゼロだと駄目みたいですね・・・・

    バグかな

    文字数を1にするとその文字が消えますが挿入されます。

    どちらにしてもサポートに確認ですね・・・

  • Tomonari

    お世話になります。

    サポートにはまだ確認していませんが、

    先ほどの文字列挿入の件ですが、MarkText()の仕方がまずいみたいで、

    第二引数の'文字数'でこれがマークする文字数を表す数値ですが、ここで0を指定すると

    Magic uniPaaS V1Plusではちょうど指定場所に挿入されるのですが、Magic xpa だと

    元の文字列が消えてしまう現象が起きていました。

    引数に1以上を指定すれば、uniPaaSと同じ動きみたいです。

    ただ今回は、カーソル位置に挿入したいので引数に1以上を指定しますと、その文字数だけ

    上書きされるので、そのあたりをサポートに確認しようとおもいます。

     

  • ISHIJIMA

    ゼロで同じ動きになる事が正解だと思いますのでバクだと思われます。

    現状の回避策としては文字数1のマークの後に前文字イベント・次文字イベントでマークを解除するぐらいでしょうか

    ただ一番先頭だと変な動きになりますが・・・(unipaasと同じ動き?)

  • ISHIJIMA

    CaretPosGetとMarkTextはuniPaaSとxpaでは動き方か違うという事をサポートに確認しておいた方が良いかもです。

    バグなのか制約事項なのか・・・

  • Tomonari

    ISHIJIMA様

    いろいろとありがとうございます。

  • tanda

    現在のMagicのフォームエディタは、MicrosoftのVisual Studioのフォームデザイナーを使用していますので、それが原因かもしれませんね。

サインインしてコメントを残してください。