17r3では,WP Create range
にドキュメントを渡した場合の振る舞いが調整され,仕様が明確になりました。
本文をクリックしてからコマンドを実行した場合(WP Get frame
がwk body
を返す状態),WP Create range
にドキュメントを渡したときに返されるレンジは,本文に対して相対的でした。
ヘッダーをクリックしてからコマンドを実行した場合(WP Get frame
がwk current section default header
を返す状態),WP Create range
にドキュメントを渡したときに返されるレンジは,ヘッダーに対して相対的でした。
WP Create range
にドキュメントを渡したときに返されるレンジは,フレームに関係なく,本文に対して相対的です。
ポイント: コマンドの振る舞いは,Write Proドキュメントがオフスクリーンであるかどうかに左右されず,一貫している必要があります。ヘッダーやフッターがフォーカスされている場合にレンジの基準が変動する以前の動作は,この原則に沿っていませんでした。
ヘッダーに対して相対的なレンジを取得することが目的であれば,ヘッダーをクリックしてカレントフレームを移動するのではなく,ヘッダーをコマンドに渡してください。
注記: 17r5でコマンドの名称はWP Text range
に変更されています。
Windows 64ビット版は,ダブルクリックするだけで,アプリケーションのインスタンスがいくつでも起動できるようになりました。この改良により,マルチクライアントまたはマルチテナントを想定したビジネスアプリケーションであれば,同一のマシン上で複数のクライアントアプリケーションを起動し,それぞれ別のユーザーアカウントで同一のサーバーに接続する,といったことが容易になりました。
17r4以前のバージョンでは,同一のマシン上で複数のクライアントを起動し,同一のサーバーに接続するためには,ClientLocal
という名称のフォルダー(ローカルリソースのキャッシュフォルダー)をそれぞれのクライアントをアプリケーションと同じフォルダーに作成する必要がありました。標準のキャッシュフォルダーは,サーバーの公開名・アドレス・ポート番号が同じであれば,同じものが使用されるためです。
ローカルリソースのキャッシュフォルダー(17r4)
\AppData\Local\{ApplicationName}\{DBName}_{ServerIP}_{ServerPort}
17r5以降,ローカルリソースのキャッシュフォルダーパスには,クライアントアプリケーションのフルパスから計算されたハッシュ値(10
進数3
桁)が追加され,コリジョンが検出された場合には,利用できるディレクトリがみつかるまで,自動的に値をインクリメントされるようになっています。使用中のキャッシュフォルダーには,inuse.txt
およびuuid.txt
というテキストファイルが作成されます。前者には,アプリケーションのプロセス番号(pid
)とアプリケーションのフルパスが改行コード(\n
)で区切られて書き込まれています。後者には,クライアントのUUID
が書き込まれています。
17r5以降,ClientLocal
という名称のフォルダーを作成する必要はありません。
ローカルリソースのキャッシュフォルダー(17r5)
\AppData\Local\{ApplicationName}\{DBName}_{ServerIP}_{ServerPort}_{hash}
注記: キャッシュフォルダーのパスは,Get 4D folder(4D Client database folder)
で取得することができます。
ビルドされたアプリケーションは,デフォルトの設定で複数インスタンスの起動が禁止されています。具体的には,info.plist
ファイルに下記のキーが書き込まれています。
<key>SingleInstance</key>
<string>0</string>
このキーは,BUILD APPLICATION
で指定するプロジェクトのキーで設定することができます。
<Preferences4D>
<BuildApp>
<CS>
<ClientWinSingleInstance>False</ClientWinSingleInstance>
</CS>
</BuildApp>
</Preferences4D>
このキーは,Windows版のビルドされたクライアントアプリケーションで有効です。Windows版のビルドされたスタンドアロンアプリケーションは,常に複数インスタンスの起動が禁止されています。
注記: Macでは,コマンドラインからopen -n
と命令することにより,同一アプリケーションのインスタンスを起動することができます。
17r4以降,Mac版のボーダーハイライトが17.xよりも「太く」表現されるようになりました。これはシステムの表示に合わせるための意図的な変更であり,仕様です。
17.x
17r4
4D for iOSは,標準的なXcodeプロジェクトを出力し,ネイティブiOSアプリをビルドするツールです。17r4に組み込まれている4D for iOSは,ABI安定化前のSwiftを使用しているため,XcodeおよびiOSのバージョンが17r4開発当時のもの(Xcode 10.1)でなければアプリをビルドしたり,デバイスで動かしたりすることができません。これは仕様です。
Xcode | Swift | iOS | 4D |
---|---|---|---|
10.2 | 5 | 12 | 17r5 |
10.1 | 4.2.1 | 12 | 17r4 |
10.0 | 4.2 | 12 | 17r3 |
9.4.1 | 4.1.2 | 11.4 | 17r2 |
17r4の4D for iOSを使用するのであれば,Xcode 10.1の環境を用意し,アップデートは控えるようにしてください。
注記: デバイスをiOS 12.2にアップデートすると,Xcode 10.1ではデバッグができなってしまいますので,テストに使用するデバイスのアップデートも控えたほうが良いかもしれません。
すでにアップデートしてしまった場合, Appleから過去のXcodeをダウンロードすることができます。
17r5には,Xcode 10.2およびSwift 5に対応した4D for iOSが組み込まれています。最新版のXcodeを使用するのであれば,17r5(ベータ版)の4D for iOSをご検討ください。
なお,4D for iOSは,単独でダウンロードすることもできます。
17r5のexport structure file
コマンドでフォームをエクスポートした場合,フォームの名前がそのままフォルダーの名前として使用されます。ファイルシステムで許可されていない名前がつけられたフォームは,必然的にエラーが返されることになります。
プロジェクトモードでは,識別子がファイルパスの一部になりますので,フォーム・オブジェクト・メソッドの名前に :
\
/
.
といった文字を使用することは控えてください。バージョン管理システムとの連携を考え,POSIXパスのフォルダー区切り文字も避けたほうが無難です。なお,テーブルは,名前ではなく,番号がフォルダー名に使用されるので,問題にはなりません。
忘れがちな点として,Windowsでは,歴史的な経緯により,フォルダー名に使用できない識別子があります。
IN
OUT
CON
PRN
AUX
NUL
COM1
COM2
COM3
COM4
COM5
COM6
COM7
COM8
COM9
LPT1
LPT2
LPT3
LPT4
LPT5
LPT6
LPT7
LPT8
LPT9
Windows版でMDIウィンドウの閉じるボタンをクリックしたり,Alt
+F4
を入力したり,タイトルバーの左端にあるウィンドウメニューの「閉じる」アクションを実行したりしても,アプリケーションが終了しない場合,アプリケーション「終了」アクションがきちんと設定されているか,確認してください。
「終了」アクションが実行されるためには,「終了」標準アクションが設定された項目がメニューに存在しなければなりません。「終了」メニューを設定することにより,Windows版でMDIウィンドウの「閉じる」ボタンがこのメニュー項目に関連付けられます。Mac版では,アプリケーションメニューに「…を終了」という項目が追加され,代わりに本来の項目がメニューから取り除かれます。
このメニュー項目にプロジェクトメソッドが設定されていない場合,項目を選択すると,自動的に確認ダイアログが表示され,終了することに同意すると,アプリケーションの終了プロセスが始まります。
このメニュー項目にプロジェクトメソッドが設定されている場合,項目を選択すると,確認ダイアログは省略され,すぐにアプリケーションの終了プロセスが始まります。
「終了」標準アクションが設定された項目がメニューに存在しない場合,MDIウィンドウの「閉じる」ボタンをクリックしても何も起きません。
ヘルプTipsが表示されているときにOBJECT SET HELP TIP
を使用した場合,表示中のヘルプは取り消され,新しい内容のヘルプが表示されます。これは仕様です。設定したメッセージが以前と同じものであったとしても,この点は変わりません。マウスポインターの移動中にコマンドを実行すると,ヘルプTipsが絶えず点滅し,ユーザーに不快な印象を与えるかもしれませんので,注意が必要です。
Current method name
をフォームメソッド内でコールした場合,コンパイルモードではフォーム名に出現する最後のピリオド以降の文字列が返されます。これは仕様です。たとえば,Invoice.Output.Dialog
のような名前をフォームに設定した場合,Dialog
だけが返されます。フォーム名にピリオドは使用しないでください。
ユーザーモードのメニュー項目「ファイル > 読み込み > ODBCソースから読み込み」および「ファイル > 書き出し > データをODBCソースに書き出し」は,64ビット版でdisabled
状態となっています。IMPORT ODBC
EXPORT ODBC
も64ビット版では使用できません。これは仕様です。ODBC経由でデータの読み書きをするのであれば,標準のSQLコマンドを使用してください。
注記: 32ビット版アプリケーションは,17r4が最後のリリースとなります。17r5以降,4Dおよび4D Serverは64ビット版アプリケーションのみのリリースとなり,32ビット版は提供されません。
17r3以降,スプレッドシートをVP EXPORT DOCUMENT
で.xlsx
形式でエクスポートすることができるようになりました。.4vp
形式を指定した場合,コマンドは同期処理でファイルを書き出しますが,.xlsx
形式を指定した場合,非同期処理でファイルを書き出した後,コールバックとして渡されたFormula
オブジェクトが実行されるようになっています。On Close Box
フォームイベントでコマンドを実行した場合,ウィンドウが閉じられることにより,非同期処理がアボートされてしまうため,.xlsx
形式のエクスポートはキャンセルされてしまいます。これは仕様です。ダイアログの終了と同時にエクスポートを実行するのであれば,コールバックとして渡されたFormula
オブジェクトが実行された後にウィンドウを閉じるようにしてください。