코드에는 별다른 문제가 없어보이는데요.
스트링그리드의 셀들에 어떤 순서로 넣어도 문제는 없습니다.
StringGrid1.Cells[1,1] := FormatFloat('0.00', DLvalue[12]);
이쯤 라인에 브레이크포인트를 걸고 실행중에 멈추면 StringGrid1.Cells[1,1]의 값을 와치나 디버그 인스펙터로 찍어보세요. 값이 제대로 들어오는지가 의심스럽네요.
그럼...
Ol츠미 님이 쓰신 글 :
: 시리얼통신을 통해 데이터를 받아온 후에 그 값을
:
: 스트링그리드에 뿌려주려하는데...
:
: 값이 나타나지 않는건지...아니면 나타났다 바로 사라지는 건지...
:
: 화면에 값이 보여지지를 않습니다.
:
: 혹시 그리드 ROW수가 16인데 12까지만 먼저 넣고 후에 나머지 4개를 넣는 식으로 하면
:
: 값이 나타나지 않을 수도 있나요??
:
: 그리드에 값을 뿌려주는 부분의 소스는 다음과 같습니다.
:
: FOR문으로 넣었다가 안되서..혹시나해서 일일이 값을 대입해줬습니다...ㅠㅠ
:
: 도움 부탁드립니다.
:
:
: =============================================================================
: procedure Tform_main.DLComportRxChar(Sender: TObject; Count: Integer);
: var
: data : String;
: begin
: DLcomport.ReadStr(data,Count);
: DLdataSet := DLdataSet + data;
:
: if (data[count-1] = #$0d) and (data[count] = #$0a) then begin
: memo1.Lines.Add('여기들어옴');
: DivideData_DL(saveTime, DLdataSet);
: end;
: end;
:
: procedure Tform_Main.DivideData_DL(cTime: TDateTime; str: String);
: var
: DLdata : TStringList;
: DLvalue : Array of Double;
: i : Integer;
: begin
: DLdata := TStringList.Create;
: DLdata.DelimitedText := str;
:
: SetLength(DLvalue, DLdata.count);
:
: for i := 0 to DLdata.Count do begin
: DLRealData[i] := DLdata[i];
: DLvalue[i] := strToFloat(DLdata[i]) * gScale + goffset;
: end;
:
: with StringGrid1 do begin
: StringGrid1.Cells[1,1] := FormatFloat('0.00', DLvalue[12]);
: StringGrid1.Cells[1,2] := FormatFloat('0.00', DLvalue[13]);
: StringGrid1.Cells[1,3] := FormatFloat('0.00', DLvalue[14]);
: StringGrid1.Cells[1,4] := FormatFloat('0.00', DLvalue[15]);
: StringGrid1.Cells[1,5] := FormatFloat('0.00', DLvalue[16]);
: StringGrid1.Cells[1,6] := FormatFloat('0.00', DLvalue[17]);
: StringGrid1.Cells[1,7] := FormatFloat('0.00', DLvalue[18]);
: StringGrid1.Cells[1,8] := FormatFloat('0.00', DLvalue[19]);
: StringGrid1.Cells[1,9] := FormatFloat('0.00', DLvalue[20]);
: StringGrid1.Cells[1,10] := FormatFloat('0.00', DLvalue[21]);
: StringGrid1.Cells[1,11] := FormatFloat('0.00', DLvalue[23]);
: StringGrid1.Cells[1,12] := FormatFloat('0.00', DLvalue[25]);
: end;
: with StringGrid2 do begin
: StringGrid2.Cells[1,1] := FormatFloat('0.00', DLvalue[0]);
: StringGrid2.Cells[1,2] := FormatFloat('0.00', DLvalue[1]);
: StringGrid2.Cells[1,3] := FormatFloat('0.00', DLvalue[2]);
: StringGrid2.Cells[1,4] := FormatFloat('0.00', DLvalue[3]);
: StringGrid2.Cells[1,5] := FormatFloat('0.00', DLvalue[4]);
: StringGrid2.Cells[1,6] := FormatFloat('0.00', DLvalue[5]);
: StringGrid2.Cells[1,7] := FormatFloat('0.00', DLvalue[6]);
: StringGrid2.Cells[1,8] := FormatFloat('0.00', DLvalue[7]);
: StringGrid2.Cells[1,9] := FormatFloat('0.00', DLvalue[8]);
: StringGrid2.Cells[1,10] := FormatFloat('0.00', DLvalue[9]);
: StringGrid2.Cells[1,11] := FormatFloat('0.00', DLvalue[10]);
: StringGrid2.Cells[1,12] := FormatFloat('0.00', DLvalue[11]);
: StringGrid2.Cells[1,13] := FormatFloat('0.00', DLvalue[22]);
: StringGrid2.Cells[1,14] := FormatFloat('0.00', DLvalue[24]);
: end;
:
: DLdata.free;
:
: end;
:
: procedure Tform_main.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
: var
: oldalign : word;
: begin
: oldalign:=settextalign(StringGrid1.canvas.handle,ta_right);
: StringGrid1.canvas.textrect(rect,rect.right-2,rect.top+2, StringGrid1.cells[ACol,ARow]);
: settextalign(StringGrid1.canvas.handle,oldalign);
: GridDrawCeller(StringGrid1,ACol,ARow,Rect,State);
: end;
:
: procedure Tform_main.StringGrid2DrawCell(Sender: TObject; ACol,
: ARow: Integer; Rect: TRect; State: TGridDrawState);
: var
: oldalign : word;
: begin
: oldalign:=settextalign(StringGrid2.canvas.handle,ta_right);
: StringGrid2.canvas.textrect(rect,rect.right-2,rect.top+2, StringGrid2.cells[ACol,ARow]);
: settextalign(StringGrid2.canvas.handle,oldalign);
: GridDrawCeller(StringGrid2,ACol,ARow,Rect,State);
: end;
:
: procedure Tform_main.GridDrawCeller(Sender: TStringGrid; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
: begin
: if ACol = 0 then begin
: Sender.Canvas.FillRect(Rect);
: Sender.Canvas.TextOut( ( Rect.Right - Sender.Canvas.TextWidth(Sender.Cells[ACol,ARow])) - 5, Rect.Top + 4, Sender.Cells[ACol,ARow]);
: end;
: end;
: ==============================================================================
|