過去の桐井戸端BBS (桐ver.9)
19487 「利用者コード 会話」でキャンセルボタンを押すと中止したい。 こまったちゃん 2003/03/19-15:19
イベント処理で、利用者コード 会話

と書いておくと、利用者コード入力のダイアログボックスが現われて、
そこにはキャンセルボタンがあります。
そのキャンセルボタンを押すか、エスケープキーを、押したとき
if か 条件で、次へ進まないようにしたいのです。

Helpには、記述されていないようですが、キャンセルボタンがあるからには、
メッセージボックスのように、何らかの分岐が行えると思うのですが、
ご存じの方教えて下さい。

19489 Re:利用者コード 会話 で中止したい。 うにん 2003/03/19-16:24
記事番号19487へのコメント
キャンセルすると、現在の利用者コードがそのまま使われます。
その利用者コードでは開けない表を使いたいから入力させているはずなので、
その表を開いてみるくらいでしょうか。

利用者コード 会話
&元号年=-1
繰り返し (&元号年<0)
  表 "code0000" 終了状態=&元号年
繰り返し終了
if (&元号年=0)
確認 "開けなかった"
else
 確認 "開けたので続行"
 中止 表
end

19491 Re:利用者コード 会話 で中止したい。 尾形 2003/03/19-16:28
記事番号19487へのコメント
どうも。
キー入力コマンドあたりで代用するのはどうでしょうか


19493 Re:利用者コード 会話 で中止したい。 こまったちゃん 2003/03/19-17:14
記事番号19489へのコメント
じつは一般メニューから、管理者メニューへ移動するときに、
利用者コードを入れさせたいと思っているのです。
ですから、直接表を開くのではなく、とりあえずは、利用者コードが必要な表を開くための、
メニューフォームを開くだけなのです。

そこで色々利用者コードが必要な表を開いたり、閉じたりの処理をした後、一般メニューへ戻るときは、
利用者コード "" で、消してからメニューフォームへ戻りたいわけです。

なんか、隠しコマンドみたいなのが、あるといいなと思ったわけですが、、、

キー入力コマンドで、分岐して戻らせることは出来るのですが、結局、利用者コード入力ボックスは表示するわけで、
2度手間みたいですし、なんとかならないかなーということなのです。
利用者コード入力の専用小型フォームを作ることも考えたのですが、
1文字入れるたびに"*"を表示するのが大変そうで、挫折しました。
19495 Re:利用者コード 会話 で中止したい。 通りすがり 2003/03/19-19:15
記事番号19493へのコメント
本当にこまったちゃんですね。

利用者コード 会話 , &OK
とか
利用者コード 会話 , 終了状態 = &OK

なんてやって見ましたが・・・・・、エラーにもならず、無視されているようです。

>利用者コード入力の専用小型フォームを作ることも考えたのですが、1文字入れるた
>びに"*"を表示するのが大変そうで、挫折しました。

【多遊】さんのHPのここにフリーのモジュールがあります。
ご自分の目的に合わせて変更して使えませんか?
http://mokuchan.hp.infoseek.co.jp/download/dl-list1.htm

085 桐v8 イベント パスワードは ****
とか
046 桐v8 パスワード認証処理 「 PassWd11.LZH 」

組み合わせてもいいでしょうし。
ここで拾ったパスワードを元に
  利用者コード $pass
なんて可能かな?
19496 Re:利用者コード 会話 で中止したい。 通りすがり 2003/03/19-19:20
記事番号19495へのコメント
>利用者コード $pass
CGIでなかった(^^ゞ

利用者コード &pass


19497 Re:利用者コード 会話 で中止したい。 うにん 2003/03/19-19:30
記事番号19493へのコメント
>じつは一般メニューから、管理者メニューへ移動するときに、利用者コードを入れさ
>せたいと思っているのです。
>ですから、直接表を開くのではなく、とりあえずは、利用者コードが必要な表を開く
>ための、メニューフォームを開くだけなのです。

「code0000」として使うのは、その「利用者コードが必要な表」でもいいですし、
それと同じ利用者コードを設定したダミーの表でもいいです。
要するに、入れさせた利用者コードを直接一括処理から知る方法はないので、
表に設定してあるものと一致するかどうかを開いてみて調べる、ということです。
これは、パスワード自体は暗号化して保存してあり、入力したパスワードが正しいかは
もう一度暗号化して保存してあるものと比較する、という一般的な処理と似た方法です。
最初の質問は「キャンセルを検出したい」でしたが、この方法では間違ったコードを
入力した場合にも拒否できるので、
「管理者メニューへ移動する前のチェック」としてはいいんじゃないでしょうか。

19505 Re:利用者コード 会話 で中止したい。 原山 正洋 2003/03/19-22:14
記事番号19491へのコメント
>キー入力コマンドあたりで代用するのはどうでしょうか
私も一票


>何らかの分岐が
>行えると思うのですが、

この目的であれば、やはりご自分のシステムで
受け付けるかどうかは決めるべきでは・・・
桐の機能に依存するのはいかがなものですか?

19517 Re:利用者コード 会話 で中止したい。 こまったちゃん 2003/03/20-06:25
記事番号19497へのコメント
そういうことなのですか。それなら、ということで正式に開くボタンと閉じるボタンをメソッド呼び出しで、
実行してみたらまったく、希望通りの動作をするようになりました。

大変有り難うございました。

繰り返しのところの意味がよくわからなかったので、、、(・・;) っていうか、わからないままですが、、、
教えて頂いて、次回から何かに応用したいのですが、お願いできませんか?

19521 Re:利用者コード 会話 で中止したい。 うにん 2003/03/20-10:15
記事番号19517へのコメント
>繰り返しのところの意味がよくわからなかったので

チェック用の表を他の人が使用中で開けなかった場合、
終了状態の変数がマイナスの値になるので、その場合はチェックしなおすという意味です。
終了状態が0の場合に「利用者コードが違う」と判断しているわけですが、
正確には「共有違反以外の理由で開けなかった」なので、うまくいかないケースがあるかもしれません。
ちょっと思いつかないのですが。
表ファイル自体が存在しないときには開けないでしょうけど。
「開けたときだけ続行する」ような処理になっていれば、「共有違反でないが、
利用者コードが違う以外の理由で開けない」ケースに当たっても害はないと思います。

19522 Re:利用者コード 会話 で中止したい。 うにん 2003/03/20-10:24
記事番号19521へのコメント
>チェック用の表を他の人が使用中で開けなかった場合、終了状態の変数がマイナスの値に
>なるので、その場合はチェックしなおすという意味です。

すみません、今ヘルプを読みなおしたら、「リトライ=する」がデフォルトのようなので、
「リトライ=しない」で開かないと、共有違反のときに確認ダイアログが出てしまいそうです。

戻る