ざ つ だ ん 。 (12/03/01~)
12/03/01
・
21th デベロッパーキャンプ 資料加筆修正
Update 4 は、
DataSnap 絡み
デバッガ絡み
FireMonkey 絡み
の修正が多い。細川さんも俺も涙目 (^o^)/
・
Rad Studio XE2 Update 4
公式フォーラムの FireMonkey スレッド "Update 4: EVERYTHING blurry!" で 「ブラーが!」、「ブラーが!」 言われてるけど、TrueType のフォントをチョイ大きめで使えばむしろキレイに見えるんだがなぁ...フォントサイズを 8pt とか 9pt とかでデザインしてるんじゃないのか?
てか、ハッキリクッキリフォントだけ 使おうと思ったら、FireMonkey のウリの一つである "回転&スケール変更ができなくなる" じゃないか。
2 012/3/4
・
今日。
日付のトコがおかしいのはワザとです。
・
あと一週間か...。
毎度の事ながら 「早く当日にならないかなー」 とか 「当日が来なければいいのに」 とか複雑な感情が入り混じるなぁ、この時期になると。
さて、今回のデブキャン は "僕の担当セッション" と "懇親会" 以外は USTREAM でも配信される模様です。僕自信がリモート参加なので、担当セッションは GotoWebinar 経由 のみとなります...会場に僕の代わりの "クマのぬいぐるみ" を置いといて USTREAM で中継するというのも絵的にはシュールで面白いと思いますが (w
こういった形態の場合、リモートで参加される場合には、GotoWebinar をメインに USTREAM も同時進行で観るのがオススメです...会場の雰囲気が伝わってきますのでね。
Update 4 がリリースされた事により、ネタがすべて見直される事になりました。
ボツになったネタ
内容が変更になったネタ
新しく追加されたネタ
なんだかんだプラスマイナスした結果、当初の予定より 1 ページ増えてしまいましたとさ (w
・
IBConsole 日本語版+α
Unicode 版 (32bit / 64bit) の rel.18 をリリースしました。XE2 Update 4 で再コンパイルされています。
スタイル (VCL スタイル) も変えられますよ。Update 4 でスタイルが増えている ので、確認してみて下さいね。
12/03/05
・
ONKYO TW2A-A25Z7CK
店頭で実際に触る機会があったので試してみた。
え?なんかモッサリ。チューニングしていないとかそういうレベルじゃなく遅いぞ?画面解像度も TW317 シリーズ より小さいのに何故だ?エクスペリエンスインデックスを確認したら、最低は CPU で "2.1" 。おいおい、TW317 シリーズ より遅くなってるじゃねーか...orz
・
右手座標系&左手座標系
指の向きは+方向。人差し指が向いているのが +Y、親指が向いているのが +X、中指が向いているのが +Z。ちなみに FireMonkey は右手座標系。
この右手座標系と左手座標系を説明してあるサイトには間違っているものもある。
フレミングの右手の法則で説明。
画面で +Y が下、+X が右なのは左手座標系。
違うから。 また、20th デベロッパーキャンプの資料 にある図も間違ってはいないが、FireMonkey の画面上での上は +Y じゃないし、手前が +Z でもない...ただ、誤解を招きかねない図ではあるが "間違ってはいない"。
画像は FireMonkey の座標系 (見やすいように Y 軸を少しだけ回転させてある。三角錐のある方向が+)。これで確認してみる事にする。自分の右手を使って試してみると、
(右手の) 人差し指を下に向ける (Y 軸)。
(右手の) 親指を右に向ける (X 軸)。つまり手の平は外側を向く。
(右手の) 中指を前方 (奥) に向ける (Z 軸)。
こうなる。左手でやろうとすると、中指は手前を指してしまう...左手座標系ではないと言う事だ。ここまでやっといてアレだが、回転後には軸の方向が変わってしまうし、カメラの位置や向きも関係してくるので、実は画面上での上下左右にはあまり意味がない。
右手でやると手がつりそうになるので、左手と鏡を使うといいかも。
(左手の) 人差し指を下に向ける (Y 軸)。
(左手の) 親指を右に向ける (X 軸)。つまり手の平は内側を向く。
(左手の) 中指を手前に向ける (Z 軸)。
左手 (手の甲側) を鏡に映す。
これならやりやすい。但し、左手の中指を下に向けてしまうと 「ちぇけら~♪」 になってしまう ので注意が必要だ (w
12/03/06
・
IBConsole 日本語版+α
新版をリリースしました。
Unicode 版 (32bit / 64bit) rel.19
ANSI 版 rel.62
修正内容ですが、クエリの実行時間が限りなく短い時、"'0.0' は正しいタイムスタンプではありません" エラーが出るというバグが fix されています。
MSecsToTimeStamp() に 0 が渡されるとエラーになるというものですが、前からそういう仕様でしたっけ?
調べてみたら、やはり XE2 固有の問題のようでしたので QC 入れました。ちなみに、MSecsToTimeStamp() 関連の QC が別に投稿されていまして、
...Open されてますけど、これってバグだったのですか?以前、IBConsole ではこのようなロジックで回避した のですけれど...。
12/03/07
・
FireMonkey の 3D 関係を深く理解するには
3D 関連で数学や物理の話をしていたら何時間あっても終わらないので、デブキャン ではその辺の話は出てきません。ですが、3D 関連を深く理解するには "ある程度の数学や物理の知識が必要" なのは確かです。そこで、とりあえず書籍を一つ紹介しておこうと思います (あ、逃げたw)。
オライリーの "実例で学ぶゲーム 3D 数学 (ISBN-13: 978-4873113777)" です。リンク先の Amazon で中身を "なか見!" できますので、どういった内容なのかはすぐに把握できると思います。"ゲーム 3D 数学" と銘打ってありますが、実際には 3D 全般を網羅した内容となっています。
FMX.Types3D には、行列演算等のメソッドが揃っているのですが、数学や物理...それも 3D 関連の知識がないと使いこなせないような気がします (ヘルプ / DocWiki は英語版であっても解説は皆無に等しいですし) ので、"比較的安価ではあるけれど一通りの解説がなされている専門書" が手元にあるとイザという時に役に立ちそうです...かくいう僕も数学は苦手なので、この書籍を購入し、空き時間を見つけては勉強しています。
"勉強している" とは言っても、別に "イチから 3D のフレームワークを作るための勉強をしている" という訳ではなく、単に 3D の概念を知るためだったり、FMX.Types3D の各メソッドが何をするもので、どう使うべきものなのかを調べるという事をやっています。DirectX、OpenGL、OpenGL ES を個別に勉強するよりはこっちの方が手っ取り早いでしょう、多分。
なお、この書籍は第 5 刷以前のものに幾つかミスがあり、オライリージャパンのサイトに正誤表が掲載されています 。古本で買い求める場合は刷数を確認した方がいいかもしれません (所有しているものは新品で購入したもので、6 刷となっています)。
・
右手座標系&左手座標系のアレ
某所ではしっかりと役に立ったようだ (謎)。某所で出てくる話は上で紹介した書籍 でも解説されている (謎)。てか、普通に英語を読み書きできる人間でも FireMonkey の 3D は難解だというのか?うーむ、こんな書き方したら、高橋さん位しか笑ってくれない...かもなぁ (謎)。
12/03/09
・
第 21 回デベロッパーキャンプ - Day 1 -
1日目は、本日 14:00 から開催です。
...よくよく考えてみたら 【G1】 セッションの内容如何によっては喋る内容を一部変更しなきゃだぞ?
・
【T4】 「FireMonkeyファーストインプレッション」 関連情報
とりあえず、反省会は後回しにする事にして関連情報を一気にアップ。 後日公開されるであろう資料のために、スッ飛ばしたネタも全部含めてあります。
・
【T4】 セッションの内容を FireMonkey Tips に反映
追加は 1 本ですが、中身が結構更新されています。まだ、すべてのセッション内容を反映できていませんが。
・
【T4】 セッション関連動画 (YouTube)
新しい動画が 2 本追加されています。セッション中でサラっと流した Update 4 で追加された SubDivisions 関連です。
FireMonkey ~ Subdivisions とは何ぞや? ~ [1080p 対応]
VIDEO
FireMonkey ~ Subdivisions と鏡面反射 ~ [1080p 対応]
VIDEO
動画の方が解りやすいと思います。既に公開済のものは以下になります。
・
【T4】 セッション関連 QC
セッション中で出てきた問題に関する QC です。
TProxyObject に TModel3D を指定できない
TEllipse3D / TPath3D / TRectangle3D / Text3D の TwoSide プロパティを True にしても、前面と背面の裏面が描画されない
※ XE3 で修正されています。
TCone の SubdivisionCap には 3 以下の値を指定できない。
TCylinder の SubdivisionsHeight を変更すると変な形になってしまう
オブジェクトインスペクタで TCylinder の SubdivisionsCaps を 1 にして実行すると SubdivisionsCaps が 2 になってしまう (実行時にコードで指定すれば OK)
TStringGrid でインプレースエディタが常に最初のカラムにしか描画されない (キャレットは正常なので入力は可能)
※ XE2 Update4 Hotfix 1 で修正されています。
他には、
TComboBox のリストは常に下にしかドロップダウンしないので、フォームの下部には配置できない
VCL の埋め込みデザイナにあった仮想画面位置の表示がない
TMemo はスケール変更に追従しない (入力時)
それと、これは僕が投稿した QC ではありませんが、QC#103696 に関連して
FMX のフォームデザイナは IDE よりデザインフォームが大きい場合、スクロールバーが表示されない
QC#101933 と QC#103696 のどちらかが Fix されればどうにかなるのですが...。もしよろしければ Vote してやって下さい m(_ _)m
・
【T4】 DXScene のデモを眺めてみると将来の FireMonkey が見えるかも?
CodeCentral には FireMonkey の前身 (の一つ) である DXScene のデモアプリがアップされています (結構前からですが)。どこかで見たようなデモもあり、見た事のないデモもあり...。
※画像をクリックすると別ウィンドウ (タブ) で開きます。
・
【T4】 セッション資料に出てきた (かもしれない) デモアプリとそのソースコード
ご自由にお使い下さい。
・
【T4】 セッション資料補足資料
Twitter (#dcamp_jp) に流したものと同一です。上に書いたトピックと重複しているものもありますが、ご了承ください m(_ _)m
それと、資料巻末に列挙してあった "FireMonkey 関連情報 & 資料" です。
Twitter の情報と重複しているものは省いています。
・
【T4】 セッション関連情報は以上となります。
時間が全く足りませんでしたが、全部盛り込んでいたら何時間になったのやら...(^^;A
・
【T4】 大反省会会場 (1)
未消化ネタをまず片付けます。
TStringGrid でセルの色を変えるには?
セルの色を変更する方法に関しては、高橋さんが TEAM Japan ブログで解説されています のでそちらをご覧下さい。
TStringGrid に関するいいニュースと悪いニュース
いいニュースの方ですが、Update 3 までは TStringGrid で日本語を入力しようとすると、場合によっては最初の 1 文字がアルファベットのままになってしまうという問題がありました。例えば "あいうえお" と入力すると "Aいうえお" のようになってしまうというものです。これは Update 4 で修正されました。
悪い方のニュースですが、Update 4 だと、インプレースエディタが左端の最初のカラムにしか描画されません (QC#103933 )。2 番目以降のカラムをクリックしても白いインプレースエディタが最初のカラムに描画されます。キャレット位置は正常なので入力はできます。
HD アプリにはとりあえず貼っとけ TScaledLayout
alFit ではなく alClient にすると、例えば 1280×1024 でデザインされたものを 1920×1080 等のワイドディスプレイで最大化すると、文字が縦に潰れたようになってしまいます。アスペクト比を保ったままフォーム内で最大にリサイズするには alClient ではなく alFit を使います。
TDisk が Update4 で追加されている。
円盤です。
半透明オブジェクトの描画順の制約
この制限は FireMonkey のせいではありません。作成順はコントロールを右クリックして前面に移動すれば後で作成された事になります。コードで書くなら、半透明でないオブジェクトはそのままで、半透明のオブジェクトのみをリストに突っ込み、カメラからの距離を計算して、ソートし BringToFront() なり SendToBack() すればいいと思います。
それと、Update 4 なら Diffuse にアルファカラーを指定しなくても単純に Opacity プロパティで半透明にできます。
ライト
光量が足りない場合には、複数の TLight を設置します。Update 4 だと、TLight に反射光の設定があります (光量が足りない時は、まず Ambient / Diffuse / Specular をすべて White にしてみましょう)。光源なのに反射光の設定があるのは変な気がするかもしれませんが、光の成分を限定して投光できるという事です。ライトに影響を受ける 3D オブジェクトの反射光を一括して指定する用途に使えます。この時、カラー値にアルファ値を指定してもそれは無視されます。
例えば、Specular を設定してある複数のツルテカな 3D オブジェクトがあったとすると、この時 TLight の Specular に NULL を指定する事で、すべてのツルテカな 3D オブジェクトが一斉にツヤ消しになります。
TDummy
ネストされた TDummy は多関節を表現するには必須のテクニックです。
TProxyObject
TModel3D を代理オブジェクトに指定できないのは痛いです。
Delphi (神殿) の 3D モデル
なんたらかんたらアテナイなんとかデルポイっていうギリシャ語のタイトルです。訳すると "アテネの財宝庫デルファイ" という事で、英語のタイトルのまんまでした。このレベルのモデルデータだと、フォームデザイナで読み込ませた状態でプロジェクトを保存しようとするとメモリ不足で保存に失敗するかもしれません。
初音ミク
一応断っておきますが、単に好きだからという理由で使っているのではありません。
"テクスチャ画像のフォーマット" とは、具体的には TGA 形式の画像の事です。FireMonkey は TGA 形式のテクスチャを読み込めませんので、TGA を PNG に変換して、DAE ファイルをテキストエディタで開いて中に列挙されているテクスチャファイル名の拡張子部分を TGA から PNG へ変更してやる必要があります。
これに関連してちょっと苦言なのですが、サンプルフォルダに FireMonkey\COLLADAModelViewer というのがありまして、この中にある FireMonkey 君の DAE ファイルには TGA テクスチャが使われているんです。で、ちゃんとテクスチャが貼られた状態で表示されます。「僕のやり方が悪いのかな?」 と思ってよくよくソースを確認したら、DAE を別の方法でインポートしてるんです、このデモ。「それはないんじゃない?」 と思っちゃいました。
それと、TGA を PNG に単純置換してもテクスチャ付きで読み込ませる事ができなかったんですよね、この FireMonkey 君は (イロイロ試したんですけどね...orz)。そういった背景もあり、初音ミクさんを多用するハメになった、という訳です。
TMesh
メッシュというのは...点や線、面等で構成されたオブジェクトの事です。ボーンというのはその名の通り骨組のことで、手の先を移動させると、手首、肘、肩の関節を自動的に移動させたりできる機構の事です。FireMonkey はこれを持っていません。例え持っていたとしても、ゲームエンジン等の物理エンジンがなければ人物モデルを歩かせたり踊らせたりするのは困難だと思います。
Update 3 以前の 3D オブジェクトに RotationCenter プロパティがなかったのは?
Update 3 以前の FireMonkey が 3D オブジェクトを原点ベースでしか回転できなかったのは、座標計算にクォータニオン(四元数 )を使っているからだと思われます。
クォータニオンという単語を聞いたことのない方は、とりあえず 「そんなものがあるんだね」 程度の認識でいいと思います。クォータニオンを使わないで回転を行うとジンバルロックという現象がおきます。
ジンバルロックというのは、これまた 「そんなものがあるんだね」 程度の認識でいいと思いますが、簡単に言えば X / Y / Z 軸が特定の角度で揃うと回転がおかしくなる現象のことです。「三軸あれば自由に回転できるハズだろう?」 って思っちゃいがちですけどね。
任意の座標でクォータニオンを使って回転させるには、まず、回転軸を原点に合わせて、クォータニオンを使って回転させ、元の位置に戻すという作業を行います。Update4 で追加された 3D オブジェクト用の RotationCenter は結局の所それをやっているのだろうと思います。
Update 4 を適用していれば RotationCenter で任意の位置での回転が可能になりますが、ちょっとややこしくなるので、回転軸を原点に設定するという手法がまるっきりバッドノウハウになってしまうという訳ではありません。
3D 人物モデル
人物モデルは歩かせられても、ボーンや物理エンジンがないと、服とか髪とかを自然に動かせません。女の子を歩かせてみようとしたら、足がスカートを突き抜けたりします。ロボットみたいに関節ベースで動くものだと比較的簡単だと思います。
ロボットといっても "ゲッターロボ" とか "コーラルQ" みたいなむちゃくちゃな変形をするものは無理ですけどね。
TKinect for Delphi
上でボーンもなければ物理エンジンもないので人物モデルを動かすのは大変だと書きましたが、例えば関節の情報等を取り込んで、このネストされた TDummy に当てはめてやる事はできそうです。いわゆるモーションキャプチャですね。ひょっとすると TKinect for Delphi とかが使えるかもしれません。
TComboBox / TListBox のフォントサイズを変えるには?
右クリックしてカスタムスタイルを作成し、TListBoxItem の Font プロパティを変更します。ただし、現状 TComboBox からでは TListBoxItem のカスタムスタイルは作れません。TListBox で TListBoxItem のカスタムスタイルを作り、TComboBox で利用する事になります。
ローカライズについて
VCL の場合には IDE に統合されたトランスレーションマネージャがありましたが、FireMonkey の場合にはトランスレーションマネージャが使えないので TLang というローカライズ用のコンポーネントを利用する事になります。
翻訳メモリ (対訳辞書) として tmx なり、tbx なり が利用できれば多少はローカライズも楽になるのですが、TLang で翻訳メモリを使う方法は今の所ないように見受けられます。
"ノーティファイアがプロパティ"?
"何とかの一つ覚え" のように OnChange イベントにノーティファイアを記述しなくてはならないのなら、いっそプロパティでオンオフできるようにしたらどうなのかな?というものです。 もちろん、ノーティファイアは OnChange だけに書くわけではないのですが、「簡易的な通知手段としてあったらいいのにな」 という意味で喋ってみました。
"もう一つの設計思想" とは?
全体的には FireMonkey は Embarcadero 版のマルチプラットフォーム向け WPF なのかな? という印象を受けました。
セッション冒頭でほのめかした FireMonkey のもう一つの思想というのは "UI とコードの分離" の事です。WPF と同じ考え方ですが FireMonkey の方は分離したものをくっつけようとした時が楽な気がします。
足りないもの
FireMonkey の前身である VXScene ですとか、DXScene にあって、FireMonkey に実装されていない機能がまだあります。
クロスプラットフォームの関係がありますので、全部が全部実装されるとは思っていませんが、一部は後々実装されるのではないかと思っています。
FireMonkey Q&A
"FireMonkey Q&A" に "ロードマップ" と記述のあるもの...つまり、将来的にサポートされるであろうものは、
ビデオコンポーネント。
ActionList
RichEdit のようなもの。
C++Builder での iOS 向け開発。
Android 対応。
Linux 対応。
紛らわしいですが、この内容が載っているのは英語で書かれた "FireMonkey Q&A" です。日本語の "FireMonkey Q&A" と英語の "FireMonkey FAQ" は内容が同じですが、英語の "FireMonkey Q&A" は内容が違います。
VCL フォームと FMX フォームのミックス
VCL と FireMonkey を混ぜる方法の一つは、高橋さんが TEAM Japan ブログで書かれています 。要は、VCL フォームに貼りつけたパネルを親として、そこに FireMonkey のフォームを貼り付けるというものです。
別の手法ですが、Simon Stuart さんの手によって MonkeyMixer というアドインが現在開発中です。これは、Embarcadero さんからリリースされるのでしょうか?詳細は不明です。
デブキャン資料の説明画像
ほぼすべてを FireMonkey で作ってあります
とりあえず、こんな感じです。ネタの箇条書きから文章を起こしたので、殴り書きに近いです。ネタ自体はなんとなく解ると思うので、読み終えたら、"【T4】 セッション資料補足資料" を読み返してみて下さい。
・
【T4】 大反省会会場 (2)
...さて、本当の反省会です。
今日までの FireMonkey の...というか、XE2 の情報というのはエンバカさんのものは製品紹介のようなものが多かったです。ちょっと擁護しておくと、セミナー等で "毎回似たような機能の紹介しかされない" のには理由があって、XE2 はあまりにも新機能が多すぎる のです...YouTube チャンネル を観ても、得られる情報は "広く浅く" なのです。
但し、RAD Studio XE2 のすべての新機能を "広く浅く" 紹介しようとすると、以下のような変な情報となってしまいます。
FireMonkey フレームワークを使って Windows / Mac OSX / iOS の開発が可能
64bit Windows 用アプリが作れる。
DataSnap モバイルコネクタを使って Android / BlackBerry / iOS / Windows Phone 用のアプリが作れる。
PHP コードをネイティブ変換可能
.NET アプリも作れる
どれひとつとして嘘ではないです。ただ、これを限られた時間の中で紹介しようとすると "4大スマホOS対応のアプリ開発ツール「RAD Studio XE2」とは (@IT)" のような記事になってしまいます。さて、この記事を読んで Delphi / C++Builder それぞれで "できる事とできない事" が理解できるでしょうか?この文面から 「C++Builder XE2 では FireMonkey を使った iOS アプリ開発はできない」 という情報を読み取れるでしょうか?
【T4】セッション では、曖昧さを排除するために "FireMonkey の機能" に絞って話を進める事にしていました。ですから、「Windows API 呼べばできるよ」 とか、「Cocoa 呼び出せばできるよ」 とか、「DirectX / OpenGL まで潜ればできるよ」 とかそういったものは一切排除しました。それでもあの量になってしまった という事です。
無難に 1h で収めようとすると既存の Firemonky 紹介セッションと何ら変わらなくなってしまい、"YouTube チャンネル 観てたほうがマシ" という内容になりかねなかったので今回のようなセッション構成になった訳ですが、結果的にはあのような中途半端なセッションになってしまいました。詰め込んだつもりはないのですが、それでも情報過多だったようですね。
・
"【G1】 2012年 - エンバカデロの製品戦略" の感想
兎にも角にも C++Builder をお願いします。折角 Delphi で 64bit アプリが作れるようになったのに、C++Builder で 64bit アプリが作れないために "助けてブラザー" ができません...いあ、Windows のヘッダを大量に拡充してくれるというなら話は別ですが 。"C++Builder の FireMonkey で iOS 開発ができない" 件は、Delphi での iOS 開発を考えると問題点が解ります。C++Builder には FPC に相当するコンパイラが存在しないのです。C2P トランスレータでも作らない限り、C++Builder から FPC を利用する事はできない訳ですから。
AppWave は前にも書きましたが 、"Delphi 2007 の件をどうにかして欲しい" と切に願います。
未だ Open のままなんですよねぇ...。
ER / Studio のモデリングとコーディングの分離の話が出ていましたが、FireMonkey もその方向性が見て取れます。分業がトレンドなんですかね?
・
"【T2】 実践!Delphiデバッグテクニック" の感想
細川さんのセッション。IDE と GotoWebinar が最前面ウィンドウを取り合いしているのか、デバッグプロセスが変な事になっているのかよくわかりませんが、デモができない状態に陥ってしまわれたようです。デブキャン恒例 "デモの神様" が...orz
デモの件は確かに残念ではありましたが、スライド内に記述のあったデバッグテクニックに関しては、「それは正直知らんかった!」 的なものが結構あり、今後のデバッグ作業に活用できそうなものばかりでした。かなり内容が濃かったです。スライドのすべてをスクリーンショットに収めましたので、資料が配布されるまではこれを眺めながら勉強したいと思います m(_ _)m
・
"【T3】Delphi / C++Builder + FastReportで作る実用レポート出力" の感想
DH 山本さんのセッション。FastReport はGUI で作成できるレポートツールの中では現在最も有用だと思われます (DH 山本さんはかなり以前から FastReport をプッシュされていましたね)。
セッションはデモメインでしたが、Embarcadero Edition とフル機能版の違いのフォローもあったりと、隙のない丁寧なセッション内容でした。なお、FireMonkey では FastReport は使えません。VCL で "印刷サーバ" を作って、そこへメッセージなりデータを投げれば印刷してくれるようなのを作るといいかもしれません。レポートツールを使わないで FireMonkey から印刷する方法は Mr.XRAY 氏のサイトに情報があります 。
・
"【W5】FireMonkeyアプリケーション構築実習" の感想
当方の環境のせいかもしれませんが、音声が何度も途切れてマトモに聞き取れない事が何度かありました。ワークショップの内容は Marco Cantu 氏のホワイトペーパー がベースになっているようでした。まぁ、私はこの裏で必死になって【T4】セッション関連情報を書き殴っていた 訳ですが...orz
12/03/10
・
第 21 回デベロッパーキャンプ - Day 2 -
2日目は、本日 9:00 から開催です。
ちょっとまだ昨日のセッションの失敗を引きずってマス...orz
・
FireMonkey と IM(E)
「何かおかしいトコロがある」 とだけ言い放ってしまうのはあまりにも暴力的なので、具体例を。
TStringGrid または TEdit に日本語を入力してみます。"あいうえお" と入力し、未確定のままで確認してみるとキャレットは何故か "え" の後ろにあります。ここで 〔BackSpace〕キーを押すと "お" が消えて、キャレットは "あ" の前に移動します。
また、TEdit に未確定文字列が残った状態で他のコントロールに移動すると、TEdit に戻っても未確定文字列が削除できなくなる事があります。
加えて、Google-IME を使っている場合には、スペースキーを何度押しても変換候補は表示されず、サジェスト機能も使えません。
ATOK 等他の IME をお使いの方がいらっしゃいましたら、入力系のコントロールで一通り日本語入力を試してみて下さい。
追記: ATOK はダメでしたか...(QC#104084 のシスオペコメントを参照)。TEdit でダメという事はセルコントロールで TEdit を使っている TStringGrid も NG という事ですね。Google-IME は IMM で動作 しており、ATOK はデフォルトで TSF で動作しています。ひょっとすると ATOK も IMM モードで動作させればある程度は OK なのかもしれません。
TMemo に日本語を入力しようとすると未確定文字列がコントロール内に収まりきれていない件です (何故か 2 行目からは OK)。
日本語入力関連で何か不具合があったら QC 入れろとまでは言いませんので、公式フォーラムにでもご報告下さい。
・
Delphi FireMonkey Tips
昨日の 【T4】セッションの内容を反映させました。
駆け足になってしまった箇所です m(_ _)m
・
"【W6】 挑戦!Delphi クイズで実力チェック" / "【T7】 RadPHP でスマホアプリを作ろう!"
所用で聴講できませんでした...残念。
・
"【T8】 Delphi 言語再入門" の感想
細川さんとふーさん による Delphi 言語講座。Delphi 2006 以降、地味に言語仕様が拡張されていますが、再確認するいい機会でした。資料が配布されたら、またじっくり読んでみたいですね。
・
"【T9】 Delphi / C++Builder で iOS / Mac アプリを作ろう!" の感想
"String が ANSI で UTF-8" のくだりは、FPC の String が ANSI で UTF-8 だからです (FreePascal の Unicode 対応は UTF-8 ベース)。iOS 開発の場合には FPC を考慮しなくてはいけないのが個人的には...将来的に FPC 廃止されたら、多分 "バージョン (XE2) 依存のバッドノウハウ" ですしね。
Open CL に関しては以前もご紹介しましたが、"Delphi OpenCL" というプロジェクトがあります。
12/03/12
・
第 21 回デベロッパーキャンプ 関連の togetter
全セッション分、トゥギャられています。
【T4】は自分で投下したツイートがかなりの割合を占めているような...(^^;A
・
使い方が解ってくると楽しくなってくる FireMonkey
デブキャン で端折った (消化できなかったのではなく) ネタの一つである "投影について" を FireMonkey Tips に追記しておきました。
FireMonkey Tips は、既にデブキャン ネタを反映したものになっているので、"FireMonkey で使えるコンポーネントは? (FireMonkey Tips)" の各カテゴリを参照すれば、コントロールの基本的な使い方は解ると思います。ちなみに、各カテゴリのリンク先は DocWiki ではなく独自ページです ...中に入ってみるとイロイロ書いてありますよ。
DocWiki は 3D 関連のコンテンツが遅れ気味な上、Update 4 で追加されたものに関しては英語版ですらコンテンツがなかったりします。そういった事情もあり、当サイトでは 3D 関連を優先的にやっています。デブキャン でも言いましたが、HD (2D) 関連のコントロールは触ればなんとなく解ります しね。
・
コンポーネント一覧
いや...確かにあるんですけどね、VCL 版は 。それの FireMonkey 版がないので、同等の "FireMonkey で使えるコンポーネントは? (FireMonkey Tips)" を書く事にしたのですよね...DocWiki からは目的のものが探しにくいし。
ちなみに、VCL のコンポーネントに関しては、DocWiki よりも AFsoft さんの Delphi 2010 の記事 の方が解りやすいと思います。(失礼ながら) 目的の記事を探すのが若干難しいのですが、XE2 でも充分に参考になる秀逸な記事です。やっつけですが、AFsoft さん の Delphi 2010 の記事をフレームで一覧表示する html を書いてみました > afsoft_d2010.zip 。適当な場所に解凍してから、index.html をブラウザで開いてみてください。
追伸: AFsoft さん と AKT さん を素で間違ってしまい、AKT さん にはご迷惑をお掛けしてしまいました...誠に申し訳ありません m(_ _)m
・
ん?
2年前のデブキャン にも出てたんだっけ...ん?2年前? 何か重要なことを忘れているような、思い出したような。
12/03/14
・
言う程簡単ではない事は承知の上で。
Jw_cad って有名な CAD ソフトがありますが、2012/02/19 に ver7.11 がリリースされています。リリースノートを見てみると、
◆Version 7.11 での変更点は以下のとおりです。(2012/02/19)
・DXF出力時に3DSフォーマットのデータを同時出力する機能を追加した 。
・SPEEDビューワーから3Dデータ転送で受け取ったデータをDXF出力できるようにした。
...なんですって?
Jw_cad で DXF を出力 (これと同時に 3DS データが出力される)。
(画像は Jw_cad の 3DS 出力設定画面。[設定 | 基本設定] にある)
Google SketchUp で *.3ds をインポート。
読み込まれたデータは線データなので、これを面データにして立体化する。
(画像は面データ作成中の Google SketchUp )
COLLADA 形式 (DAE) でエクスポート。
FireMonkey の TModel3D へインポート。
オウ!こういう連携もアリなのか。
けれど、そもそも Jw_cad で図面引いたり、"面データにして立体化する" する事自体が、一朝一夕にできるものではないのだよなぁ...言うのは簡単だけど。
12/03/16
・
第21回 エンバカデロ・デベロッパーキャンプ - セッション資料ダウンロード
先日行われたデベロッパーキャンプのセッション資料が DL できるようになりました。
【T4】セッション資料の P.55 ですが、後で再確認してみたら、Update 4 では TComboBox の ItemByIndex が存在しないようです。代わりに ListItems[] を使ってください 。また、Delphi Tips にある "とりあえず、デベロッパーキャンプの資料を読んでみようか。" も更新されています。
デバッガの挙動に泣かされた細川さんの【T2】セッションが本日再講演されます 。モヤモヤした方、見逃した方は是非ご参加を。
・
Delphi VCL Tips
"131.VCL スタイル (Delphi XE2 以降)" を追加しました。RTM 時は 5 つしかなかった VCL Style も、Update の度に増えていって Update 4 時点で 22 個あります。
12/03/24
・
PC の IP アドレスを変更するスクリプト (Windows)
ロケーションによって PC の IP アドレスを自動的に変更してくれるツールはノート PC なんかによく付属している。自動で切り替えるための情報として、無線 LAN の ESSID をキーにしている事が多いが、当然の事ながら有線 LAN にはこの方法は使えないため、有線の場合には大抵手動で切り替える事になる。
このテのツールは無線であれ有線であれ接続を切り替えるのがとても遅い。さらにノート PC を買い換えたりした場合、付属するネットワークマネージャツールが異なると再設定はとても面倒な作業だ。なんだかんだ勘案すると、取り扱いには注意を要するが "正直スクリプトで変更した方が早いし速い" 。
@echo off
::==============================================================================
:: 環境設定
::==============================================================================
set INTERFACE="ローカル エリア接続"
set IP=192.168.1.xxx
set SUBNET=255.255.255.0
set GATEWAY=192.168.1.xxx
set DNS1=192.168.1.xxx
set DNS2=192.168.1.xxx
::==============================================================================
cls
@echo off
echo ============================================================
echo ネットワーク環境切り替え (%INTERFACE%)
echo ============================================================
echo .
:: -----------------------------------------------------------------------------
:: 静的 IP 設定か?動的 IP 設定か?
:: -----------------------------------------------------------------------------
if "%IP%" == "" goto DYNAMIC
:: -----------------------------------------------------------------------------
:: 静的 IP 設定
:: -----------------------------------------------------------------------------
:STATIC
echo IP アドレス(%IP%) とデフォルトゲートウェイ (%GATEWAY%) を設定中...
netsh interface ip set address %INTERFACE% static %IP% %SUBNET% %GATEWAY%
if "%DNS1%" == "" goto DNSDHCP
echo プライマリ DNS (%DNS1%) を設定中...
netsh interface ip set dns %INTERFACE% static %DNS1% PRIMARY
if "%DNS2%" == "" goto EXIT
echo セカンダリ DNS (%DNS2%) を設定中...
netsh interface ip add dns %INTERFACE% %DNS2%
goto EXIT
:: -----------------------------------------------------------------------------
:: 動的 IP 設定
:: -----------------------------------------------------------------------------
:DYNAMIC
echo IP アドレスを自動取得 (DHCP) に変更中...
netsh interface ip set address %INTERFACE% dhcp
:DNSDHCP
echo DNS を自動取得 (DHCP) に変更中...
netsh interface ip set dns %INTERFACE% dhcp
:: -----------------------------------------------------------------------------
:: 終了
:: -----------------------------------------------------------------------------
:EXIT
pause
名前は Change_IP.cmd とか適当で。環境設定の部分を適宜修正して利用する。
INTERFACE ネットワークインターフェイス。ネットワークのアダプタ一覧に出てくる名称を指定する (Ex. "ローカル エリア接続 2")。
IP IP アドレス。DHCP で IP を取得するのなら空白にする。
SUBNET サブネットマスク。
GATEWAY デフォルトゲートウェイ。
DNS1 プライマリ DNS。未使用なら空白にする。
DNS2 セカンダリ DNS。未使用なら空白にする。
このテのスクリプトはググればいくらでも出てくるのだけれどあえて掲載。XP 以降で動作するハズ (2000 は未確認)。
・
Delphi FireMonkey Tips
"13.(FMX) スタイル" を追加したのを忘れていました。
12/03/28
・
MECSUtils 1.54
山本隆さんのブログ で既報ですが、MECSUtils 1.54 をリリースしました。
海外の ANSI テキストを Unicode 化して翻訳したものを "そのまま Shift_JIS 等に変換すると混入しがち" な "マイナス / ハイフン / ダッシュ" の亜種を可能な限り可読変換するために、
を修正しました。具体的には、
U+002D: HYPHEN-MINUS
U+2011: NON-BREAKING HYPHEN
U+2012: FIGURE DASH
U+2013: EN DASH
U+2014: EM DASH
U+2015: HORIZONTAL BAR
U+2212: MINUS SIGN
U+FE58: SMALL EM DASH
U+FE63: SMALL HYPHEN-MINUS
U+FF0D: FULLWIDTH HYPHEN-MINUS
を半角マイナス等に変換します (マイナーな "マイナス / ハイフン / ダッシュ" は省略しています)。そういえば、Delphi 2007 / 2009 のヘルプには U+2012~U+2014 が紛れ込んでいて、(変換できなくて) おかしな表記になっている箇所がありましたよね...ん?何か重要なことを忘れているような、思い出したような。
・
カミカミ動画
先日のデベロッパーキャンプの動画が公開されているようです。「何度も "子コントロール" 言うのはシンドイんじゃい!」 と、謎の逆ギレをしておきます。
"88.とりあえず、デベロッパーキャンプの資料を読んでみようか。 (Delphi VCL Tips)" には過去のものも含め、動画と togetter のリンクが追加されています。
・
最近のドラえもん
"ゴンスケ" がよく出てくるので、「コイツの名前知ってる?」 と子供たちに訊いた事がありましたっけ。21エモン ED の "谷村有美 「21世紀の恋人」" は名曲だと思います。
・
IBConsole 日本語版+α
Unicode 版 (32bit / 64bit) の rel.20 をリリースしました。コンパイラを XE2 にして一部機能が使えなくなっていた (AV が発生する) のを修正しましたが、全部を修正できていないかもしれません。
XE2 で IBX 関係のコンポーネントに ServerType プロパティが追加されていますが、コンポーネントを動的作成した場合には ServerType が自動で設定されない 事に起因した問題です。
TIBDataBase
TIBCustomService
等から派生しているコンポーネントを動的作成する際には注意が必要です。