一括表示

Default Printer の一時変更 投稿者:JP7CZE 川辺 

HamLog Helpの○ Q&A に,

[Q23] Turbo HAMLOG/Winで「プリンタの設定」を変更しても、次回起動したときには元に戻ってしまうのですが。
----------------
Windows の仕様と思います。
プリンタの設定を変更し、次回起動したときもその状態を保つには、Windowsのコントロールパネルなどでプリンタの設定を変更して下さい。
-----------------
とあります.これを回避する方法として,VB6では,以下の方法が可能です.

1.設定ファイルを読み込む中に,プリンター名の項目があれば,プリンター名を HamlogDefaultPrinter とかの変数に取得する.
  また,PaperSizeも,HamlogPaperSizeとかの変数に取得する.

2.設定ファイルの内容に従ってDefaultPrinterの設定,PaperSizeをするには,
(1).まず,現在のDefaultPrinter名, PaperSize を取得し,DefaultPrinter, DefaultPaperSizeとかの変数に保存.
(2).以下の方法で,DefaultPrinterを設定
Dim X As Printer 'プリンタ構造体の変数Xを作成
For Each X In Printers
If X.DeviceName = HamlogDefaultPrinter Then '設定ファイルで設定したのとデバイス名を検索.
' 一致すれば,プリンタをシステムの通常使うプリンタに設定します。
Set Printer = X
' プリンタの検索を中止します。
Exit For
End If
Next
X.PaperSize = HamlogPaperSize '用紙サイズの設定

 これで,設定ファイルに保存しているプリンタ名と用紙サイズに設定完了です.

3 終了時に,同じ手順で,DefaultPrinter,DefaultPaperSizeに戻して,HamlogDefaultPrinterを設定ファイルに書き出す.

 と,こんな感じで不可能ではないと思います.
 実際に必要な機能かどうかといいうと・・・あったらあったで嬉しい機能かもしれません.私も何回かに1回くらい,用紙サイズの指定を忘れて,あれれ,出ない,と思うことがあって,プリンタのデータキャンセルをすることがあるので.

2014/02/03(Mon) 21:07:19  [No.386]


Re: Default Printer の一時変更 投稿者:JG1MOU浜田 

JP7CZE川辺さん、こんばんは。 JI1SAI/7からうかがっております。

私もQSL印刷を実行したら自動給紙トレイのA4用紙でガチャガチャ
印刷が始まってしまい、給紙トレイごと引っこ抜いて強制中断させる
ことがよくあります。Hi

私の開発ソフト(Delphi 3.1)では、プリンタの用紙サイズ取得は、
内部でWin32-APIのGetDeviceCaps()を呼び出しているだけのようで、
取得するだけのプロパティです。

用紙サイズ設定の機能は自作できそうですが、用紙トレイ設定の
ファンクションがよくわかりません。
後日、ググってみます。

2014/02/03(Mon) 22:12:50  [No.387]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

> JP7CZE川辺さん、こんばんは。 JI1SAI/7からうかがっております。
>
> 私もQSL印刷を実行したら自動給紙トレイのA4用紙でガチャガチャ
> 印刷が始まってしまい、給紙トレイごと引っこ抜いて強制中断させる
> ことがよくあります。Hi

