Entries

スポンサーサイト

カテゴリ:スポンサー広告
更新日:--------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Delphi for PHP] テクニック、いろいろ・・・

カテゴリ:RadPHP(Delphi for PHP)
タグ: PHP 
更新日:2009-06-30
私の文章力は、論文書きで鍛えられたせいか、どうも脳に対する負荷が高い。・・・というのは、木曜に更新する予定が遅れたことの言い訳。とはいえ、もっと、気楽に文章が書けたらいいなぁ、とは最近、よく思う。Delphiの方がストレスが少ないものなぁ。みんな、Delphiで話してくれれば楽なのに。自然言語はムヅカシーヨ。

というわけで、今回はDelphiの話。といってもfor PHPの方だけれど。

今、仕事にからめてD4PHPでプロトタイプをつくっている。ある程度実地で使わないと、細かいところの問題は分からないから。プロトタイプだけど、重要な機能はひと通り作るし、ダメならやめちゃえるしと影響も少ないからちょうどいい。で、やっぱり、いろいろと問題が出てきたので、解決したのも、してないのも含めて書いておくことにする。

デバッガのブレークポイントが効かない

あるとき、ふと気がつくと、デバッガがちゃんと動いていなかった。正確には、ブレークポイントを設定しても停止しない・・・ときがある。止まる時もある。とりあえず困るほどじゃなかった。まだ。でも、デバッガが使えることが利点の一つではあるんだよな。

アプリケーションのタイトルページとしてindex.htmlファイルをつくっていた。デバッグ時には、ページを遷移して目的の場所に行くのも面倒なので、index.htmlにGETパラメータを書いたリンクを用意していた。どうやら、これがいけなかったらしい。index.htmlから実行を開始するとブレークポイントが効かない。

デバッガの仕組みはよく分からないけれど、index.htmlから起動するとデバッガが必要な情報が渡らないというところだろうか。リンクではなく、phpファイルに直接パラメータを埋め込んで実行するようにしたらブレークするようになった。

SimpleChart

今回のプロトタイプでは、グラフを表示しないといけない。ちょうど、SimpleChartというコンポーネントがあったので使ってみることにした。が、グラフが表示されない。

ブラウザの問題かと思ったけど、サンプルはちゃんと動いていた。サンプルのコードと見比べても、違いがあるようには思えない。そこで、いちからサンプルと同じものを作ってみたところ、動いた。

「Delphi for PHPではじめるPHPビジュアルWeb開発」によれば、マスターページをつくって継承するようにした方がいいと薦めているので、プロトタイプもそのように作っていた。いちから作ったサンプルをプロトタイプに組み込もうと、マスターページを継承するようにしたら・・・あら?表示されない。

継承すると駄目なのか?と、じゃあそれは諦めるとして、データベースから値を取得してグラフ化してみることにした。データベースのアクセスは、データモジュールユニットを使っているのでリンクする・・・と表示されない。あら、これもダメ?

結局、データモジュールを使うのもやめて、グラフと同じフォームにデータセットも定義するようにしたところ動くようになった。う~む、ちと面倒だなぁ。まぁ、負の値に対応してないみたいだし、本番ではちょっと使えなさそうなので、あまり突っ込んでいない。

「Simpleなんたら」ってのは、「使うのが簡単(Simple)」ということじゃなくて、「単機能(Simple)だから頑張って使ってね」ってことなんだよなぁ、と再認識。

ディレクトリ

機能モジュールごとにディレクトリに分けて作っていた。ユーザー管理あたりは、他のアプリでも使うだろうし、ディレクトリに分かれていたらコピーするのも簡単だから、と。

サーバーに上げると、vclのパスの問題があった。サーバーの設定を変えられる時はいいけど・・・

>vcl-bin サブディレクトリは、どこにありますか ?

Q:インストールディレクトリを探しましたが、vcl-bin サブディレクトリが見つかりません。しかし、作成した Webページのソースコードは、vcl-binサブディレクトリを参照しています。

A:VCLフォルダが実行されるアプリケーションより上位の位置にある場合、VCL フレームワークは、存在する VCL フォルダのエリアスとして vcl-bin を使用するため、使用している Web サーバー上にそのエリアスを追加する必要があります。

Note:

Delphi for PHP で作成した Web アプリケーションを配布する際、通常、VCL フレームワークのフォルダは、作成した Web アプリケーションの下部ディレクトリに置きます。しかし次の場合には、Web ブラウザは /vcl-bin ディレクトリ内の JavaScript ファイル (.js) を参照しようとします。

* IDEを使用して開発を行っている場合
* 運用環境に配布した際、VCLフレームワークのフォルダの位置が、作成されたアプリケーションのサブディレクトリ以外である場合


ディレクトリに分けてあったので、ファイル名は共通にしていた。たとえば、一覧ページはlist.php、編集ページはedit.php、データモジュールはdm.php、など。これも、IDEが混乱するみたい(人も、なんだけど)で、なんだか調子がよろしくない。

とりあえず、ディレクトリ構造は廃止することにした。

ブラウザのスクロールバーが出ない

Delphiというだけあって、フォーム(ページ)のサイズを決めてデザインをするわけなんだけれど、サイズを大きくしても、ブラウザにスクロールバーが出なくて、はみ出した部分が見えない。

Embarcaderoの掲示板に回避コードがあったので組み込んでみたところ、スクロールバーが表示されるようになった。

>Thread: Webブラウザーのスクロールについて

以下のように、ページのOnLoad Javascriptイベントを利用して、Qooxdoo API 経由で縦横スクロールバーを表示することができます。
が、実際にスクロール時すると、IEでは正しく動作しても、Firefoxでは正しくスクロールされないのではないでしょうか?


class Unit1 extends Page
{
public $Button1 = null;
public $Edit1 = null;
public $BitBtn1 = null;

function Unit1JSLoad($sender, $params)
{
?>
var d = qx.ui.core.ClientDocument.getInstance();
d.setOverflow("scroll");
<?php
}
}


う~む、これは、Qooxdooの使い方もチェックしなきゃいけないってこと?

右クリックメニューがでない

そういえば、右クリックでメニューが出ないんだけれど、これもQooxdooのせいか?と、Qooxdoo関連で検索してみたところ、次のページを見つけた。

>How do I enable the browser context menu?

qooxdoo disables the default right-click browser menu. How can I show it?

When I use qooxdoo in a page, the default context menu shown by the browser when you right click your mouse doesn’t appear. To enable this menu just use:

qx.event.handler.EventHandler.getInstance().setAllowClientContextMenu(true);



というわけで、同じくOnLoadイベントに組み込んでみたところ、右クリックメニューが出るようになった。

そういえば、TABキーで移動もできないんだけれど、これもそうなのかなぁ・・・


Delphi for PHP 2.0 マルチランゲージ キャンペーン版
27,479 円(税込、送料込)






スポンサーサイト

Appendix

プロフィール

いむら@fintopo いむら@fintopo

ガーデニングが趣味のフリーのシステムエンジニア兼プログラマ(フルスタックエンジニア)です。

仕事募集中です。個人なので、融通がききます。 大規模な開発はできないかもしれませんが、研究や製品開発レベルでの小規模開発、特に相談しながら新しいものを作っていくのが得意です。詳しくはWebサイトをご覧ください。
詳しくは「fintopoとは」をご覧ください。

> fintopoとは

このページのQRコード

季節暦

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。