2005/6/26 (日) 01:04:16 Mr.XRAY |
表題の内容についてメールでの問合わせがありました.
皆さんの参考になると思いますので,ここに内容の概略を紹介して
おきます.
http://www.technical.or.jp/
このサイトの[事業案内]から辿っていくと,バーコードフォントがDL
できます.質問の内容は,このフォントを印刷する方法についてです.
http://www.technical.jp/handbook/chapter-font1.html
------- メールで返信内容 -----------------------------------
特殊フォントの場合は,FontプロパティのCharSetを指定する必要が
あります.CharSetは利用するフォントによって異なる場合がありま
す.
確認方法は,
(1) 目的のフォントをまずインストール
(2) フォームに,例えばTPanelを一つ配置
(3) このPanel1のFont.Nameをオブジェクトインスペクタで
目的のフォントを選択
(4) Font.Charsetが自動的にANSI_CHARSETになった.
自動的にならない場合もあります.その時はCharSetを変更して,
目的のフォントでの表示になるものを探します.
OEM_CHARSETが有力な候補です.
そこで改めて,印刷プレビューのコードを以下の様にします.
ただし,印刷プレビューコンポでは,0.1mm単位の描画ですので,
バーコードのサイズは,規格などを参考にしてFont.Heightまたは印刷
プレビューコンポのFontHeightメソッド等で調整して下さい.
//PVはTplPrevのこと
pv.FontName('CODE39');
pv.Canvas.Font.Charset:=ANSI_CHARSET;
pv.TextOut(300,300, '*1234567890*');
------- ここまで -----------------------------------
なお,質問された方は事情により,実際にはDEKO(TEADの作者)さんのと
ころのバーコード生成ユニットを以下の様に使用されたとのことです.
------- 質問された方のコード(引用開始) -----------------------------------
http://homepage1.nifty.com/ht_deko/
これを使用してみることにしました。
S := PQuery1.FieldByName('KANRINO').AsString;
// CODE-39
BK := Make_CODE39(S, false);
// 倍率
n := 2;
Position := 0;
for Counter:=1 to Length(BK) do
begin
LineWidth := ((StrToInt(BK[Counter]) div 2) + 1) * n;
if (StrToInt(BK[Counter]) mod 2) = 0 then
// 空白
begin
Position := Position + LineWidth;
end
else
// バー
begin
for i:=1 to LineWidth do
begin
//DrawLine(Position);
Pv.MoveTo(Position + 120, 300);//==========
Pv.LineTo(Position + 120, 338);//==========
Inc(Position);
end;
end;
end;
pv.TextOut(120,340, S);
一応打ち出してバーコードリーダーで読めました。
------- ここまで(引用終了) -----------------------------------
参考になれば幸いです.
# 本日(昨日?)は問合わせ関係のメール処理は2件だけ.
# 本当に少なくなりました.
|
|