! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다. > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다.

페이지 정보

작성자 iroon 작성일 2023-12-10 14:51 조회 109회 댓글 0건
제품 버전 : 16.1.20231.0
컨트롤 이름 : fpChart

본문

첨부파일


 

가르쳐주신대로 훌륭하게 차트가 나와서 리포트를 잘 사용하고 있습니다.

스프레드 아래에 나온 차트를 프로그램에서 그대로 사용하려고 합니다.

프로그램에서도 .net 고유의 컨트롤 보다 귀사의 fpChart 컨트롤을 사용하고 싶습니다.

동봉해드린 소스를 보시면 제 의도를 아시리라 믿습니다.


항상 기초적인 질문만 해서 죄송합니다.


그럼 기다리겠습니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

4 답변

WinForms윈폼 Re: Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다.

추천1 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS써니 작성일 2023-12-12 14:23 댓글 0건

본문

iroon 님, 안녕하세요.

메시어스입니다.


차트를 Spread 시트 위에 띄우는 것이 아니라, 아예 별도의 컨트롤(fpChart)로 폼에 추가하고 싶으신 것으로 이해됩니다.

데이터는 Spread 시트에 있는 데이터를 사용하고요.


현재 해당 방법에 대한 내용을 확인 중입니다.

관련 내용이 업데이트 되는 대로 안내 드리겠습니다.


확인 중인 것과 별개로, 차트 컨트롤 사용 시 참고하실 수 있는 도움말 문서를 전달드립니다.

제품 사용 시 참고가 되길 바랍니다.



감사합니다.
메시어스 드림

댓글목록

등록된 댓글이 없습니다.

WinForms윈폼 Re: Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다.

추천1 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 MESCIUS써니 작성일 2023-12-13 15:41 댓글 0건

본문

첨부파일

iroon 님, 안녕하세요.

메시어스입니다.


문의 내용이 두 가지 방향으로 해석이 됩니다.


[Case 1] Form1의 Spread에 입력된 데이터를 가지고 와서, Form2의 FpChart 컨트롤에 차트를 그리는 경우 (Form1의 Spread에는 따로 차트가 그려지지 않는 경우)

  

FpChart 컨트롤에서는 SheetView.AddChart(...) 메서드와 같이 셀 영역을 잡아 한 번에 여러 Series를 설정할 수 없기 때문에, 각각의 데이터에 대하여 Series 객체를 만들어 추가해야 합니다.


이때 아래와 같이, Series의 SeriesNameDataSource, XValues.DataSource, YValues.DatSource에 들어갈 셀 영역을 수식을 사용해 지정할 수 있습니다.

FarPoint.Win.Chart.XYLineSeries series0 = new FarPoint.Win.Chart.XYLineSeries();
series0.SeriesNameDataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text);
series0.XValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$1:$E$1");
series0.YValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$E$2");


[Case 2] Form2의 Spread에 차트가 그려져 있고, Form2의 FpChart 컨트롤에도 동일한 차트를 표시하고 싶은 경우


이 경우에는 아래와 같이 Form1의 FpSpread 위에 그려진 Chart의 Model을 가지고 와서, Form2의 fpChart1.Model에 할당함으로써, 차트를 표시할 수 있습니다.

FarPoint.Win.Spread.FpSpread fpSpread1 = (FarPoint.Win.Spread.FpSpread)frm.Controls["fpSpread1"];
fpChart1.Model = fpSpread1.Sheets[0].Charts["chart1"].Model;


두 가지 케이스에 대한 샘플을 첨부 드리오니, 제품 사용 시 참고 및 수정하여 사용해주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

WinForms윈폼 Re: Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다.

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 iroon 작성일 2023-12-13 22:38 댓글 0건

본문

 series0.SeriesNameDataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!$A$2:$A$2", FarPoint.Win.Spread.Chart.SegmentDataType.Text);

                series0.XValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$1:$E$1");

                series0.YValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!$B$2:$E$2");


위 소스에서요 포뮬라 부분 ("Sheet1!$B$2:$E$2") 을 range 로 표시할 수 있는 방법이 없을까요?


예를 들면 Fpsprd.Sheets[0].Cells[0, 0, 1, 3] 이렇게요...


하여튼 현재는 


            FarPoint.Win.Chart.XYPlotArea PlotAreas = new FarPoint.Win.Chart.XYPlotArea();


            for (int i = 1; i < row_cnt; i++)

            {

                FarPoint.Win.Chart.XYLineSeries series = new FarPoint.Win.Chart.XYLineSeries();


                series.SeriesName = frm.fpSpread1.Sheets[0].Cells[i, 0].Text.Trim();

                for (int j = 1; j < col_cnt; j++)

                {

                    series.XValues.Add(Convert.ToDouble(frm.fpSpread1.Sheets[0].Cells[0, j].Value));

                    series.YValues.Add(Convert.ToDouble(frm.fpSpread1.Sheets[0].Cells[i, j].Value));

                }


                series.SmoothedLine = true;

                FarPoint.Win.Chart.NoMarker noMarker = new FarPoint.Win.Chart.NoMarker();

                series.PointMarker = noMarker;

                PlotAreas.Series.Add(series);

                

            }


이렇게 쓰고있습니다.

댓글목록

등록된 댓글이 없습니다.

WinForms윈폼 Re: Form1 스프레드의 자료를 이용해서 Form2 에서 차트컨트롤을 사용하고 싶습니다.

추천1 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS써니 작성일 2023-12-13 23:49 댓글 2건

본문

iroon 님, 안녕하세요.

메시어스입니다.


아쉽게도, formula 부분에는 string 형식으로 셀 범위가 입력되어야 합니다.


대신, 아래와 같이 CellRange.ToString() 메서드를 사용하여, 셀 범위를 주소 형식으로 변환하실 수 있습니다.

string address = "Sheet1!" + fpSpread1.Sheets[0].Cells[1, 0, 1, 0].ToString();


위 방법을 적용하여 Series 설정 부분을 다음과 같이 변경할 수 있습니다.

series0.SeriesNameDataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldSeriesName", "Sheet1!" + fpSpread1.Sheets[0].Cells[1, 0, 1, 0].ToString(), FarPoint.Win.Spread.Chart.SegmentDataType.Text);
series0.XValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!" + fpSpread1.Sheets[0].Cells[0, 1, 0, 4].ToString());
series0.YValues.DataSource = new FarPoint.Win.Spread.Chart.SeriesDataField(fpSpread1, "DataFieldValue", "Sheet1!" + fpSpread1.Sheets[0].Cells[1, 1, 1, 4].ToString());
series0.SmoothedLine = true;
series0.PointMarker = noMarker;
xyPlotArea.Series.Add(series0);


전달 드린 샘플 코드를 참고 및 수정하여 사용해보시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.