일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- anaconda3
- FastReport
- dbadvgrid
- python 3.7
- MSSQL
- Push
- queryset
- Delphi
- pythonanywhere
- Visual Studio
- PyCharm
- pyhcarm
- templates
- declare
- rank
- TMS
- COMMIT
- blog
- delphi 10.3
- advColumnGrid
- 델파이
- HTML
- hackerrank
- c#
- GIT
- python3
- github
- Django
- 백준
- get_object_or_404
- Today
- Total
DevHyun
FastReport5 Stacked Chart 사용하여 보고서 출력물 만들기 본문
- FastReport5를 사용하여 위와 같은 보고서 출력물 만들기
1. FrxPreview 컴포넌트를 사용하여 출력전에, 미리 프로그램 화면에 뿌려서 출력물을 확인 할 수 있도록 설계
2. Delphi에서 다음과 같이 써주면 frxReport1의 내용이 frxPreview1에 뿌려짐
frxReport1.PrepareReport(True);
3. report 폼에서 Report>dataset에서 해당 폼의 dataset 선택
4. report 폼에 MasterData 추가 및 dataset 연결
5. GroupHeader 추가
: 쿼리 결과의 ROW가 여러개일 경우 원하는 FIELD명으로 GROUPING 해주는 역할
: Drill-Down의 경우 GroupHeader까지 보여주고, DetailData나 GroupFooter는 숨겨지고 Report 화면에서 GroupHeader를 클릭하면 보여주는 형식의 옵션
6. DetailData 추가 및 Dataset 연결
: Filter기능도 있지만 사용방법은 더 확인해봐야 할듯([RDBM."COLOR"] <> 'BK' << 작동안함)
7. TFrmMemoView를 사용하여 내용들을 표현하였으며, Dataset의 컬럼을 사용하려면 [RDBM."COLOR"] 와 같이 입력해주어야 함.
8. MemoView의 Frame 추가하는 방법은 ObjectInspector에서 Frame 더블클릭 후 지정
9. 이미지는 이렇게 연결하였으나, 작동안하는것으로 보아서는 확인이 더 필요함(컬럼값이 BLOB 이 아니라서 그럴 수도있고, 연동이 잘못되었을수도 있으나 아직 파악 못함)
10. 차트 추가
11. 차트와 Dataset 연결
: 나의 경우는 현업 요구사항을 표현하기 위해 stack chart를 쓰고 BottomAxis를 수동으로 바꾸고 최소 최대값, 그리고 차이 값을 넣어서 stack 100% 처럼 사용했음
var
FrxChart: TChart;
Chart: TfrxChartView;
begin
Chart := frxReport1.FindObject('Chart1') as TfrxChartView;
FrxChart := TChart(Chart.Chart); // 앞의 chart는 var에서 선언한 chart이고 뒤에 chart는 frxreport의 chart
FrxChart.BottomAxis.Automatic := False;
FrxChart.BottomAxis.Minimum := 0;
FrxChart.BottomAxis.Maximum := 100;
FrxChart.BottomAxis.Increment := 10;
end;
13. 사용한 properties(series별 설정)
: Label 은 Y축에 표현되는 값(ex.색상정보)
: Y축은 실제로 그 색상정보에 해당하는 컬럼
: 쿼리는 이런식으로 횡으로 펼처서 select
: Marks = stacked 그래프를 기준으로 막대에 Label을 표현해주는데 visible false시 숨길 수 있음
: Sort order는 값을 표현할때 정렬 순서
: MultiBar는 그래프의 bar 스타일인데, 나처럼 bar위에 bar가 쌓이는 형식을 쓰려면 mbStacked로 설정
12. 사용한 properties(차트별 설정)
: Legend는 범례이고 Alignment로 위치를 선택 가능(나의 경우 bottom)
: 차트 만들때 3D를 체크해제 했는데도 조금 3D기가 있어서 View3D 체크 해제해서 완전 Flat한 Chart로 만듦
: Delphi에서 코딩으로 Legend의 font크기와 fotn에 있는 음영 제거(Plain)
FrxChart.Legend.TextStyle := ltsPlain;
FrxChart.Legend.Font.Size := 5;
13. 끝
14. 추가로 공부 해야 할 사항
: GroupHeader에서 Grouping을 했으나, 쿼리의 총 row의 수가 6개면 Chart의 Y축에 6개의 색상이 보이는 현상
: 내 생각엔 master가 1개, detail3개 master 1개 detail 3개 chart도 2개면, chart의 y축은 (3컬러 / 3컬러) 나눠서 보여야 하지 않을까?
: 해당 report를 6분할로 한장에 찍을수 있는 방법
'Delphi' 카테고리의 다른 글
Delphi 에서의 thread 정리글 (0) | 2023.02.03 |
---|---|
Window Handle값 및 sendmessage (0) | 2021.06.03 |
[TMS DBAdvGrid] 그리드 내에서 검색하기 (0) | 2021.06.03 |
[TMS AdvColumnGrid] 그리드 내에서 검색하기 (0) | 2021.06.03 |
[TMS AdvColumnGrid] header 클릭 시 금액순으로 정렬하기 (0) | 2021.04.27 |