投稿者「wt」のアーカイブ

4D v17のオブジェクト、v16プロジェクトからの移行時の注意

4D v17のオブジェクト、v16プロジェクトからの移行時の注意

v16からv17に移行したプロジェクトの場合、データベース設定の「互換性」に次の項目がある。

1)オブジェクト記法を使用してオブジェクトのプロパティにアクセスする
2)オブジェクトではISO日付フォーマットの代わりに日付型を使用する

v17で新規作成したプロジェクトにこれらの項目はない。
オブジェクト型の変数はv15から使えていて、その当時は次のコード1のような使い方だった。

コード1:
C_OBJECT($obj)
OB Set($obj;”sl_id”;String(1))

$sl_id:=Num(OB Get($obj;”sl_id”))

ところがv17では次のコード2のように使う。

コード2:
C_OBJECT($obj)
$obj:=New object
$obj.sl_id:=1


$sl_id:=$obj.sl_id

両方とも使ってみたが生産性が違う。単なる表記の違いではなく機能が違う。コード1では、オブジェクトのプロパティに”sl_id”のように文字列を指定しているが、ダブルクオーツで囲むためカラーシンタックスが働かない。カッコ、ダブルクオーツ、セミコロンで囲まれているためか、フィールド名が違っていても気づきにくい。また、一部サポートされていないデータ型があるため、当社では上記のようにすべて文字列としてプロパティに値を代入していた。その結果としてオブジェクト内部ではデータ型は失われていたことになる。型チェックは働かない。

コード2では、ドットに続く表記はフィールド名になる。カラーシンタックスが働く。オブジェクト内部でデータ型が維持される。型チェックが働く。いいことしかない。

OB Setの記述を見つけたら、今のうちに全部置き換えておこう。OB Setは、コードの見た目も良くないし、v15からの実装という新しめのコマンドながら、すぐに博物館行きになりそうだ。ちなみにOB Setでセットされたプロパティの内容は、ドット表記でも参照できるし、その逆も可能だが、混在はやめたほうが良い。たいした手間ではないのでドット表記に統一しておくことをおすすめする。

 

リストボックスのプロパティで「セレクションハイライトを非表示」4D v17

リストボックスのプロパティで「セレクションハイライトを非表示」4D v17

行背景色配列(バックグラウンドカラー)、行フォントカラー配列(フォントカラー)を与えると、セレクションハイライト中のフォントカラーを制御できない、という問題が、v17で回避できるようになった。

v16以前は、次の図のように、選択行はOSで指定された色になり、文字色は黒、または指定した色になっていた。

文字色が反転しないため、これではハイライト色と文字色が近くなってしまって読みにくい。v17のプロパティで次の設定項目「セレクションハイライトを非表示」が追加された。これをチェックしてハイライトを自力で処理できる。自力ハイライトと呼ぶ。

図のようにリストボックスのプロパティで、次の3ヶ所に注目。

1)「セレクションハイライトを非表示」にチェック
2)「行背景色配列」に「vA01TB_lstBR_BakColor」を指定
3)「行フォントカラー配列」に「vA01TB_lstBR_FontColor」を指定
4)リストボックスのOn Loadで配列に色を代入
5)リストボックスのOn Selection changeで選択された行の背景色とフォントカラーを代入

すると次のようになる。

・色つきの行:文字が緑で背景が黄色 → 自力ハイライト:文字が黄色で背景が緑
・色無しの行:文字が黒で背景が白 → 自力ハイライト:文字が白で、背景が緑

勝手にハイライトしてくれないので、色を付けていない行も含めて、選択行が変化したときに常に配列に色を代入する必要がある。色は、配列に代入したときに適用されてリストボックスに表示される。

 

薪ストーブ、マキストーブ

「暖炉」ではなく、「薪(マキ)ストーブ」です

燃料はマキ。その辺に生えてる木を30-40cmの長さに切って、半年ほど軒先で乾燥させる。程よく乾燥しているマキはよく燃える。乾燥が甘いと燃え残る。乾燥が進んでいくと、虫が食ってスカスカになり、すぐ燃えてしまう。程よい乾燥が重要だ。

細いマキはすぐになくなってしまう。細いマキは何本か束ねて、たき付けに使うと良い。

太い薪は長持ち。火がつきにくい。

太い薪はひとつだとすぐ消えるけど、二つくっつけて燃やすと、間に空気が通ってよく燃える、火が長持ちする。薪が燃えて減っていくと二つの薪が離れていって火が弱くなる。そこで、二つの薪の間に新しい太めの薪を追加。再びよく燃える。

 

Dezarie ∞ Truth -vidbybill

Dezarie Live at the Northwest World Reggae Festival 2010

 

 

DEZARIE We Are Which Part We Come From NWWRF

Live Reggae Dezarie & Midnite @ Northwest World Reggae Festival 2010. Marcola, Oregon. Dezarie:

メソッドエディタから4D COC CENTER ランゲージリファレンスを開く(v17)

4D オンラインマニュアル

メソッドエディタから4D COC CENTER ランゲージリファレンスを開く(v17)

v16以前からの仕様なので、いまさらのネタではありますが、何度もひっかかっているので書いておきます。

メソッドエディタで、4Dコマンドのリファレンスが見たくなるとき、optionキーとcommandキーを押しながらコマンド名をクリックすると、クリックしたコマンドのリファレンスがブラウザーに表示される。v17で作成したプロジェクトの場合はv17のランゲージリファレンスが表示される。と、ここまではOK。

問題はv16以前から移行してきたプロジェクト。option + commandクリックすると、v16のランゲージリファレンスが表示される。たいていの場合はv16のリファレンスが開いても内容がほぼ同じなので事足りるが、新しく追加されたコマンドの周辺を探っている場合、v17で新しく追加されたコマンドがないので、ヒットしなかったり、v16の古い情報が表示されたりして不便。ヒットしなかった場合はマニュアルサイトのv16のトップが表示される。

原因は、4Dの環境設定にある。v16から移行したプロジェクトでは、「一般」の「ドキュメントの場所」に「Webサイト:」の項目があって、これがv16のサイトを指したままになっている。

ここをv17に修正すればよい。