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

4Dで印刷、MacでPDFに保存するときにデフォルトのファイル名を指定したい

MacでPDFに保存 デフォルトのファイル名を指定したい

4Dアプリでフォームを使って印刷する場合、PDFファイルに保存したい場合があります。その時のデフォルトファイル名を指定する方法です。

プロジェクトメソッドに次のように記述します。

//—– ここから A04_btnPrint
//一覧を印刷、P07
//20170901 wat

C_LONGINT($numOfPages)
C_LONGINT($sizeOfAry;$i)
C_LONGINT($dlg_ok)
C_LONGINT($maxRows)
$maxRows:=42
C_LONGINT($pittari)
$pittari:=0

C_TEXT($title)
$title:=vA04_txtSpaceTitle+” “+vA01_txtPE_BeginEnd

P07_DefInit

//印刷設定ダイアログを表示
$dlg_ok:=JCL_prt_PageSetup (“P07_A04”)
If ($dlg_ok=1)

//印刷ファイル名を指定
SET PRINT OPTION(Spooler document name option;$title)

//進歩表示を隠す
SET PRINT OPTION(Hide printing progress option;1)

//総ページ数を求める ページごとの開始SL_ID
$numOfPages:=zz_prt_GetNumOfPages ($maxRows;->vA04_lstB_JO_ID)
For ($i;1;$numOfPages)

P07_PrintHeader ($i;$numOfPages)

//伝票を印刷 ボディ部を印刷
P07_PrintDetail ($i;$maxRows;->vA04_lstB_JO_ID)

If ($i=$numOfPages)

P07_PrintFooter

End if

If ($i<$numOfPages) PAGE BREAK(>)
End if

End for

End if
//—– ここまで 

このソースでは、SET PRINT OPTIONに「Spooler document name option」を指定すればPDFのファイル名をデフォルト設定できると期待しました。
SET PRINT OPTION
http://doc.4d.com/4Dv16/4D/16.2/SET-PRINT-OPTION.301-3432883.ja.html

□ Windowsの場合
OSにPDF出力機能が実装されていないため、オプションでPDF出力機能を追加することになります。このケースでは上記スプーラドキュメントのデフォルトファイル名はうまく機能します。

□ Macの場合
OSにPDF出力機能が実装されているため、うまく働きません。プリントダイアログで左下のプルダウンメニューの[PDFで保存]を実行するとデフォルトファイル名は「名称未設定.pdf」になってしまいます。
しかし、プリントダイアログで左下のプルダウンメニューで[プレビューでPDFを開く]を選択すると、プレビューアプリが起動してデフォルトファイル名に指定した文字列が適用されます。プレビューの保存機能を利用することでデオフォルトファイル名が有効に働きます。

The Dubbeez

The Dubbeez (NL) Live @ Ostróda Reggae Festival 2016 / Poland

The Dubbeez (NL) Laureat Międzynarodowego konkursu World Reggae Contest na Ostróda Reggae Festival 2016 / Poland

初代MacBookAir 13 64GB

初代MacBookAir 13 64GB

TimeMachineにバックアップできました。MacOS X 10.7.5

外付けハードディスクで1度失敗、AirMacExtremeで1度失敗、次にもう一度外付けディスクで試したら、1度目とは違って、準備中が一瞬で終わって、無事バックアップが完了しました。その後もバックアップは成功しています。外付けハードディスクはG-Drive 1TB
最初の失敗は準備中に時間がかかりすぎたため、タイムアウトっぽくなったようです。マシンがどこかおかしい様子はありませんでした。

もともとこのマシン、2008年3月に購入したもの。以前2014年5月にクリックとキータッチが変だと思ったら筐体が膨らんでました。AppleStore銀座で見てもらった結果、マシンに異常はなくバッテリーが膨らんだだけ、という診断でしたが、バッテリーが入手できないとのこと。ビットシステムサービスに聞いてみたらeBayを紹介されて、2014年6月にeBayで新しいバッテリーを注文、1か月ほどで入荷、自分で取り付けました。$51の中国製です。その2代目のバッテリーも3年で膨らんでしまいました。

このままでは危ないと、裏蓋を開けてバッテリーを外し、バックアップをとったというお話です。

ハッピーユーザーインターフェイス キーイベントハンドリング その2(4D v16)

リストボックスのキーイベントハンドリング(4D v16)

ハッピーUIを目指して実装中の会計ソフトで、キーイベントをハンドリングしてみたことを報告します。

エディットフィールド、リストボックスのリストで編集中の列、で検証しました。主役は次の2つのイベントです。これらをプロパティリストでチェックしておいてください。

On Before Keystroke
On After Keystroke

キーボードのあるキーが押されたとき、これらの2つのイベントが発生します。
キーが押される前の状態でOn Before Keystrokeが発生、、キーが押されたあとの状態でOn After Keystrokeが発生します。
それぞれのイベントでGet edit textを使って文字列を取得すると、キーイベント発生前の文字列、発生後の文字列をそれぞれ取得することができます。
入力されようとしているキーはKeystrokeで取得します。

Before Keystrokeを使ってKeystroke、を取得し、ある特定のキーをフィルタにかけることができます。

□ やりたいこと
あるフィールドに入ったあとで、

・キーボードが押されたら、数値しか受け付けない(キーフィルタ機能)
・数字の文字列が登録されていたら、別フィールドに対応する値を表示(別のフィールド移動機能)
・登録されている値がわからない場合に、値を選択するインタフェースを提供(ダイアログ表示機能)

会計ジロウでは会計ジローの例を見てみましょう。
科目コードには数字とハイフンだけを入力可にして、他の文字を無視します。(キーフィルタ機能)科目コードが登録済みであれば、科目名を別のフィールドに表示します。科目コードがわからない場合に備えて、登録されている科目コードの一覧を表示して選択できるようにもしたいですね。

ここでは、キー「h」(helpの頭文字)をタイプされたときに科目コードの一覧を表示するようにします。科目コードの数字を入力されている最中に突然「h」を押すと、ダイアログが表示されて科目一覧で選択できる、というシナリオです。

このようにヘルプ画面を表示する操作としては、コマンドキーやコントロールキーとキーの組み合わせもありまして、これらをモディファイアと呼びますが、この話はまた別の機会にします。

続きはこちら

リストボックスのイベントハンドリング(4D v16)

よくあるフォーム&ディテールの画面

エディットフィールドがいくつかあって、同じフォームに明細データがリストボックスで表示されているパターンです。

タブキーを押してフィールドを移動していき、リストボックスにフォーカスが移動したとき、このリストボックスは、
・配列型
・リストで編集可能
にしておきます。
そこで次のようにしたいです。
・配列要素がなければ1つだけ作る
・最初のフィールドに移動
これにはリストボックスのフォームメソッドに次のように記述します。

: (Form event=On Getting Focus)

If (Focus object=Self)

EDIT ITEM(vA05_lstJO_D_CODE;1) // 20170306 ok

End if

フォーカスが来たときに、EDIT ITEMを実行して、一つ目の編集可能な列に移動させています。if(focus object=self)が重要で、これがないと最初の列から次の列にフォーカスを移動できなくなってしまいます。次の列に移ろうとするときも、Getting Focusがリストボックスに対して発生してしまうからです。