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

  • 主题发起人 主题发起人 slxiao112
  • 开始时间 开始时间
一个教训:累死会干活的。
除非你很有野心,否则不要表现出比周围人更多的才能。
 
TO 楼主:
对不起,昨天你问我的时候我下了(公司关门了)
onneeddata事件中其实挺简单的,你只要将TDATASET的某一字段值赋给TQRLABEL(多列就有多个)
的CAPTION属性就可以了。然后在判断TDATASET是否已经EOF,如果是的话就将那个变参(名字我忘了)
的值设为FALSE,不然设为TURE,就可以了!
你看看应该就明白了!
 
你隻有讓你這個領導去死了。如果你善良的話,讓他去看心理醫生。

國內的報表之所以難做,並不在於SQL的復雜上面,而是怎樣去畫那些格格框框,以填滿毫無意義的永遠不會再看第二眼的重要報表!
 
to slxiao112:
不知道我的理解有没有问题,你下载一个fastreport一用就马上知道了,设计时
有类似word的,左对齐、居中,右对齐等按钮。用用吧,马上就知道了
 
向slxiao112同志表示最深切的同情。
我觉得要敢于向领导同志说不!否则事情永远就搞不定。
我曾听一位同志说起他的经验,感觉很有道理,特写出来与大家探讨:
领导总归是领导,若你做的东西,他提不出意见来,他就会觉得自己会不会被人家认为水平
不够。所以,他就会没事找事地说“这个左对齐比较好看”之类的话;等你辛辛苦苦改过来
了,他会说,这样不好看,感觉还是原来的好看,你又得辛辛苦苦地改回来。
所以,重要得是,你做完事情后,要故意留一个很明显的、很容易看到的错误来,以便领导
同志指出,这样,他就不会另外想歪点子了。
其实你说的匀空的做法很难看,但是领导提不出另外的意见,所以.....
 
谢谢各位的鼓励,
不过我会坚持把它改完。坚持就是胜利!!!!
消灭它。
是挡案添表类。你们说是否应该全均齐?
 
yck说的很实际。呵呵。
也许换个角度想想: 化整为零。
将字符串变成字符。

我喝......
good luck
 
嗯,有新思路..........
考虑考虑........
 
怎么做,说来听听!
 
哈哈,想出来了,高兴!!!
方法好象苯了些,不过能完成任务。
大家有好的方法或建议请继续贴出来,
我暂时不结束问题,我过几天分给大家分数。进者都有分。
谢谢大家的关心。

代码正在写,思路是这样的:

因为是档案报表类的,故格式是固定的,宽度是固定的,不是动态的,所以建立几个
TQRLabel 控件(并没有动态生成,当然,动态生成更好。)举个例子:
假设数据最大宽度为 5,那么先在 QuickRep 可视状态下放 5个TQRLabel 控件,这5
个控件要放在TQRBand 中,Caption:='';再放一个TQRDBText 控件,与字段关联。

接下来事件:
(本例 qrl.. 为TQRLabel 控件。)

procedure TForm1.QRDBText1Print(sender: TObject; var Value: String);
var
i:integer;
begin
qrl1.Caption :='';
qrl2.Caption :='';
qrl3.Caption :='';
qrl4.Caption :='';
qrl5.Caption :='';
case i of
1:begin
qrl1.Caption :=Copy(Value,1,1);
qrl1.left:=...;//值为通过打印机调试后具体的值;
end;
2:begin
qrl1.Caption :=Copy(Value,1,1);
qrl2.Caption :=Copy(Value,2,1);
qrl1.left:=....;
qrl2.left:=....;
end;
.....
5:begin
qrl1.Caption :=Copy(Value,1,1);
qrl2.Caption :=Copy(Value,2,1);
....
qrl5.Caption :=Copy(Value,3,1);
....
end;
end;
value:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
QuickRep1.Preview;
end;


以上只是初步算法,望能给有被此类问题困惑的朋友以提示。
谢谢 like 的化整为零。

有好招的请通知我。
e-mail:
slxiaodong@163.com

正在完成代码........


 
中國的報表,不做死几個人是不會有人怕的!
 
同意楼上。

//收藏了
 
代码基本完成,还应该用如下的东东,否则字体不能变瘦。


var
LFont: TLogFont;
begin
GetObject(qrl1.Font.handle, sizeof(TLogFont), @LogFont);
LogFont.lfWidth := 8; //变瘦了。
qrl1.Font.Handle := CreateFontIndirect(LogFont);

....
end;



 
糟糕了!打印出来的跟预览的不一样,
通过QuickRep 3.6 预览时满足设计的要求,但在实际打印时却没有实现
字体的缩放(如字体变窄),还是宋体4号。
我用了这个函数:

var
LFont: TLogFont;
begin
GetObject(qrl1.Font.handle, sizeof(TLogFont), @LogFont);
LogFont.lfWidth := 8; //变瘦了。
qrl1.Font.Handle := CreateFontIndirect(LogFont);

....
end;

帮我个忙吧!!!
再次谢谢各位!!!!


 
发分了。
谢谢大家!!!!!!!!!!!!!!!!
祝大家生活快乐!!
 

Similar threads

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