안녕하세여..헤임달입니다..
스트링그리드의 내용을 챠트로 표현했습니다..
아래 그래프를 클릭하면 클릭한 위치의 데이터가 몇번째 데이터인지를 알려주는 소스입니다.
근데 여기서 데이터의 수치가 너무 크거나 또는 작은경우 해당 위치를 클릭한후 메세지가 뜨고 Yes를 누르면 스트링그리드의 해당 레코드에 위치해있는것을 해주고싶은데..어떻게 해줘야될지모르겠네여..
procedure Tchart1.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
str : string;
begin
str := str + 'Number of points : '+ IntToStr(ValueIndex+1)+'번째 포인트'+#13#10#13#10;
str := str + 'Power Value : '+ sender.ValueMarkText[ValueIndex]+#13#10#13#10;
if MessageDlg(str + '데이터를 수정하시겠습니까?', mtconfirmation, mbYesNocancel, 0)=mrYes then
//
else exit;
end;
여기서부터는 텍스트파일을읽어서 스트링그리드에 표현해준것을 챠트로 표현한 소스..
var
f1 : Textfile;
s1, s2, i1, j1 : integer;
StrList1: TStringList;
LineCount1: Integer;
begin
assignfile(f1, 'c:TempHMIdb2052-02.txt');
reset(f1);
StrList1 := TStringList.Create;
StrList1.LoadFromFile('c:TempHMIdb2052-02.txt'); // 라인수를 알고 싶은 파일 이름
LineCount1 := StrList1.Count; // LineCount = 텍스트파일의 라인수
StrList1.Free;
while not EOF(f1) do begin
readln(f1, s1, s2);
for i1:=1 to linecount1 do
begin
j1:=1;
operate.list_a.Cells[j1, i1]:=inttostr(s1);
operate.list_a.Cells[j1+1, i1]:=inttostr(s2);
chart_a.series[0].Add(strtoint(operate.list_a.Cells[j1,i1]),'',
chart_a.Series[0].seriescolor);
chart_a.series[1].add(strtoint(operate.list_a.Cells[j1+1, i1]),'',
chart_a.Series[1].seriescolor);
readln(f1, s1, s2);
end;
end;
Closefile(f1);
end;