fastreport barcode ean8/ean13 條碼殘缺問題 |
答題得分者是:小傑克
|
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
|
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
------
对岸的菜鸟,但是很喜欢用delphi! |
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
|
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
|
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
找到frxBarcode.pas,以下代碼段,看起來是畫出BARCODE,
這里能不能動些手腳呢... 研究中... [code delphi] procedure TfrxBarCodeView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); var SaveWidth: Extended; ErrorText: String; DrawRect: TRect; begin FBarCode.Angle := FRotation; FBarCode.Checksum := FCalcCheckSum; FBarCode.Typ := FBarType; FBarCode.Ratio := FWideBarRatio; if Color = clNone then FBarCode.Color := clWhite else FBarCode.Color := Color; SaveWidth := Width; FBarCode.Text := FText; ErrorText := ''; if FZoom < 0.0001 then FZoom := 1; try if (FRotation = 0) or (FRotation = 180) then Width := FBarCode.Width * FZoom else Height := FBarCode.Width * FZoom; except on e: Exception do begin FBarCode.Text := '12345678'; ErrorText := e.Message; end; end; if FHAlign = haRight then Left := Left SaveWidth - Width else if FHAlign = haCenter then Left := Left (SaveWidth - Width) / 2; BeginDraw(Canvas, ScaleX, ScaleY, OffsetX, OffsetY); DrawBackground; if ErrorText = '' then FBarCode.DrawBarcode(Canvas, Rect(FX, FY, FX1, FY1), FShowText) else with Canvas do begin Font.Name := 'Arial'; Font.Size := Round(8 * ScaleY); Font.Color := clRed; DrawRect := Rect(FX 2, FY 2, FX1, FY1); // DrawRect := Rect(FX 2, FY 2, FX1-1, FY1); DrawText(Handle, PChar(ErrorText), Length(ErrorText), DrawRect, DT_WORDBREAK); end; DrawFrame; end; [/code]
------
对岸的菜鸟,但是很喜欢用delphi! |
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
|
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
小弟在componet >>install packages 畫面,刪除fr相關packages 之后,編輯Source\frxBarcode.pas 之
procedure TfrxBarCodeView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); 將以下段MARK, // DrawText(Handle, PChar(ErrorText), Length(ErrorText), // DrawRect, DT_WORDBREAK); 猜測應該不會畫出文字部分, 重新編譯,安裝,查看BARCODE 元件,還是能夠畫出文字,這是為何呢? 各位大人,幫下小弟吧...
------
对岸的菜鸟,但是很喜欢用delphi! |
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
沒用過,沒元件,沒source 看不出來....DrawText 顯然是那個report 自己寫的function,因為delphi 的 canvas沒這個
至於你改source 沒用, 應該要檢查 delphi 引用路徑中 是否有這個pas 的dcu, 把dcu砍掉重build 才會有用 ===================引 用 xnium 文 章=================== 小弟在componet >>install packages 畫面,刪除fr相關packages 之后,編輯Source\frxBarcode.pas 之 procedure TfrxBarCodeView.Draw(Canvas: TCanvas; ScaleX, ScaleY, OffsetX, OffsetY: Extended); 將以下段MARK, // DrawText(Handle, PChar(ErrorText), Length(ErrorText), // DrawRect, DT_WORDBREAK); 猜測應該不會畫出文字部分, 重新編譯,安裝,查看BARCODE 元件,還是能夠畫出文字,這是為何呢? 各位大人,幫下小弟吧...
------
額有朝天骨,眼中有靈光 |
xnium
一般會員 發表:27 回覆:26 積分:10 註冊:2007-09-05 發送簡訊給我 |
呵呵 謝謝 兄弟,剛才自己胡亂的修改了 frxBarcod.pas
procedure OutText; ...... case FTyp of bcCodeEAN8: // 8 digits, 4 4 begin TextOutR(3, 3, 30, Copy(FText, 1, 4)); TextOutR(35, 35, BarWidth - 4, Copy(FText, 5, 4)); end; bcCodeEAN13: // 13 digits, 1 6 6 or 12 digits, 6 6 begin //if FText[1] <> '0' then TextOutR(-8, -8, -2, Copy(FText, 1, 1)); TextOutR(3, 3, 44, Copy(FText, 2, 6)); // TextOutR(49, 49, BarWidth - 4, Copy(FText, 8, 6));// 修改前 TextOutR(49, 49, BarWidth - 5, Copy(FText, 8, 6)); end; ...... 重新編譯 安裝就可以了,真的很高興謝謝諸位...
------
对岸的菜鸟,但是很喜欢用delphi!
編輯記錄
xnium 重新編輯於 2009-03-12 23:54:36, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |