月別アーカイブ: 2021年5月

4D パスワードを入力中、タイプインされた文字列を誰かに見られないように「・」で表示したい

パスワードを入力中、タイプインされた文字列を誰かに見られないように「・」で表示したいばあいにどうするか。備忘録。

4Dでは、入力フィールドに特殊なフォントを設定することで実現。

次のようなメソッドを記述する。

 OBJECT SET FONT(vD61_fldPassword;”%password”)

  • オブジェクトに入力された文字は全て「・」で表示される。
  • オブジェクト内での”カット”と”コピー”が無効になる。

• %password オプションは、フィールド、変数、そしてコンボボックス型のオブジェクトに対して使用可能。

フィールドにタイプインされる文字を半角英数文字に限定したいなら、入力フィルターに「&@」と指定する。フィールドに入る前に全角モードになっていても自動的に半角モードになってくれる。「&a」や「&9」でもそうだが、英数字に制限するようなフィルタを設定すると、全角半角の自動切り替えのような動きになる。

4Dアプリ開発ガイドをv18対応に改訂、キーフィールドが必須に

4Dアプリ開発ガイドを改訂。v15対応(以下、旧ガイドと呼ぶ)をv18対応(以下、新ガイドと呼ぶ)にした。

4Dの仕様変更に従って一部内容を変えた。当時の4DはSQLと同様に「レコードのキーフィールドはなくてもいい」という仕様だった。Display selectionとModify recordでレコードを操作する場合はそれでよかった。しかし旧ガイドは、ハンズオンの目標としてリストボックスをダブルクリックするアプリを作る都合上「キーフィールドは必須」だ。そのためキーフィールドに格納するユニークなレコードIDを生成するためにシリアル番号テーブルを実装していた。SQLではよくやる手だ。

v18ではキーとなるIDフィールドの実装が必須になった。SQLとは異なる仕様だ。新ガイドではSQL的な実装をやめて4Dの機能を使うようにした。IDフィールドには、重複不可の属性をつけて自動入力属性でユニークIDを入れるという実装だ。これによりシリアル番号テーブルは不要になった。旧ガイドで実装していたのはシリアル番号テーブルとログインユーザテーブルの2つ。シリアル番号テーブルがなくなると、実装するのは「ログインユーザ」テーブル1つだけになる。これではガイドとして内容が薄いということで、新ガイドではログイン履歴を記録することにした。履歴の保存先としてアクションテーブルを実装。ログインユーザを表示すると、ユーザ名やパスワードとログイン履歴一覧を表示するアプリとした。

この結果として、新ガイドでは「ログインユーザ1件についてログイン履歴がN件あるリレーショナルデータベース」を実装することになり、1対Nのリレーショナル構造を実装するためのテーブル定義と画面表示について説明することになった。

ハンズオンのステップの多くは旧ガイドから流用した。誤字脱字は訂正し、デスマス調をデアル調に変えた。よく使うキーボードショートカットキーを示したり、コラム欄を追加して、なぜそのような実装にしているかの説明を増やした。附録のデバッグの章には、4Dのデバッガでよく使う機能についての説明を追加した。