謎のLayerプロパティ
MemoやEditのプロパティにLayerというものがあります。
これはデフォルトは0なのですが、Pagecontrolの上にコンポーネントを貼り付けた時は、LayerにそのPageControlのTab名が表示されます。
ちなみにこのTab名はDelphi for win32で言うところの各tabのCaptionとNameを兼ねていて、ちょっと扱いづらい。
なんで分離させなかったのだ・・・。
Tabの増やし方は、Tabs PropertieのところにTStringsライクに書くだけ。 デザイン時のTabの切り替えは、右クリックPopupMenuでLayersの中から選ぶか、そこに名前が出てなかったら(なぜかTabの上に何も配置してなかったらPopupMenuに表示されない)、ActiveLayerに直接書く(ComboBoxみたいに選べない・・・)。
さて、謎なのはこのLayerプロパティ。
ちゃんと目当てのTab名になっているにも関わらず、リロード時に強制的に0に戻されます・・・。
うちの環境の場合、IDEから「RUN」した時は問題ないのにサーバーにupするとこの現象が発生。謎。
検証した結果、以下の場合に発生する事がわかりました。
・DBGridコンポーネントを貼り付けて、適当にButtonを配置してそれをクリックすると、IDEから実行でもLayerは0になる。
(リロードの場合は発生しない)
・DBGridを貼り付けなくても、2回Buttonをクリックすると発生(IDEからの実行時)。
・Tab名が数字から始まる場合はOK
例:111、1test
・Tab名にひとつでも数字が入ってるとOK
例:Tabsが以下の場合
---------
test
123
---------
謎だよ ('A`)
ParentColorと言い、なんかリロード時に問題あるっぽいです。
根本的にどっかの共通classでbugってるのかも。
回避方法は、UnitのShow時に、
$this->Memo1->Layer = "hoge";
という風に、各Layerを再設定してやるぐらいかな。
以上、vcl_for_php_07_06_10.tar.gzで確認。
| 固定リンク

コメント