xpa 3.2へマイグレーション後のCaretPosGet()関数について
お世話になっております。
Magic uniPaaS V1Plus 1.9g2 PT5からMagic xpa 3.2へマイグレーションを行ないましたが
一部機能が同等の動きをしない箇所がありました。
ボタンをクリックしたときに、エディットコントロールへある文字列を挿入するというものなのですが、
uniPaaS V1Plus では挿入したい箇所にカーソルを位置づけしてボタンを押すとそカーソル位置に文字列を挿入できるのですが、Magic xpa 3.2では元ある文字列がすべて消えてしまい、先頭に挿入したい文字列が貼り付けられるといった状態になります。(イメージ的には元ある文字列が全選択されてしまいそこに上書きされている感じです。)
CaretPosGet()関数を使用しエディットコントロール内のカーソルの位置を取得し、そこに文字列を挿入しているのですが、
実際にCaretPosGet()関数で取得した位置を確認すると、カーソルの位置ではなく、エディットコントロール内の文字の
最後の位置を取得していました。
uniPaaS V1Plusでは、カーソルの位置がきちんととれていたのですが、Magic xpa 3.2ではカーソルの位置が取れないという現象が起きています。
どなたかご存じの方いらっしゃいましたら教えていただけないでしょうか。
宜しくお願い致します。
開発環境
Windows10Pro64bit
Xpa3.2c
-
ファンクションキーの使用ですとか、フォーカスの移動しないイベントならOKのようですね。
-
ISHIJIMA様、tanda様
お早い返信ありがとうございます。
ボタンクリックのように、一旦エディットコントロールから
フォーカスが離れるような場合は上手くいかないのでしょうかね。
ISHIJIMA様
>ユーザーイベントのパラメタに桁数項目を作成します。
>ボタンを押した時のユーザーイベントのパラメタにCaretPosGet()を入れます。
>イベント内に桁数項目を作成します。
>そうするとそこに桁数が入ってきます。この場合はボタンクリックでも上手くいくのでしょうか?
ユーザーイベントを作成してパラメータ等作成してみましたが上手くいかなかったので。
これは、ユーザーイベントを作成して、そのイベントをボタンクリックした時のイベントから
呼び出すような仕組みでよろしいのでしょうか?宜しくお願い致します。
-
ISHIJIMA様
ありがとうございます。教えて頂いた方法で、カーソルの位置を取得することができました。
ただ、位置は取得できましたが、実際その位置に挿入しようとするとやはり
元の文字列全体に上書きしたようになってしまいました。ClipAdd(挿入文字列)
ClipWrite()
MarkText(カーソル位置-1,0)
イベントの貼り付け以上のような流れで作成していますが、元の文字列が全て削除され、挿入文字列のみが表示されます。
やはりボタンクリックした時に、全選択になっているようでそのあたりが関係しているのでしょうか。
ご存知でしたら教えていただけますでしょうか。再度、質問のような形になり申し訳ございません。
-
ISHIJIMA様
ありがとうございました。サポートに確認したいと思います。
-
お世話になります。
サポートにはまだ確認していませんが、
先ほどの文字列挿入の件ですが、MarkText()の仕方がまずいみたいで、
第二引数の'文字数'でこれがマークする文字数を表す数値ですが、ここで0を指定すると
Magic uniPaaS V1Plusではちょうど指定場所に挿入されるのですが、Magic xpa だと
元の文字列が消えてしまう現象が起きていました。
引数に1以上を指定すれば、uniPaaSと同じ動きみたいです。
ただ今回は、カーソル位置に挿入したいので引数に1以上を指定しますと、その文字数だけ
上書きされるので、そのあたりをサポートに確認しようとおもいます。
-
ISHIJIMA様
いろいろとありがとうございます。
-
現在のMagicのフォームエディタは、MicrosoftのVisual Studioのフォームデザイナーを使用していますので、それが原因かもしれませんね。
サインインしてコメントを残してください。
コメント
7件のコメント