過去の桐井戸端BBS (桐ver.9)
27430 桐9の計算機能フォーム上にボタンとして設置したい 尾形 2004/08/19-17:41
よろしくお願いします

http://www.kthree.co.jp/2seihin/1kiri9/2tips_kowaza/09/index.html
桐9から計算機能が追加されていますが
これをフォーム上にボタンとして設置したいのですが
無理でしょうか


27432 Re:計算機能を制御したい アックン 2004/08/19-19:22
記事番号27430へのコメント
尾形さん、こんばんは。

ソース値取得メソッドで文字列タイプの変数に代入して、
コマンドコマンドで式の値を求めて、ソースと合致するタイプの変数に代入してから、テキストに戻すと。

やり直し(Shift+F11)は、変数値を一時的に保持しておくと。
だめかなあ。(^^;

アックン(=^・^=)
27433 Re:計算機能を制御したい hidetake 2004/08/19-21:04
記事番号27432へのコメント
>ソース値取得メソッドで文字列タイプの変数に代入して、
>コマンドコマンドで式の値を求めて、ソースと合致するタイプの変数に代入し
>てから、テキストに戻すと。

http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi?function=logview_html&no=4#198

このことですよね。
27436 Re:計算機能を制御したい 悲しげ 2004/08/19-21:42
記事番号27433へのコメント
hidetakeさん wrote

>このことですよね。

思い出しました。私はv9になってからこの手の記述は抜いてしまったので、
v8用のものを引っ張り出してきました。以下、コピペしておきます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
******** 以下、いか様さまの項目電卓より *********

proc t某::入力前(参照 文字列 &編集文字列)
 &編集文字列=#s(&編集文字列,",","")
end

proc t某::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
 call (&編集文字列 .and &モード),command(&編集文字列,&入力継続)
end

proc t某::編集文字列変更()
 method &this.編集文字列取得(&WRKSTR)
 call (#文字位置(&WRKSTR,",") .and #半角(#sstr(&WRKSTR,1,1))<>"="),コンマ処理(&WRKSTR)
end

proc command(参照 文字列 &WKSTR,参照 長整数 &WK継続)
 エラー処理 手続き=error
 if(#半角(#sstr(&WKSTR,1,1))="=")
  &STRW="&件数W"+&WKSTR
 else
  &STRW="&件数W="+&WKSTR
 end
 コマンド &STRW
 if (&err)
  &WK継続=1,&err=""
  return
 else
  &WKSTR=#str(&件数W)
  エラー処理
 end
end

proc error()
 確認 "入力値の値もしくは計算式が間違っています"
 &err=1
end

proc コンマ処理(参照 文字列 &WRKSTR2)
 変数宣言 整数{&Slong}
 &WRKSTR=#S(&WRKSTR2,",","000")
 method &this.編集文字列設定(&WRKSTR)
 method &this.編集文字列長(&Slong)
 method &this.編集選択位置設定( &Slong+1 ,0 )
end
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
でも、これだとわざわざ釦をクリックするまでもなく、入力の最中に計算が実行されますね。(^^;)
あえて「釦で」と云うのは、個々のテキストについて「入力*」等のイベントを設定せずに、汎用的にやりたいと云うことなのかな?
v9で「ソース値更新」はファミリで扱えるようになってけど、「入力*」系は扱えないですもんね。さて・・・・。

27437 Re:計算機能を制御したい hidetake 2004/08/19-21:59
記事番号27436へのコメント
まぁ〜あまり好ましい方法とは言えないですけど
桐自体でキーコード送る方法はないと思いますので
WSH を使って Shift + F9 を送る方法もあるにはあります。

更新モードの関係は別として次のようなスクリプトを作っておいて、コマンドボタンのシェル実行で実行する・・・

sendkeys.vbs
---------------------------------------------
WScript.CreateObject("WScript.Shell").Sendkeys("+{F9}")
---------------------------------------------
フォームのボタンクリックで自分自身に対し実行されればよいので誤爆はされにくいとは思います。

27438 Re:計算機能を制御したい hidetake 2004/08/19-22:13
記事番号27437へのコメント
>WScript.CreateObject("WScript.Shell").Sendkeys("+{F9}")

ちなみに「元に戻す」ボタンも必要であれば Ctrl + z に割り付けられているので、次のスクリプトになります。

sendkeys2.vbs
---------------------------------------------
WScript.CreateObject("WScript.Shell").Sendkeys("^z")
---------------------------------------------


27440 Re:計算機能を制御したい hidetake 2004/08/20-09:09
記事番号27438へのコメント
>ちなみに「元に戻す」ボタンも必要であれば Ctrl + z に
>割り付けられているので、次のスクリプトになります。

そう言えば、わざわざこんな事しなくとも、コマンドボタンには元々「元に戻す」機能はありましたね! (^^;
27442 Re:計算機能を制御したい 尾形 2004/08/20-09:42
記事番号27430へのコメント
どうも皆様ありがとうございます
過去の投稿も見てましたので、イベントをゴリゴリ書けば
できるのはわかってましたけど、どうも好きでなかった (^^;
ので、これなら簡単に色々な場所で使えると思ってお尋ねしてみました
簡単にはいかないようですね

ボタン機能への追加忘れのような気がするけど
違うかな (^^;>K3さん

27443 Re:計算機能を制御したい きりぎりす 2004/08/20-13:01
記事番号27442へのコメント
ちなみにソースが、
数値系(整数とか)の変数であれば計算式を入力することによって
その結果が変数値として反映されます。(あまり知られていない裏技です;)
ただ、IMEの設定が無視されてキーボードからは半角しか入力出来ないので
桐の関数とかは入力出来ませんが張付け(ペースト)は可能です。
 念のため御参考までに。^^

戻る