・
今月
本職の方が本格的に忙しくなっているので、雑談の更新頻度は低下すると思います。
・
XN Resource Editor
"Delphi の製品情報" には随分前から掲載されていますが、ちゃんと紹介していなかったので。
XN Resource Editor は *.dcr (コンポーネントリソース) を作る事もできるリソースエディタです。
3.0.0.1 は Delphi 2006 でコンパイルされており、ソースコードも公開されています (MPL)。3.1.1.1 はDelphi 2009 でコンパイルされていますが、ソースコードが公開されていません。3.0.0.1 をコンパイルするためには、もう一つファイルが足りなかった気がするのですが...?ファイルが足りなかったら、ファイル名をググって探してみて下さい。同じ作者の "XANA News" のソースコード一式の中にファイルが含まれていたような記憶があるのですが...?
XN Resource Editor のソースコードは依存関係がワケワカメです。この雑談のためにもう一度 XN Resource Editor をコンパイルできるようにしてみようと試してみましたが、古いパッケージを必要としたり、コンポーネントが新しいパッケージ (D2009 用) に含まれているものの、公開されていない古いパッケージが必要だったりで、マトモにコンパイルできないようです。
・
無茶な宿題
「夜空を観察して、PM8:00 の星座を書いて、1~2時間後にもう一度観測せれ」 って子供の宿題なのですが...金曜~日曜すべて曇天でどうしろと?
・
XN Resource Editor 3.0.0.1 [ja] with Source
XN Resource Editor 3.0.0.1 の日本語版です。「最後に1回だけ」 と言いつつアレコレいじっていたらコンパイルが通るようになりまして...もはや何をいじったのか判らないのですがね。
今更、3.0.0.1 の需要があるとも思えませんが、一応アップしておきます。もちろんソースコード一式もアップしてあります。日本語版とはいえ、主に GUI しかいじっていないので、メッセージとかは英語で表示されるかもしれません。なお、コンパイルに利用した Delphi のバージョンは 2007 です。
「何をどうやったらコンパイルできるの?」 とか聞かないで下さい。正直、もう何をやったか覚えていませんし、説明もできません (w
・
XN Resource Editor の作者はイギリスの方?
ソースいじっていてそう思ったのですが、よく見りゃ、作者のサイトが .co.uk でしたね。何でイギリスの方だと思ったのかと言えば、Colors の綴りが違っていたからです。イギリス英語では "Colours" と書きますよね..."Center" を "Centre" と書いたり。
・
XN Resource Editor 3.0.0.1 [ja] 補足
日本語化の際に変更した所があります。
・
XN Resource Editor 3.0.0.1 [ja] rev.2
[表示 | オプション] の "RC ファイルオプション" に列挙されるコンパイラが増えています (CodeGear / Embarcadero 製品。XE2 まで対応)。Visual Studio も追加しようとしたのですが、Visual Studio 2005 以降で Include パスを特定する方法が変わったようです。VS のインストールディレクトリは簡単に取得できるのですが...。
・
SX-WINDOW
先日の雑談で書いた SX-WINDOW のスクリーンショットです。
SX-WINDOW の UI を模した SX-SHELL というのも昔作った事がありまして。
やはり胸熱だな、と。
・
シュタゲごっこをするには?
X68K エミュレータを使うと、SX-WINDOW を体験する事ができます。手っ取り早く画面を拝みたいのなら、
後は電子レンジとバナナ、IBM5100 を手に入れてくれば完璧です。後は厨二病の言い回しを勉強しましょう (w
シュタゲに出てくる PC の「キーボードがデカい」 と仰る方がたまにいらっしゃいますが、本当に X680x0 のキーボードはデケェんだよ...ニワカ乙。
・
XN Resource Editor 3.0.0.1 [ja] rev.3 & 4 & 5
ちょっと修正。
これで目に付く箇所のほとんどは日本語化されたと思います。
・
*.dcr (コンポーネントリソースファイル) の記事 by マスター
XN Resource Editor 3.0.0.1 [ja] の発端は、*.dcr の話からだったのですが、Mr.XRAY さんトコに "164_コンポーネントのアイコン作成支援プログラム" という記事が増えています。brcc32.exe をラッピングしてコンポーネントアイコン作成支援を行うアプリと、*.dcr についての解説がなされています。
・
XN Resource Editor 3.0.0.1 [ja] rev.6 to 9
ちょっと修正。
|
デモを見ると大掛かりな修正が必要に見えますが、実際にはイベントハンドラを一つ追加して一行記述するだけです。DockingUtils.pas の方が、QC#48672 のコメ欄にある Chee Yang Chau 氏の Workaround よりも動きがいいようです。解決策としてはほぼ同じですけどね。
ところが、この解決方法を XN Resource Editor 3.0.0.1 のダイアログリソースの [コントロール] タブに適用してしまうと、アンドック時にコントロールがマトモに貼れなくなってしまいます。さらに、アンドックされた [コントロール] が残ったまま [×] でメインフォームを閉じようとすると、保存確認ダイアログが裏回りします。よって、ダイアログリソースのドック処理は以前のままになっています。
不用意にアンドックしてしまう件は 3.1.1.1 でも直っていないようです。各ツールパレットの何もない所をクリックするだけで勝手にアンドックしてしまいます (ツールパレットのタブをダブルクリックでアンドックするのは仕様ですが)。これはドッカブルオブジェクトがむき出しになっているからで、ここに alClient な TLabel を貼る事によって回避しています。
ともあれ、ツールパレットはアンドックして使わない方がいいでしょう。特に、ダイアログリソースの [コントロール] タブはアンドックして閉じてしまうと、他のリソースツリーに移動しない限り、ツールパレットを再表示する手段がありませんし...。
・
Turbo C++ 2nd Edition
某質問を後になって疑問に感じ、思わず確認してしまったのがコレ。
「年季が入ってきたなぁ」 と感じるのもそのハズ、20 年モノですもんね。
・
Firebird Wiki (新)
旧 Firebird Wiki を引き継いだ、Firebird の新しい Wiki サイトができたようです。
・
XN Resource Editor 3.0.0.1 [ja] によるコンポーネントアイコンの作り方
以下の手順は、ガリレオ IDE 専用のコンポーネントアイコンリソース (*.dcr) を作る方法です。
旧アイコン / 新旧アイコンを作る際には、用意する元となる画像をあらかじめ 16 色に減色しておく事をオススメします。
・
コンポーネントアイコン
正式名称は "パレットビットマップ" です。以下、Delphi 7 のヘルプからの抜粋です。
すべてのコンポーネントには,そのコンポーネントをコンポーネントパレットで表示するためのビットマップが必要です。
独自のビットマップを指定しなければ,IDE ではデフォルトのビットマップが使用されます。 パレットビットマップが必要なのは設計時だけなので,パレットビットマップをコンポーネントのコンパイルユニットの中に含めてコンパイルする必要はありません。 パレットビットマップは Windows リソースファイルで提供します。ファイルの名前は,ユニットと同じ名前に.dcr(Dynamic Component Resource)拡張子を付けたものにします。 リソースファイルは Delphi のイメージエディタで作成できます。 新しいコンポーネントを作成すると,カスタムコンポーネント用の独自のビットマップを定義できます。 新しいビットマップを作成する手順は,次のとおりです。
|
イメージエディタありきの話なので今読んでみると、まさに 「日本語でおk?」 ですね。これを日本語にすると、
となります。ガリレオ IDE (Delphi 2005 以降) 用のパレットビットマップのドキュメントは恐らく存在しないと思われます。D2005 のヘルプは D7 と同じものですし、2006 またはそれ以降ではヘルプトピック自体が存在しません。BDS 2006 またはそれ以降、イメージエディタ (imagedit.exe) が付属しなくなったためだと思われますが、それならそれで brcc32.exe を使った作り方でも載せればいいのに...とは思います。
・
Delphi / C++Builder で、IDE 実行時のみ TOpenDialog.Execute でコケる場合には?
この件は再現条件が不明なため、いくつもの QC が挙がっています。「IME 変えたら治った」 とか 「Adobe Reader をアンインストールしたら治った」とか様々な報告があります。 共通して言えるのは、"UseLatestCommonDialogs = false" の場合にはコケないようだ、という事です。
|
...よって、このようなコードをオマジナイで記述しておけば、IDE 実行時に TOpenDialog.Execute でコケる現象は出ない事になります。"104.外部デバッガでアプリケーションをデバッグされたくない (アンチデバッガの初歩)" にある、IsDebuggerPresent() でも同等の事ができます。
・
XN Resource Editor 3.0.0.1 [ja] rev.10 to 15
ちょっと修正しました。
3.1.1.1 のヘルプを見ると、仕様的には...
・
エアブラシ
ペイントブラシはペン色かブラシ色かの違いはあるものの "線幅を変えた鉛筆" と同等なので簡単に実装できましたが、エアブラシはどういう実装にするのかちょっと悩みました。
最終的には 「本格的にお絵かきするツールじゃないのだから、適当でいいんじゃね?」 という事で、ごくごく原始的なエアブラシを実装してみました。以下がソースコードです。
|
かなり適当です。マウス位置を中心とした、半径 RADIUS の円の中にランダムにドットを置いています。このアルゴリズムはコードは短いものの、とても効率が悪いです。
|
Delphi の TCanvas.Pixels が遅いのは有名な話なので、重複した Pixels[x, y] にアクセスしないようにしてみたのがこちらのアルゴリズムです。PC の性能やランダム値に左右されますが、10000 回ループで測定した結果、こちらのアルゴリズムの方が 1.5 倍程高速なようです。
・
TCustomForm.UpdateActions
他のヒトのソースコードというのは勉強になります。XN Resource Editor のコードを読んでいて、「あー、こんな書き方もあるんだ」と思うこともしばしばです。
...そういえば、ちょっと不思議なコードがありました。それは TCustomForm.UpdateActions に関するものなのですが...とりあえず先に、TCustomForm.UpdateActions のヘルプをあたってみましょう。
フォームに関連付けられているアクションをすべて更新します。 UpdateActions メソッドは,アプリケーションがアイドルのときに自動的に呼び出され,フォーム内のすべてのコンポーネントに,そのコンポーネントをターゲットとしたアクションを更新する機会を提供します。これにより,アクションにチェックマークが付けられたり,淡色表示されたりすることなどが可能になり,それらのターゲットの現在の状態を反映できるようになります。 UpdateActions は,フォーム,メニュー,およびフォーム内のコンポーネントに関連付けられているアクションをすべて更新します。 |
ふむ。Action 関係のメソッドのようですが、ピンときませんね。では、何が不思議なのか解りやすいように、単純な例を具体的に挙げてみる事にします。
例えば以下のようなよくある UI のフォームがあったとします。
RadioButton1 にチェックが入っていたら、Edit1 を有効、Edit2 を無効にし、RadioButton2 にチェックが入っていたらその逆を行います。その制御を含めたソースコードがコレです。
|
最初に見た時は、「RadioButton の OnClick にイベントハンドラ UpdateActions が割り当てられているのだろう」 と思いましたが、UpdateActions は RadioButton の OnClick イベントハンドラではありません。イベントハンドラを記述していないのに、RadioButton のチェック状態によって Edit の Enabled が切り替わります。ちょっと不思議な記述だとは思いませんか?
「OnIdle イベントハンドラ書くのと何が違うん?」 とか野暮なツッコミはナシの方向でお願いします (w
・
XN Resource Editor 3.0.0.1 [ja] rev.16 to 18
ちょっと修正。
"自由選択" も実装しました。
Windows のペイントブラシのより、Paint.NET の自由選択の動きに似ています...ただ、XN Resource Editor には "矢印 (選択)" がないので、イマイチ "四角形選択 / 自由選択" の使い勝手が悪いのですよねぇ。
・
XN Resource Editor 3.0.0.1 [ja] rev.19 to 25
ちょっと修正。
先述のように、3.0.0.1 のソースコードをコンパイルするのに不足しているファイルがあります。
厄介なことに、現在入手可能な cmpPropertyListBox.pas は 3.1.1.1 対応ではありません...とは言え、cmpPropertyListBox.pas の修正は軽微で済みます。
3.1.1.1 では TNT を利用した Unicode 化が行われていますが、cmpPropertyListBox.pas 中でプロパティの値の判断に "(VarType() = varString)" を使ってあります。ここを "((VarType() = varString) or (VarType() = varOleStr))" に変更する必要があります。なお、バリアントが文字列であるかどうかを Unicode 版 Delphi で判断するには
・
FMV-BIBLO LOOX U/G90
...さて、ここに FMV-BIBLO LOOX U/G90 がある訳だが。
ONKYO TW-317A5 のプロセッサ N450 (1.66 GHz) よりもさらに非力な Z520 (1.33 GHz)...シングルコアで HT があるだけの 32bit CPU だ!マルチタッチが可能 (2 接触点) な 1280×800 の 5.6 インチディスプレイ...カーナビの画面よりも小さいぞ!外部記憶は SSD の 32GB で、ちょっと少なめ...Windows エクスペリエンスインデックスも 1.9 と少なめだ!
...けなしてばっかりのようだが、この手の "縛りのあるコンピュータはむしろ大好物" だ。
・
XN Resource Editor 3.0.0.1 [ja] rev.26 to 27
金曜日からの "ちょっとした事情" により雑談を更新できなかったので書いていませんでしたが、実は修正されています。
・
DEVMGR_SHOW_NONPRESENT_DEVICES
Delphi (freeml) が元ネタです。
レジストリで DEVMGR_SHOW_NONPRESENT_DEVICES をいじる事がある場合、値の型を DWORD (REG_DWORD) ではなく 文字列 (REG_SZ) でやらないと、環境変数に変な値が展開されてしまい Delphi の environment.proj が壊れた状態になってしまう事があります。
壊れた状態でコンパイルすると、
環境変数の格納されているレジストリ ([HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]) のエントリは、REG_SZ または REG_EXPAND_SZ 型でなくてはなりません。
対処方法は、
・
FMV-BIBLO LOOX U/G90 と SHARP PC-E500
サイズを比較してみる事にした。
大きさ的にはほぼ同等 (sizeasy による比較)。PC-E200 (G800 系) と同じ位かもしれない。厚みはケースを付けない、キー部を除いた PC-E500 2 台分ってトコか。
LOOX U/G90 の手前側にある黒いものは拡張コネクタのフタ (自作)。E500 の側面中央にあるのはクロック切り替えスイッチ。
そういや昔、外注で某所に出向していた事があり、ちょっと計算するのにカード型のソーラー電卓でペチペチやっていたのだけれど、出向先の方から 「ケッ、プログラミングするなら、マトモな電卓位持っとけよ!」 と自慢気に HP の関数電卓見せられた事がありました。いあ、GUI の座標計算なんで四則演算できれば充分なのですが...そもそも、目の前にあるのは "もっと高級な計算機" なのではないでしょうか?
・
ExTOUCH
TW317A7 に付属する ExTOUCH が ExTOUCH の facebook ページで 「いいね」 をクリックした人を対象に、個人向け ExTOUCH が無償提供されています。
ExTOUCH は TW317A5 / TW317A7PH に付属していないんですよね...コレがあるとスレート PC の操作が幾分楽になります。
LOOX U/G90 でも使ってみたのですが、こちらは流石に無理がありました。画面が小さすぎてタッチキーボードは使い物になりません...まぁ、物理的なキーボードがあるのであまり問題にはならないとは思いますが。LOOX U/G90 ではもっぱらランチャ機能をメインに使う事になると思います。
LOOX U/G90 で ExTOUCH を使うと、Lavie Touch の記事の写真のように、ランチャの上部に隙間ができてしまいます。ExTOUCH は縦解像度 768 かつタスクバー表示状態の時にランチャの上下に隙間がない状態になるため、元々は TW317 専用 (或いは TW317 を開発機) として作られたのではないかと思います。
・
XN Resource Editor 3.0.0.1 [ja] rev.28
リリースしましたが、見た目だけの違いしかありません。
・
ざつだん
月初の予定通りというか、月半ばの "想定外の出来事" のせいもあって雑談の更新頻度が低下中ですが、しばらくはこの調子だと思われます。
"中のヒト" が何人もいたらこういう事態にはならないのでしょうけどね...(苦笑)
・
Prism VS Visual COBOL
Delphi 使いの憂鬱な事案の一つに、Borland と Inprise と CodeGear と Embarcadero と Micro Focus の関係を何度も説明しなくてはいけないというのがあると思う。
Delphi からみた場合、Borland → Inprise (社名変更) → Borland (社名変更) → CodeGear (独立部門) → Embarcadero (買収)。Borland からみた場合、Borland → Inprise (社名変更) → Borland (社名変更) → Micro Focus (買収) となり、Borland は現在、存在しない...この説明を何回、いや何十回しただろうか。
さて、Borland を買収した Micro Focus だが、.NET 開発環境としての COBOL である、Visual COBOL という製品を持っている。かたや、Embarcadero は (限りなく Delphi に近い) Oxygen 言語な .NET 開発環境である Prism という製品を持っている...「だからどうした?」 と言われれば 「そうだね...僕が悪かったよ」 としか答えようのないネタである (w
ちなみに、Visual COBOL には 30 日トライアル版がある。言語マニアな方は試してみて下さいね。
・
ドドドーシド♪ × 4
今更ながら、これはいいオッサンホイホイ。くれぐれも、オッサンの車の中で OutRun の曲を流さないようにね...293 km/h 出す勢いでペダル踏んじゃうから (w
凝ってるなぁ...オッサンじゃないと歌詞の "英語の部分の意味" ("英語の意味" じゃなく) が解らないかも。しかも、最後は "16t" かい (w
BACK | 古いのを読む | 新しいのを読む |