C++Builder2007 Update3 でコンテキストメニューが表示されない問題
C++Builder2007にUpdate3を適用すると、TMemoやTEditで右クリックしたときにコンテキストメニューが表示されなくなります。
この問題に対して、修正プログラムを作成した人がいました。
Inofficial RAD Studio 2007 Patchからダウンロードできます。
C++Builder2007でも使用できました。
« 2007年09月 | メイン | 2007年11月 »
C++Builder2007にUpdate3を適用すると、TMemoやTEditで右クリックしたときにコンテキストメニューが表示されなくなります。
この問題に対して、修正プログラムを作成した人がいました。
Inofficial RAD Studio 2007 Patchからダウンロードできます。
C++Builder2007でも使用できました。
C++Builder2007にUpdate3を適用して作成したプログラムをWindows Vistaで実行すると、メニューのキャプションが文字化けします。
この問題を回避する方法が「Delphi2007Update3のバグ」で紹介されています。
C++Builder2007でも同じ方法で問題が回避できることを確認しました。
現在のプロジェクトがあるフォルダに、「C:\Program Files\CodeGear\RAD Studio\5.0\source\Win32\vcl\Menus.pas」をコピーします。
プロジェクトにコピーした「Menus.pas」を追加します。
Menus.pasの1150行目を以下のように変更します。
変更前:
DrawThemeTextEx(ThemeServices.Theme[teMenu], ACanvas.Handle, MENU_POPUPITEM,
MenuStates[MenuItem.Enabled], PWideChar(WideString(Text)), Length(Text), Flags, @Rect, Options);
変更後:
DrawThemeTextEx(ThemeServices.Theme[teMenu], ACanvas.Handle, MENU_POPUPITEM,
MenuStates[MenuItem.Enabled], PWideChar(WideString(Text)), Length(WideString(Text)), Flags, @Rect, Options);
Unit1.hに次にコードを追加します。
#include "Menus.hpp"
以上です。
作成したプログラムをWindows Vistaで実行しても、メニューは文字化けしませんでした。
「Excel ファイルの内容を Ruby を使って高速取得する」の記事を見て。
Perlでは「Spreadsheet::ParseExcel」を使うことにより、Excelファイルの内容を取得できます。
「Spreadsheet::ParseExcel」はExcelを起動しないため、上の記事よりもずっと早く取得できます。
しかも、Windows以外のOSでも動作可能。
最初に、Spreadsheet::ParseExcelをインストールします。
ActivePerlの場合、
ppm install Spreadsheet-ParseExcel
その他の場合、
perl -MCPAN -e shell
install Spreadsheet::ParseExcel
実際のコード
#!/usr/bin/perl
use strict;
use Spreadsheet::ParseExcel;
my $excel = new Spreadsheet::ParseExcel;
my $book = $excel->Parse('Book1.xls');
my $sheet = $book->{Worksheet}[0];
my $cell = $sheet->{Cells}[0][1];
print $cell->Value;
WindowsXP以降では仕様が変更され、ビジュアルスタイルを使用すると入力制限文字数が変わります。
WindowsXP で Manifest ファイルを使用したアプリケーションで Common Control バージョン 6 を使用した場合、Edit コントロールへの EM_LIMITTEXT メッセージによる入力量制限を設定する際の単位が、バイト数単位ではなく文字数単位に変更されました。この動作は仕様です。
小学館や集英社、講談社、文芸春秋などの大手出版社が、絶版の一歩手前の「在庫僅少(きんしょう)本」を提供し、半額で通年販売する。
販売するのは「ブックハウス神保町.com」。
このサイト、もうちょっと使い勝手がいいと嬉しいんだけど。
最近読んだ本をまとめて。
お金持ちに飼われていたイヌが、自分を助けてくれた女の子にお金持ちのなる方法を教える物語。
など、29の知恵を授かります。
子供にも読みやすいと思いますが、大人が読んでも参考になります。
大きなケーキは人にゆずろう―お金持ちになるための“母の教訓”
主人公の女性のサクセスストーリーとしてもおもしろい。
母親の言葉を教訓として、ビジネスに活かすスタンスがすばらしい。
読んだのは古い方の「モリー先生との火曜日」ですが、新しい方にリンクします。
大切なことをあらためて考えさせられる一冊。
「モリー先生の最終講義―「死ぬこと・生きること」」、これも読みたい。
全国に80万人いると言われるニートの実態を明かす。
大学受験生も、入院して働けない人も、統計上はニート。
マスメディアが伝えるニートのイメージは、全くの的はずれ。
不安をあおって儲けている人がいることを忘れないように。
効率よく上達するためにはどうすればいいか。
「初級者から中級者へ」と「中級者から上級者へ」のそれぞれの上達のポイントを知ることができました。
がむしゃらに努力するのではなく、効率よく上達しましょう。
Rubyist Magazine 出張版 正しいRubyコードの書き方講座―RubyistのRubyistによる、Rubyistとそうでない人のための
本書の対象は、Rubyを始めたけれどRubyらしいコードが書けないRuby初級者。
Rubyで実際にコードを書いていない入門者には難しい。
中級者には、自分のスタイルの確認になるかもしれません。
他の言語、たとえばJavaから移行してきた人は、RubyでもJavaっぽくコードを書いてしまいがち。
でも、そうするとRubyの良さが生きてきません。
言語の思想・特徴を理解することで、効率よくコードが書けるようになります。
DoteConvは名称を「D2」に変更しました。
D2は「でぃーつー」と発音して下さい。
DoteConvは読み方がわからない、というメールをたくさんいただきました。
大変ご迷惑をおかけしました。
安易に付けた名前が多くのユーザーに迷惑をかけることになるとは思いもしませんでした。
D2は、「DoteConv 2」を略したものです。
覚えやすいと思いますが、いかがでしょうか。
DoteConvのライセンスキーをお持ちの方は、無料でD2のライセンスキーをお送りいたします。
下記のURLからお申し込み下さい。
http://www.yamamototakashi.com/versionup/
これからもD2をよろしくお願いします。
『CakePHPガイドブック』を一通り流して読みました。
まだ実際にコードは書いていません。
ざっと読んでみた感想ですが、この本一冊あればCakePHPで開発できるようなるに思います。
CakePHPの導入から実際の開発に必要な情報まで、十分に詳しく解説されています。
おそらく定番の一冊のなることでしょう。
Chapter9のセキュリティに関する章はいいですね。
セキュリティについて、どういった点に注意しなければならないかというのは、CakePHPに精通しており、かつ、実際に開発している人でないと、なかなかわからないことです。
開発する段階では、とても参考になると思います。
日本語環境用(文字コード)の設定手順の解説も嬉しいです。
あと、ソースコードが読みやすいように感じました。
ソースコードの重要な箇所は網掛けしてありコメントがつくため、ポイントがわかりやすいです。
重要箇所だけが掲載されるのではなく、前後のソースコードが省略されずにちゃんと掲載されているので、プログラムを理解しやすいと思いました。
CakePHP 1.2についての記載があるのもいいですね。
CakePHP 1.2の登場が楽しみです。
1.2がリリースされたら、1.2対応版もぜひ出版していただきたい。
初版第一刷なので、多少の誤字・脱字・コードの間違いがあるのは仕方がないですね。
検索してみたのですが、正誤表が見つかりませんでした。そのうち公開されることと思います。
Chapter7のModelについての章で、メソッドの返値についての記載がないのが、不便に思いました。
たとえば、executeについての説明(117ページ)は次の一行だけです。
queryと同様にSQLコマンドを実行します。実行結果の返却方法に違いがあります。
executeの存在価値は、queryとの返値の違いだけです。
ならば、返値がどのように違うのかの説明がないと、実際に使用することができません。
その他にも、Chapter7では全般に返値の説明が不足しているように思いました。
詳細は「CakePHP プログラマーズ リファレンスガイド」を見るとわかりますので、問題ないかもしれません。
179ページのsubmitされているかのチェックが、他の箇所と異なっていました。
なぜここだけ違うのか、理解できませんでした。
// submitされていない場合は初期表示
if (!isset($this->params['form']['submit'])) {
他の箇所では、$this->data を確認しています。
if(empty($this->data)) {
実際にコードを書いてみると、違いに気がつくかもしれません。
206ページの「updateUser()」はおそらく「updateStatus()」の間違い。
218ページのtoLowerメソッドは、無限ループしそう。(未確認)
引数が配列の時、SimpleFilterComponent::toLower($elem) が呼ばれて、その中でもまた、SimpleFilterComponent::toLower($elem)が呼ばれて…、となりませんか。
function toLower(&$elem)
{
if (is_array($elem)) {
SimpleFilterComponent::toLower($elem);
}
$elem = strtolower($elem);
}
226ページの「DboSimpler」はおそらく「DboSimple」の間違い。
まあ、ともかくCakePHPをこれから始めるには、間違いなくお薦めの一冊です。
追記: 正誤表が公開されていますね。
第7回 CodeGearデベロッパーキャンプの資料が公開されました。
中でも、特に興味深いのが「wxFormsで始めるwxWidgetsプログラミング」。
wxWidgetsは、おなじみのマルチプラットフォームに対応したGUIツールキット。
マルチプラットフォーム対応というと、WideStudioやTkのように独自の外観になりがちだが、
wxWidgetsはOSが提供するコントロールを使用するため、見た目に違和感がない。
で、TwinForms社が開発したC++Builder用プラグイン「wxForms」を使うと、C++BuilderでwxWidgetsを使った開発ができる。
wxFormsのホームページにあるスクリーンショットを見ると、VCLと同じように違和感なく開発できることがわかる。
公開された資料には、wxFormsのインストールから、MacOSやLinuxでのビルド方法まで紹介されている。
Kylixで見たマルチプラットフォームの開発ツールの夢が実現できそうだ。