4D Serverとポート番号
4D Serverは3つのTCPポートを使用して内部サーバとクライアントの通信を行います:
・SQLサーバ: デフォルトで19812 (環境設定の”SQL/設定”ページで変更可)。
・アプリケーションサーバ: デフォルトで19813 (“クライアント-サーバ/設定”ページで変更可)。
・DB4Dサーバ(データベースサーバ): デフォルトで19814。このポート番号を直接は変更できません。常にアプリケーションサーバのポート番号+1です。
v17でも確認済み。
4D Serverとポート番号
4D Serverは3つのTCPポートを使用して内部サーバとクライアントの通信を行います:
・SQLサーバ: デフォルトで19812 (環境設定の”SQL/設定”ページで変更可)。
・アプリケーションサーバ: デフォルトで19813 (“クライアント-サーバ/設定”ページで変更可)。
・DB4Dサーバ(データベースサーバ): デフォルトで19814。このポート番号を直接は変更できません。常にアプリケーションサーバのポート番号+1です。
v17でも確認済み。
第3ステージは見切り。矢澤材木店にはなかったのでまっすぐの木材からトリマーで作るのかなあと考えていた。あちこちホームセンターに行ってみたら、綾瀬市のハンディホームセンターにありました。そのままだと出っ張りすぎるけど、内側をトリムすれば使えそうだ。

難しかった45度のコーナー。付き合わせて135度になるように67.5度にカット。スライド丸ノコのおかげで正確に切れた。




2.4mm x 32mmのミニビスで2箇所どめ。

全体風景

本棚の下はLにカット。


終端を面取りしてみたら、ワンポイトになっている横溝が斜めにカットされてしまい、見た目いまいちだったのでそのままにした。
ようやく4月4日に完成。冬は終わっていた。
第2ステージは窓枠周り。窓枠ごとに高さが違う?驚きの施工。材料を切る前に気がついてよかったです。窓のないところは高さ790mm、窓の下は654mmと490mmの2種類だけど、654mmと650mmのところがあったり、490mmと484mmくらいのところもある。窓枠のないところは790mmなので、切り替わり目の板を、窓枠の角を囲むようにL型に加工してきちっとはめるのだ。さらに45度カットという難関、斜めに付いている勝手口のドアの両側。
別件ですが、ガラスをペアガラス(スペーシア)に交換、こちらはプロにお願いした。

窓枠の高さが場所によって異なる。材木店には長めにお願いしておいて、スライド丸ノコでギリギリに切って張っていく。

45度のコーナー、どの板を使うか、幅はどちらに寄せるか、コーナーの合わせ方はどうするか、トリマーを使ったら簡単にできるのではないかとか、上手いことやろうとしてしばらく踏ん切りがつかなかった。こういうところがアマチュア、というか趣味だな。


45度のコーナーを上から見たところ。

窓の角の合わせてL型に加工

板は2.4mm x 32mmのミニビスで上下を止めていった。









腰壁のトップに見切りがついているけど、見切りの話はまた次回
1Fリビングに腰壁を張るぞ
もう1年も前の話だけど、やり方を忘れそうなのでブログに残しておくことにしました。1Fリビング・ダイニングに日曜大工で腰壁を張った話。
リビング・ダイニングはもともと杉板の内装なのだが、杉板の収縮で隙間ができて寒いのでした。そこで腰壁を思いついた。縦に張っていけば隙間風は防げるだろうし、板厚もあるので暖かいのでは?
スライド丸ノコを手に入れてから日曜大工が楽しい、というのもあったけど、プロに頼むと一気にやらなくてはならず、事務所を片付けなくてはならない。自分でやれば片付けしなくてもいいし、作業しているところだけ家具を移動させながらのんびりやれる。
材料は矢澤材木店に注文、店主と相談して、さね加工の杉板(板厚12mmx110mmピッチ)を使うことにした。このお店は色々相談に乗ってくれるので助かりました。寸法を伝えて切ってもらう。配達してくれます。

まず簡単なところから始める。コンセントを避ける加工が1箇所ある。これが2月15日、第1ステージ完了。


ここまでで約1束。いけそうなので残りの材料を見積もり

第2ステージ用の材料到着

ステージ2に続く
4Dのリストボックスから開いたフォームに、「次前(つぎまえ、と読む)」を実装する
リストボックスの選択行の詳細を表示した時、次のレコードに移動するには、一度フォームを閉じてリストボックスに戻り、次の行をダブルクリックなどでレコードを表示する。これではユーザは不便。それでフォームに[次][前]ボタンを配置して、リストボックスに戻らなくても隣のレコードを表示できるように、という要望にお応えするのだ。
たとえばvKA01_lstKAというリストボックスがある。キー配列はvKA01_lstKA_IDとすると、次前はこのvKA01_lstKA_IDの配列中から隣のKA_IDを取得して、そのレコードをロードして表示する、ような実装をする。これでリストボックスに表示されているレコードを行ったり来たりする動きになる。
修正が必要なのは次の箇所。
1)フォームに◁▶︎のようなボタンと現在の位置を2/30のような形式で表示するテキストが必要

2)呼び出し元、たぶんKA01_btnModのようなボタンメソッド
次前しなければ$ka_idは変更されない値だったが、次前を実装するとフォームが閉じた時に変化していることがある。選択されている行番号も同様だ。戻ってきた時、最後に選択されているはずの行の内容を保存したり、リストボックスでその行を選択したりするために、フォームで次前が行われた結果の$ka_idと行番号を返してもらう必要がある。よってこれらはポインタで渡す。引数は次の3つ。

3)呼び出される側、KA02_Input_Mod
KA02_Displayする前に、配列のポインタ、行番号、$ka_idをプロセス変数に保持、ゲッターセッターを用意。_DisplayでOKされたら、フォームを表示する前のKA_IDと閉じた時のKA_IDは次前で変化している可能性があるため、Acceptの際にゲッターでKA_IDを取得してからレコードを保存する。リストを再作成してから、変化した行番号をゲッターで取得してリストボックスの行を選択し直す。

4)一番前に来たら前ボタン、一番後ろに来たら次ボタンをディスエイブルにするために、SetControlsValuesにSetControlsValues_PrevNextを追加

5)次前ボタン(KA02_brnNext)
次前の際に、レコードを保存するかどうかは設計が必要だ。次のようなケースがある。
理想を言えばDだが、Aでも成立するケースは多い。ユーザからの強い要望でBというケースもあったので決めつけることのないように。次の実装はAの自動保存。

ネーミングおよびJCL4Dについては「4Dアプリ開発ガイド」を参照。