線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2385
推到 Plurk!
推到 Facebook!

設定字距問題?

 
photoboy
一般會員


發表:1
回覆:0
積分:0
註冊:2002-07-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-22 14:30:26 IP:202.168.xxx.xxx 未訂閱
請問各位前輩,從資料庫中撈出的資料 因為要套表列印,有辦法設定資料的字距嗎? (譬如身份證字號F123456789要印成F 1 2 3 4 5 6 7 8 9)
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-22 16:18:01 IP:203.204.xxx.xxx 未訂閱
引言: 請問各位前輩,從資料庫中撈出的資料 因為要套表列印,有辦法設定資料的字距嗎? (譬如身份證字號F123456789要印成F 1 2 3 4 5 6 7 8 9)
我也想知道,我的問題是我的資料有很多,想擠在一頁裡印出,又不想縮小字型,想減少字距以容下更多資料,因為資料拋出到Excel可以縮小字距,在不縮小字型下印出。 在深度論壇有人提用SetTextCharacterExtra(Canvas.Handle,nCharSpace);可控制字距,但是實做不出來,不知有沒有人知道如何控制。
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jumo
一般會員


發表:33
回覆:65
積分:24
註冊:2002-04-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-07-25 18:39:18 IP:61.221.xxx.xxx 未訂閱
試試看這一段程式碼, 不過要自行改成 Report 列印 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); private function CountChar(BufStr: String): Integer; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var i, j, k : integer; BufStr : String; begin image1.Picture := nil; for j:=0 to memo1.Lines.Count-1 do begin BufStr := memo1.Lines.Strings[j]; SetTextCharacterExtra(image1.Canvas.Handle , 0); k := CountChar(BufStr); if k>1 then begin i := (image1.Width - image1.Canvas.TextWidth(BufStr)) div (k-1); if i>=0 then SetTextCharacterExtra(image1.Canvas.Handle , i); else SetTextCharacterExtra(image1.Canvas.Handle , 0); image1.Canvas.TextOut(0, Trunc(j * image1.Canvas.Font.Size * 1.5), BufStr); end else begin SetTextCharacterExtra(image1.Canvas.Handle , 0); image1.Canvas.TextOut(image1.Width div 2, Trunc(j * image1.Canvas.Font.Size * 1.5), BufStr); end; end; end; function TForm1.CountChar(BufStr : String):Integer; begin Result := 0; while Length(BufStr)>0 do begin if Windows.IsDBCSLeadByte(Byte(BufStr[1])) then BufStr := Copy(BufStr, 3, Length(BufStr)-2) else BufStr := Copy(BufStr, 2, Length(BufStr)-1); Result := Result 1; end; end; end.
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-26 14:53:40 IP:203.204.xxx.xxx 未訂閱
引言: 試試看這一段程式碼, 不過要自行改成 Report 列印
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi,
  StdCtrls, ExtCtrls;    type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    function CountChar(BufStr: String): Integer;
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject);
var i, j, k : integer;
    BufStr : String;
begin
  image1.Picture := nil;
  for j:=0 to memo1.Lines.Count-1 do begin
    BufStr := memo1.Lines.Strings[j];
    SetTextCharacterExtra(image1.Canvas.Handle , 0);
    k := CountChar(BufStr);
    if k>1 then
      begin
        i := (image1.Width - image1.Canvas.TextWidth(BufStr)) div (k-1);
        if i>=0 then
          SetTextCharacterExtra(image1.Canvas.Handle , i);
        else
          SetTextCharacterExtra(image1.Canvas.Handle , 0);            image1.Canvas.TextOut(0, Trunc(j * image1.Canvas.Font.Size * 1.5), BufStr);
      end
    else
      begin
        SetTextCharacterExtra(image1.Canvas.Handle , 0);
        image1.Canvas.TextOut(image1.Width div 2, Trunc(j * image1.Canvas.Font.Size * 1.5), BufStr);
      end;
  end;
end;    function TForm1.CountChar(BufStr : String):Integer;
begin
  Result := 0;
  while Length(BufStr)>0 do begin
    if Windows.IsDBCSLeadByte(Byte(BufStr[1])) then
      BufStr := Copy(BufStr, 3, Length(BufStr)-2)
    else
      BufStr := Copy(BufStr, 2, Length(BufStr)-1);
    Result := Result   1;
  end;
end;    end.
jumo兄: 你的範例確實可使字距加大,不知SetTextCharacterExtra可否用來縮小字距,設成負的好像沒有用,不過還是感謝你的範例,又多學了一招。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
系統時間:2024-11-23 7:33:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!