裏の最近のブログ記事
数値を表す文字列を数値に変換したい場合は、各数値型クラスのスタティックメソッド「Parse」を使用すれば良いわけですが、文字列が"FFFF"とか"F3C8"(←これにピンと来た人はおっさん)みたいに、16進数表記だった場合はどうすればいいんだろうという部分で行き詰まってしまいました。
最初は、VBのValやCInt的なノリで、int.Parse("0xFF");とかやってみたのですが、残念ながらうまくいかず、調べたところ、オーバーロードされたParseの第二引数"NumberStyles"に秘密があったようです。
いろいろなスタイルを指定できるようですが、16進数表記の文字列を変換する場合は、"NumberStyles.AllowHexSpecifier"を指定すれば良いようです。
int num = int.Parse("FF",NumberStyles.AllowHexSpecifier);
上記の例でわかる通り、文字列には16進数を表す"0x"などを付けてはいけません。
XAMLのサンプルはいろいろなところで見つかったのですが、C#のコードで直接追加する方法がなかなか見つからなかったのでメモしておきます。
見つけるまでは多少手間取りましたが、見つけてしまえば方法自体はいたって簡単です。
ToolTipService.SetToolTip(targetObject,
new TextBlock() { Text = "秘密結社ぎゅう☆ぎゅう倶楽部" });
次に調べなければならないのは、ツールチップのスタイルのカスタマイズ方法です。
WPFでXAMLを使用したサンプルを見つけたので、こちらもとりあえずメモ。
■WPF Custom ToolTip Example(theWPFblog)
あるタイミングで、Ctrl キー、Shift キー、Alt キーなどの修飾キーの状態を取得したいというのは良くあることですが、SilverlightではKeyboard.Modifiersを使用して、上記の情報を得ることが出来ます。
Shiftキーの状態を取得する場合は、C#だとこんな感じ
using System.Windows.Input;
...
if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
{
//Shiftキーが押されていた時の処理
}
やっと本格的にSilverlight2に携わることになりましたが、Silverlight以前にC#での開発自体がほぼ初めてなので、だいぶ苦戦しています。
先日、ワリオランドシェイクのプロモーションページを、最近ブログの更新をサボり気味の某Hさんに、メッセンジャーで教えてもらいました。
面白いけど作るのは大変そうだなあと思っていたら、てっく煮ブログのにとよんさんが、似たようなものを作って公開なさっていました。
■ワリオランドシェイクみたいに HTML が崩壊するブックマークレット(とそのソースコード)(てっく煮ブログ)
公開されているブックマークレットを使用すれば、自分の好きなページを崩壊させることが出来ます。
試しにこのページにも設置してみたのですが、画像が少ないのであまり面白くないです...。(→クリックで崩壊)
そういえば前に、映画のプロモーションか何かで、バナーをクリックすると最終的にページ全体が崩壊してしまうものを見た記憶があったのですが、上記のエントリーからリンクを辿ったところ、KAZUMiX memoのKAZUMiX さんが担当なさった、映画「ハプニング」のプロモーション用ブログパーツだったということが判明しましたので、早速右側に貼ってみました。
■何かが起きる!映画「ハプニング」のブログパーツ(KAZUMiX memo)
ブログがお仕事に繋がるなんていうこともあるんだなあと、変なところで感心してしまいました。
画像一覧で、表示形式をリストとサムネイルの一覧で切り替えられるという仕様があったので、ViewStackを使ってみることにしました。
ViewStackの上にDataGridとListを配置して、切り替えボタンのクリックイベントハンドラで、ViewStackのselectedItemIndexプロパティを変更してやると(実際にはデータバインディングを使用していますが)、あっという間にリスト切り替えの実装が完了してしまいました。
あー、楽ちん。
と、ここまでは良かったのですが、画像一覧のクリックイベントを処理するために、DataGridとListの両方にクリックイベントハンドラを追加したところ、addEventListnerでNullPointerExceptionが発生してしまいました。
まさかとは思ったのですが、どうやらViewStack上に配置された初期状態で不可視状態のコンポーネントのインスタンスは、初めて表示されるタイミングで生成される仕様みたいです。
「こんなんだったらViewStackなんか使わないで自前で処理した方が早いわボケー」
と思いつつ調べてみたところ、ViewStackのcreationPolicyというプロパティをallに設定することにより、ViewStackの初期化の際に、ViewStack上に配置されたすべてのコンポーネントのインスタンスが生成されるようになり、万事解決めでたしめでたしと相成りました。
ということで無事に一件落着したわけですが、この広い野原いっぱいインターネットの世界の中で、検索の末にこの解決策を発見したのが、同じアイレットの中のH君のCTOA日記内のエントリーだったというこのなんという偶然!
なんて言ってみましたが、実際は偶然でもなんでもなく、AirやFlex関連で困った時にいろいろ検索していると、高い確率でCTOA日記に行き当たるので、即ちCTOA日記には、有益な情報がいっぱい詰まっているということです。
そんなわけで、こんなブログより7倍(当社比)ためになるCTOA日記もよろしく。
ちょっと油断している間に、Silverlight2β2が公開されていました。
ランタイムライブラリの他に、Visual Studio 2008 用 Microsoft Silverlight Tools Beta 2(silverlight_chainer) 、Silverlight SDKと、XAMLを作成する上で欠かせないExpression Blendが併せて公開されています。
早速ダウンロードしてインストールしてみたところ、ランタイムライブラリとBlendは問題なかったのですが、VisualStudioでSilverlightプロジェクトを新規作成したり、既存のプロジェクトを開こうとすると、エラーメッセージが表示されるようになってしまいました。
明日またいろいろと試してみようと思います。
6月6日はドラえもんの日だと個人的に思っています。
AirやFlexで扱うことができるエンコーディングは、デフォルトではUTF-8ですが、サーバ側のシステムの都合などで、UTF-8以外のエンコーディングを扱う必要が出てくる場合があります。
サーバ側から返されるデータのエンコーディングがShift-JISで固定であれば、サーバからデータを取得する前に、以下の一行を追加するだけで、Shift-JISのデータを文字化けすることなく扱うことができます。
洗濯物のポケットにレシートが入っているのに気づかずに洗ってしまったとです。
ヒロシです。(あえて)
URLLoaderで取得したデータに数値文字参照が含まれていました。
表示するだけなら、LabelやTextAreaのhtmlTextプロパティにセットしてやればOKなのですが、htmlTextプロパティの無いコンポーネントへの表示や、データの編集・保存などのために直接文字に変換したいという場合のための手段としては使えませんし、Flexにもそういうメソッドは用意されていないようです。(見つけられてないだけかも?)
ということで、Unicode・16進数表記の数値文字参照限定ですが、自前の変換処理を作成して対応しました。
ということで早速ですが「裏」です。
といってもまだテスト用エントリーですが。
テストついでに「裏ってなんだ?」という疑問にお答えすると、会長の仕事に関連する技術的な情報をメモ書き程度にまとめていく予定です。
具体的にどんな内容になるかは成り行き任せですが、今のところは「Microsoft Silverlight」や「Adobe Air」に関する内容が多くなりそうです。
そんなに高度な内容を取り扱う予定はありませんが(そもそもそんな知識もありませんが)、多少なりとも同じような部分でつまずいた方々の参考になればいいなー、なんて思っています。
とりあえず最初の仕事は、「裏」カテゴリのエントリーを、インデックスページに表示させないようにMovableTypeをカスタマイズすることですが、それすら果たしてうまくいくのかどうか...。