で,あわてて止めて,印刷マークを元に戻して...コールサインでソートして印刷させているので,印刷済みのを範囲の中から目で追わないとダメなんですよね(^^;

> 私の開発ソフト(Delphi 3.1)では、プリンタの用紙サイズ取得は、
> 内部でWin32-APIのGetDeviceCaps()を呼び出しているだけのようで、
> 取得するだけのプロパティです。

Win32-APIで,たぶんこういうのがあるんだろうと思って,検索したら,SetPrinterData, SetPrinterDataEX,これらがありました(MSDNのオフラインのHelpでも検索できるはず).
もちろん,GetPrinterData, GetPrinterDataEXもあって,
VisualBasicだと,これらの関数を構造体を経由して読み書きしているだけだと思います.

> 用紙サイズ設定の機能は自作できそうですが、用紙トレイ設定の
> ファンクションがよくわかりません。

以上は,
http://msdn.microsoft.com/ja-jp/library/cc428711.aspx
のページを見るとわかると思います.

ということで,お暇な時にでも...

2014/02/03(Mon) 22:59:49  [No.388]


Re: Default Printer の一時変更 投稿者:JG1MOU浜田  《URL》  

> で,あわてて止めて,印刷マークを元に戻して...コールサインでソートして印刷させているので,印刷済みのを範囲の中から目で追わないとダメなんですよね(^^;

「連続印刷」の場合は、プリンタにデータを吐き出した後、[OK]をクリ
ックしなければ、全部印刷してしまっても印刷済みマークは入りませんよ。

2014/02/10(Mon) 19:11:14  [No.399]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

> 「連続印刷」の場合は、プリンタにデータを吐き出した後、[OK]をクリ
> ックしなければ、全部印刷してしまっても印刷済みマークは入りませんよ。

お〜,そういう機能があったのですね.
「連続印刷」・・・どこにあるのか???やっと見つけました。チェックボックスの並びの上の真ん中ですね(^^;

とりあえず,QSLカードを印刷できることだけで精一杯のままで使ってきて,意味もわからずに,見ないふりしてました(^^;

強制改行ができるようになったので,Directの宛先をRemark2に書いちゃおうかと思ってます...で,A4でラベル印刷できればなぁと.
しっかり,印刷ダイアログのお勉強と,印刷関係のコマンド,変数関係の勉強をしなきゃと思っているところです。

ほんとに便利でおもしろいソフト,ありがとうございます.

2014/02/10(Mon) 23:58:47  [No.400]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

浜田さん,ほんとにすばらしいソフトありがとうございます.

> 用紙サイズ設定の機能は自作できそうですが、用紙トレイ設定の
> ファンクションがよくわかりません。

 用紙,トレイについてはHamlogの既存のルーチンが使えますね。
 一時的にデフォルトプリンタを変更したあと,既存のルーチンで取得して,設定ファイルの値を設定,でできそうですね.

>JI1SAI/7からうかがっております。

現代のアマチュア無線,HamLogは新參者でして,5月でようやく3年目です.

40数年前はもちろん手書きLOGで,40数年後の世界は浦島太郎状態でした.で,現代にはHamlogという便利なログソフトがあるよということをローカルから教えていただいて,使わせてもらっています.DOS時代からの歴史のあるソフトということで(JW_CAD,秀Term,チューチューマウス,FILMTN,卓駆★,等々懐かしいですね,そういう時代には立派に存在していたわけですよね), 操作体系もWindow標準操作と合せたりする部分(仕様変更とか)もあったのでしょうね.

この前は,自動改行の件,採用していただきましてありがとうございます.あの後,Helpを見ていたら,#Text...という命令があるのを見て,
それなら,#Center とか #Rightなんかも有りかな,なんて思いました.
間に想定しているのは#Textですが,#Print, #PrintAなんかでも,Xの値が書いてあっても無視...ついでに,#Center StartX, EndX なんてパラメータも有りかとか,妄想しています.

ということで,現時点では,BBSで書かせていただいたような,ちょっと違和感を覚えつつ,活用させていただいております.

2014/02/03(Mon) 23:26:51  [No.389]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

浜田さん,お忙しい中,早速の修正ありがとうございます.

DefaultPrinter自体を書き換えてしまうと,他のプログラムに影響を与えてしまうので,リストを取得してマッチングする方法をとられたのですね.その方が行儀良いソフトで,私の方法は行儀悪い方法でした.

ついでながら,印刷ダイアログにはStatusBarが無いので,[プリンタ設定]ボタンのMouseMoveのときに,バルーンで”プリンタ名,用紙サイズ,トレイ”が表示されれば有難いです.
確認のためなら,ボタンを押してプリンタ設定ダイアログを出すまでもないということで.

2014/02/08(Sat) 00:16:45  [No.390]


Re: Default Printer の一時変更 投稿者:JG1MOU浜田 

JP7CZE 川辺さん、こんにちは。

> ついでながら,印刷ダイアログにはStatusBarが無いので,[プリンタ設定]ボタンのMouseMoveのときに,バルーンで”プリンタ名,用紙サイズ,トレイ”が表示されれば有難いです.

プリンタ情報は、Win32-APIの、DEVMODE構造体の内容を読みだすと、
取得することができます。(ということを先日知りました。)

構造体メンバーの大半は数値で、また、プリンタ固有の設定方法があり
ますので、文字列で保存されているプリンタ名、用紙名をバルーンヒント
で表示させようと思います。
アイディアを有難うございました。

2014/02/08(Sat) 10:10:36  [No.391]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

浜田さん,こんばんは.

> プリンタ情報は、Win32-APIの、DEVMODE構造体の内容を読みだすと、
> 取得することができます。(ということを先日知りました。)

私は,VB3で書いた80万件くらいのデータを座標の中にプロットするプログラムを10年位前にVB6に移植した時,ドローソフトに読み込ませるのに,以前はDXFかPSで時前で出力していたのを,PDFプリンタに出力するようにした時,とりあえず出来るようにやっただけなので...m(__)m

> 構造体メンバーの大半は数値で、また、プリンタ固有の設定方法があり
> ますので、文字列で保存されているプリンタ名、用紙名をバルーンヒント
> で表示させようと思います。
> アイディアを有難うございました。

了解です.参考にさせてもらいます.
ありがとうございました.

2014/02/08(Sat) 19:18:36  [No.392]


Re: Default Printer の一時変更 投稿者:JP7CZE 川辺 

浜田さん,

> アイディアを有難うございました。

速いですね,もう表示できるようになったんですね.
せわしないオペレート中に使う機能ではないですが,
やはりボタンを押してダイアログを開くより,気が楽です.

ありがとうございました.

2014/02/08(Sat) 19:26:11  [No.393]