• ベストアンサー

chooseColorDlgのキャンセル時の動作

chooseColorDlgにて、表示した色選択ダイアログにて、 キャンセルを押下したとき、黒色を選択したと認識されます。 それを防ぐにはどのようにしたらいいのでしょうか? 以下のサイトを参考にしたところ、 「if (COL==false) {return;}」をつければいいとありましたが、(COL:カラーダイアログの返却値) 実際に試してみたところキャンセル自体の動作はよくなりました。 ですが黒を選択したときに黒色に変える動作をしてくれなくなりました。(他に調べたサイトも同じやり方でした。) これはfalse==0==黒なせいだと思います。 キャンセル押下と黒を選択したときの動作を正しくする方法がわかる方がおられたら教えてもらえないでしょうか? http://www.webstudio.jp/web_studio/tech/files/t011/t011.htm

質問者が選んだベストアンサー

  • ベストアンサー
  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.3

MSDNにキャンセルについて書いている。 http://msdn.microsoft.com/en-us/library/ms536349(VS.85).aspx initColorを指定しろってことじゃないかな? または、自力でchooseColorDlgと同じものを作るのも手です。

参考URL:
http://msdn.microsoft.com/en-us/library/ms536349(VS.85).aspx
nyororo-n
質問者

お礼

回答ありがとうございます。 参考URLのサンプルソースを試しに実行してみました。 その結果、 「初期の文字色を白に設定し、ダイアログを表示させ、キャンセルを押下。」で文字色が黒くなる現象が発生しました。 初回の1度のみしか起きないみたいなので何かしらの対処法がありそうな気がします。 もう少し調べてみます。

nyororo-n
質問者

補足

書き忘れていましたが、 OS:WindowsXP Pro SP3 ブラウザ:IE7 です。

その他の回答 (2)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>オーバーライドをして、返却値を文字列に変更する javascriptはオーバーライドという概念が無い、あるいは希薄だよ。 だって↓みたく書いても何も怒られないしむしろ普通の使い方 var i=0; i="test"; i=[1,"B"]; i=document.getElementByID("form1").innerHTML; i=(i==[])?"null":i; (無意味に代入を繰り返すのは行儀が悪いけど飽くまでも例だから)

nyororo-n
質問者

お礼

>javascriptはオーバーライドという概念が無い、あるいは希薄だよ。 そうだったのですか、ありがとうございます。 原因はNo.3さんが言われたとおり、 sInitColorでした。 それで一度出来なかったのはただの凡ミスであることが判明しました。 みなさま、ありがとうございます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

falseの場合はfalseで返すのではなく文字列で返して受取側で数値か文字かを判別したら良いんじゃない? 返値を直接使う形になっていない事が大前提ね。

nyororo-n
質問者

お礼

お早い回答ありがとうございまう。 javascriptなどのオブジェクト指向はあまり詳しくないので間違っているかもしれないので確認させてください。 以下の認識で正しいでしょうか? chooseColorDlgを継承後、オーバーライドをして、返却値を文字列に変更する。 やり方は現状わからないので認識があっているなら調べてみます。

関連するQ&A