关于字间距,两边均齐问题已解决,看有没有更好的方法。 (300分)

  • 主题发起人 主题发起人 slxiao112
  • 开始时间 开始时间
S

slxiao112

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用 TTable,TDbgrid,TQuickRep,TQRLabel,TQRDBText 等控件做了个报表类的
程序,一直使用很好,新上任一领导神经病,她以前使用过 Word 或 Wps2000只类
的东东,排版时在表格中习惯使用两边均齐,而控件Tdbgrid ,TQRDBText等
其 Alignment 属性值只有taLeftJustify
taCenter
taRightJustify 三种,
我该如何设计代码使Tdbgrid ,TQRDBText 在输入与打印时能使文字自动在表格中两边均齐?
(象Word 或 Wps2000那种缩进效果,有微调更好了。)

我必须得把代码改完。
在线加急!!

字间距???
 
不大明白意思。
 
文字自动在表格(指Tdbgrid ,TQRDBText表格)中两边能均齐
 
是这样吗
暗暗暗暗暗暗暗暗
啊 啊 啊
太不美观了。
 
一个土办法:
1。TDBGRID中的你在字段(TFIELD类)的ONGETTEXT事件中根据文本的长度来判断,
如果长度不够就补空格。直到对齐。
2。TQRDBText的你不要直接QRP来生成报表。自己去写ONNEEDDATA事件。
取得数据后与上面一样补空格,
 
写一个新组件,继承dbgrid,重载paint
写一段代码使得文字居中
如果不想自己动手写,联系我(我现在没空)
 
用caCenter,然后把不够长的字段内容用空格按规律填进去(怎么填又是一个算法哦)。
 
修改字间距比较好
 
在OnPrint事件中加于控制,如babytime所说的一样
 
各位:
Tdbgrid 我解决了
关键是打印!!!!
TQRDBText如何解决?????

Tdbgrid 代码如下:
代码:
[blue]

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  s:string;
  x,l2, l1,l,i:integer;
begin
   dbgrid1.Canvas.FillRect(rect);
   dbgrid1.Canvas.Font.Color :=clred;

   s:=Column.Field.AsString;
   l:=length(s);
   if l=0 then exit;
   l1:=rect.Right -rect.Left ;

   l2:=l1 div l;
   x:=0;
   for i:=0 to l-1 do
   begin
     x:=l2*i;
     dbgrid1.Canvas.TextOut(rect.left+x,rect.top,s[i+1]);
   end;
end;
[/blue]
不过不能微调,若能象wps2000 那样设置字间距就好了。望各位帮忙。


 
to ReallyFail:
如何写 ONNEEDDATA事件?
 
用 ONNEEDDATA事件?能发个例子吗?
 
全文检索也没有结果。
完蛋了。。。。。。。。。。。。。。。。

55555555555555555
 
这样做比以前那种效果好吗?
楼主的leader真是有病!!!
 
ft,不是很清楚,但是fastreport可以非常容易轻松的控制打印的对齐方式
 
to Temp:
fastreport 可以非常容易轻松的控制打印的对齐方式能给个例子吗?谢谢
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部