カスタムコンポーネントのススメ
某所で
「StoredProcコンポをOracleで使うとなんかおかしくなっちゃいマス」
訳:だから早く直して下さいplz
と書き込んだら、
「このSoredProcのbuildQueryはOracleのPL/SQLに対応してないんだよねー、直す予定だけど。とりあえず自分でoverrideして作ればいいよー。」
とか言われました。
というわけで、ためしに簡単なカスタムコンポを作ってみる事に。
参考にしたのはここです。
上記によると、カスタムコンポ作成のための方法は3つあるようだ。
その1.
既存のコンポーネントをコピって必要なコードだけ変更。
これはDel厨にはちょっとキモチ悪い。
だってなんかbugがあってのちに修正されても、自分のカスタムコンポにはbugが潜んでいるまま・・・。
継承してねって事なのか?なのか??
その2.
全く新しいコンポーネントを一から作る。
とても・・・めんどいです・・・。
その3.
サードパーティのスクリプトをラップする。
ようするに、dbtables.inc.phpみたいなもんか(ADOdbを使ってる)。
まずは試しに作るだけなので、Editを元に継承して作ってみました。
Component→New Componentで、
Ancestor class: Edit
Classname: TestEdit
Pallete Page: TestComponent
パッケージも一緒に作るので、Create packageにもチェックを付けました。
とすると勝手に以下のファイルが出来上がっています。
unit1.package.php ←packageファイル
unit1.inc.php ←コンポーネントファイル
それぞれ、test.package.phpとtest.inc.phpとかの名前にして、packageファイルのregisterComponentsのファイル名の指定もそれに合わせて変更。
今回便宜上、各ファイルをtestcompフォルダに入れておくので、この場合
registerComponents("TestComponent",array("TestEdit"),"testcomp/test.inc.php");
とかに。
(環境に合わせて変えて下さい)
複数のコンポーネントを作る時、packageは一回一回作らずに、まとめちゃってもOK(この場合、registerComponentsをpackageに複数書く)です。
この時ファイルの場所を書き間違えると、コンポーネントを貼り付けるときにエラーになります。 しかもそのエラーメッセが結構わかりにくい。
さらに言うと、ファイルの場所間違えたぜーとか言って訂正してもDelphi4PHPを再起動するまで同じエラーが出続けます・・・。
これにハマって数時間を無駄にしたアテクシ。('A`)
仕様なのかこれ? ひどいよ・・・。
あと、同じくpackageの
setPackageTitle("Put the title of your package here");
も、
setPackageTitle("test");
とかで。
これはpackageを追加する時に、package名として表示されます。
とりあえず今回は実行時にtextに文字を表示するだけのコンポなので、test.inc.phpのdumpContentsファンクションのところに
$this->Text = 'hoge';
を追加してみるだけにしました。
Component→Package→Addで上記のtest.package.phpを追加すれば、右のTools PaletteにさっきのTestComponentパレットが出来てるので、その中に今作ったコンポが鎮座している次第であります。
要点:
classが見つからないとか、streamがどーたらとかいうエラーが出たら、即Delphi4PHPを再起動!
| 固定リンク

コメント