喫茶XRAYトップページ

[スレッド全体
]

[5158] Re:等幅フォント(plPrev)返信 削除
2011/8/27 (土) 08:34:39 Mr.XRAY
▼ Syakeさん,どうも

> 試行錯誤しましたが、FontNameで指定した場合とFont.Nameで指
> 定した場合に動作が異なるようです。


この現象,フォントサイズを大きくすると,どうなるでしょう?
テストしていただけますか?
StrTxtの長さを短くしないと比較できないかも知れませんが...
後,フォントサイズの

FontSize(10)を FontSize(10.0)
にしてみるとか(悪あがきか?)

ちょっとやってみたんですが,原因は,今のところ分かりません.


[5159] Re2:等幅フォント(plPrev)返信 削除
2011/8/27 (土) 09:04:19 Mr.XRAY
▼ Syakeさん,どうも

こちらでは,現象を確認できるコードがまだできていません.
そこで,もう1つお願いしたいのですが.
plPrev.pasの中に
plAdjustFontという関数があります.
これを実行しないようにするとどうなるか確認していただければ
と思います.
今のところの予想では,フォントサイズの設定が正常に行われていない
可能性がある気がします.

procedure TCustomplPrev.plAdjustFont(Canvas: TCanvas);
var
  tm : TTextMetric;
  lf : TLogFont;
begin
  exit;   // 例えばこんな感じで...
  GetObject(Canvas.Font.Handle, SizeOf(lf), @lf);
  if lf.lfWidth = 0 then begin
    GetTextMetrics(Canvas.Handle, tm);
    lf.lfWidth := -lf.lfHeight * tm.tmAveCharWidth div tm.tmHeight;
    Canvas.Font.Handle := CreateFontIndirect(lf);
  end;
end;

フォントサイズをほんの少し(小数点以下)大きくすると下の行のようになる
プレビュー画面の拡大,縮小でも確認可能

[5160] 同様の現象を確認しました返信 削除
2011/8/27 (土) 21:58:18 Mr,XRAY
▼ Syakeさん,どうも

同様の現象を確認しました.
以下はテストコードです.

Windows XP(SP3) + Delphi 2010, XE,
Windows 7 U64 + Delphi 2010, XE
で発生しました.
plAdjustFontという関数を無効にすると発生しませんでした.
これから,OSとDelphiの各バージョンでテストしてみます.
どれが本当なのかも調べる必要があります.
とりあえず,plAdjustFontを無効にしてみてください.

しかし,Syakeさんに,またまた感謝ですね.
バグ発見功労者のトップかも知れません.
もちろん,いまいまでバグを発見して下さった方々にも感謝しております.

procedure TForm1.Button1Click(Sender: TObject);
var
  StrTxt : String;
  X1     : Integer;
  X2     : Integer;
  Y1     : Integer;
  Y2     : Integer;
  Yhigh  : Integer;
begin
  X1    := 200;
  X2    := 1700;
  Y1    := 400;
  Yhigh := 50;
  Y2    := Y1 + Yhigh;

  with plPrev1 do begin
    BeginDoc;

    FontName('MS ゴシック');
    FontStyle([]);
    FontSize(10);
    StrTxt := '000000000000000000';
    TextRectLC(X1, X2, Y1, Y2, StrTxt);

    Y1 := Y1 + 50;
    Y2 := Y1 + Yhigh;

    FontName('MS ゴシック');
    FontStyle([]);
    FontSize(10);

    StrTxt := '000000000000000000';
    TextRectLC(X1, X2, Y1, Y2, StrTxt);

    EndDoc;

    ShowModal;
  end;
end;



[5165] 修正版UPしました返信 削除
2011/8/28 (日) 17:41:39 Mr.XRAY
> とりあえず,plAdjustFontを無効にしてみてください.

これだと別の問題が発生するようです.前にありました.
で,Syakeさんの動作確認を待たずに,修正版UPしてしまいました.
多分大丈夫だと思います.

バグ修正の具体的な内容は,ソースコードに書いてありますが,
私の非常に簡単な,単純,思い違いのコーディングミスです.
深くも浅くも追及しないでくださいませ(大汗).お願いです (^^;
「勝てば官軍,動けば正義」ということにしておいてください m(_ _)m


[5166] Re:修正版UPしました返信 削除
2011/8/29 (月) 12:02:26 Syake
▼ Mr.XRAYさん
おはようございます、と言ってももう昼飯時分です。
お手数をお掛けいたしました。
私めは、日祝日は冬眠しておりまして返答無くすいません。
マスターはお休み無しですね。

早速確認してみます。




[5167] Re2:修正版UPしました返信 削除
2011/8/29 (月) 12:06:23 Mr.XRAY
▼ Syakeさん.どうも

>マスターはお休み無しですね。

いえ,休みだからやったんです(笑)
正義の味方に休みはないのだ!

> 早速確認してみます。

それで,誠に申し訳ありませんが,このバグ修正により,前のバージョンで
作成したアプリの文字列表示幅が変化してしまうかも知れません.
その場合は,各自で修正してください.
ホントに情けないバグでした.Syakeさんのこのスレッドがなかったら,
永久に気付かなかったかも知れません.


[5168] Re3:修正版UPしました返信 削除
2011/8/29 (月) 12:12:13 Syake
▼ Mr.XRAYさん

結果、完璧でございました。
ありがとうございました。m(_ _)m

> それで,誠に申し訳ありませんが,このバグ修正により,前のバージョンで
> 作成したアプリの文字列表示幅が変化してしまうかも知れません.
> その場合は,各自で修正してください.

了解です。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82