前回はありがとうございました、
いつも拝見させてもらっています。
クイックレポートで、特定の列と行に、
色を付けて色分けをしたいと思っています。
あるいは、特定の列と行のフォントの色を変えるなどなど・・・
取り敢えず、一列全体になってしまいましたが、
色を変更するまでは確認できました。
procedure TForm4.Timer1Timer(Sender: TObject);
begin
QRExpr1.Color := clred;
end;
何とかして、これを、
特定の列と行のみを色づけする事は可能でしょうか?
無理難題で恐縮ですが、
よろしくお願いしますm(__)m。
環境を書き忘れました。
WinXP SP3 Delphi3.1Pro
QuickReport 2.0
です。
QuickReportに行と列という概念はありません。
特定のBandに機能を与えるだけです。
ですからTQRShape文字の下において、BeforePrintで色を変えたらどうでしょうか。
TQRShape文字-->TQRShapeを文字
かずさん早速のアドバイスありがとうございます。
列と行の概念は無いのですか・・・
実現にはきびしそうですね・・・;
以下で試したところ、一行目のみが色が変わらないのを確認しました^^。
procedure TForm4.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
QRExpr1.Color := clred;
end;
クイックレポートは使ってまだ数回で、右も左も判らない状態です。
TQRShapeは文字の下に配置しましたが、どのようなコードを追加すれば良いのでしょうか?
誤解の無いよう念のため再度目標を話すと、
例)Qレポート
12345
1
2 ○
3
4 ○
5
の○の部分の色を変えたい訳です^^。
可能でしょうか・・・^^;
それではよろしくお願いしますm(__)m。
このコードはAfterPrintですね。かずさんが書いているように、BeforePrintにすればどうでしょうか?
何行目の場合は、変数を用意して数えて、該当行の場合に変更すれば良いでしょう。
列というのをどのように設計しているのでしょう?
TQuickRep.Page.Columns を変更して、複数列にしているのか、
TQREditをDetailbandの横に並べて複数列のように見せているのか。
まぁ、DetailBand.BeforePrintで、値を見ながら色を変更するしかないと思うけど。
HOtaさん、ofZさん、ありがとうございます。
確かに間違ってますね、
こちらの入力間違いです^^;
変数などでDetailBand.BeforePrintからカウントすれば何とかなるのですね。
何とか頑張ってみます、ありがとうございます。
設計ですが、
レポートはウィザードで自動で作りました。
配置は、
TitleBand1、
ColumnHeaderBand1、
DetailBand1、
PageFooterBand1、
の順で配置しています。
ウィザードで自動で作ったので、
QRExprがDetailband上に横に配置されています。
色々試しながら頑張ってみます。
判らない事があったらまた書き込みにきます^^。
ありがとうございます、
イメージ通り出来ました!
助かりました、何とかなりそうですm(__)m。
試しのサンプル状態ですが、
ピンポイントで色を変更できるのを確認しました。
後は作り込んでくだけです^^。
以下は試し段階のコードです。
procedure TForm4.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
with datamodule2 do begin
Table1.Locate('NO','11',[]);
count1 := count1 + 1;
QRExpr2.Color := clWhite;
if count1 = Table1.FieldByName('NO').asinteger then begin
QRExpr1.Color := clred;
end;
end;
end;
大変助かりました。
本当にありがとうございました。
機能の実装が終わりました。
一日で実装が完了出来て感謝しています。
改めてありがとうございましたm(__)m。
自己レスです。
その後色々改良して、以下で簡単に出来ました。
改めてありがとうございました。
procedure TForm4.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
with Query1 do begin
QRExpr2.Color := clWhite;
if FieldByName('物件名フラグ{String型}').asstring = 'True' then
QRExpr2.Color := clYellow;
{各QRExprごとに上記の繰り返し}
end;
end;
ツイート | ![]() |