---------------------------------------------------------------
| Project |실행관리 | ㅁALL | ㅁ입력 ㅁ수정 ㅁ삭제 ㅁ조회
_______________________________________________________________
| Project |프로젝트 | ㅁALL | ㅁ입력 ㅁ수정 ㅁ삭제 ㅁ조회
__________________________________________________________________
| Project |업무관리 | ㅁALL | ㅁ입력 ㅁ입력마감 ㅁ삭제 ㅁ조회
__________________________________________________________________
....
....
위는 스트링그리드의 내용입니다.
아래 소스좀 고쳐주십시요 고수님들...
procedure TT703fm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var i : integer;
LeftPos : integer;
Cellstr : string;
begin
for i := 1 to StringGrid1.RowCount-1 do begin
if StringGrid1.objects[2,i] <> nil then begin
Rect:=StringGrid1.cellrect(2,i);
TCheckBox(StringGrid1.objects[2 ,i]).top := Rect.Top;
TCheckBox(StringGrid1.objects[2 ,i]).Left := Rect.Left;
if (Rect.Top<=0)then
TCheckBox(StringGrid1.objects[2 ,i]).Visible := False else
TCheckBox(StringGrid1.objects[2 ,i]).Visible := True;
TCheckBox(StringGrid1.objects[2 ,i]).Refresh;
end;
end;
//위 소스는 첵크박스가 하나이니 잘 됩니다. 그런데로...
//아래 소스로 각 로우의 ㅁ입력 ㅁ입력마감 ㅁ삭제 ㅁ조회 를 컨트롤
//해야 하는데 안되네요... 어떻게 수정해야 하나요??????
for i := 1 to StringGrid1.RowCount-1 do begin
if StringGrid1.objects[3,i] <> nil then begin
Rect:=StringGrid1.cellrect(3,i);
TCheckBox(StringGrid1.objects[3 ,i]).top := Rect.Top;
TCheckBox(StringGrid1.objects[3 ,i]).Left := Rect.Left;
//TCheckBox(StringGrid1.objects[3 ,i]).BringToFront;
if (Rect.Top<=0)then
TCheckBox(StringGrid1.objects[3 ,i]).Visible := False else
TCheckBox(StringGrid1.objects[3 ,i]).Visible := True;
TCheckBox(StringGrid1.objects[3 ,i]).Refresh;
end;
end;
end;
예전에 콤보박스는 아래처럼했으나 체크는 아래 예가 편합니다.
위처럼하신다면,
for문 앞에 if문 추가와 3대신 ACol로 바꿔보세요
if (ACol>=2)and(ACol<=6) then begin
for i := 1 to StringGrid1.RowCount-1 do begin
if StringGrid1.objects[ACol,i] <> nil then begin
....
아래처럼하셔도 됩니다.
procedure TForm1.SGstockDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (TStringGrid(Sender).Objects[ACol, ARow] is TCheckBox) then begin
with TCheckBox(TStringGrid(Sender).Objects[ACol, ARow]) do begin
top := Rect.Top;
Left := Rect.Left;
end;
with TStringGrid(Sender) do begin
Canvas.Font := Font;
Canvas.TextRect(Rect,
Rect.left+14,(Rect.Top+Rect.Bottom-Font.Size-2) div 2,
TStringGrid(Sender).Cells[ACol,ARow] );
end;
end;
end;