안녕하세요?
스트링그리드 Option에서 goRowSelect 는 False로 놓고서
1 Row에 만약 5개의 Col이 있다고 가정할때
--------------------------
코드 상품명 규격 단위 수량
--------------------------
123 노트 3*4 권 50
위 예제에서 수량 항목만 Editing 할려고 합니다...
문제는 Editing할려는 항목만 색지정이 되어 있으니까...
자료가 많을때는 어떤 상품을 Editing하는지 구별이 쉽지 않습니다.
그래서 코드,상품명,규격,단위는 별도(다른색)의 색지정으로
자료 Editing시 어떤 상품을 하는지 구별이 쉽도록 할 수 있는 방법이
있으면...배우고자 합니다....
많은 관심 부탁드립니다...
한줄만 Color를 가져간다면 OnClick Event에서 Refresh해줘야
Focus가 없는 Row의 Color를 원위치 시킬 수 있을겁니다.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var lBColor ,lFColor : TColor;
var lOBColor,lOFColor : TColor;
begin
if (gdFixed in state) then
else if (gdFocused in state) then
begin
end
else
begin
lOFColor:=TStringGrid(Sender).Canvas.Font.Color;
lOBColor:=TStringGrid(Sender).Canvas.Brush.Color;
if AROW=TStringGrid(Sender).Row then
begin
if ACol=1 then begin lBColor:=clYELLOW; lFColor:=clBLACK; end
else if ACol=2 then begin lBColor:=clBLUE; lFColor:=clWHITE; end
else if ACol=2 then begin lBColor:=clRED; lFColor:=clBLACK; end;
end
else
begin
lBColor:=lOBColor;
lFColor:=lOFColor;
end;
TStringGrid(Sender).Canvas.Font.Color :=lFColor;
TStringGrid(Sender).Canvas.Brush.Color:=lBColor;
TStringGrid(Sender).Canvas.FillRect(Rect);
TStringGrid(Sender).Canvas.TextOut(Rect.Left+2,Rect.Top+2,TStringGrid(Sender).Cells[ACol,ARow]);
TStringGrid(Sender).Canvas.Font.Color :=lOFColor;
TStringGrid(Sender).Canvas.Brush.Color:=lOBColor;
end;
end;
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
StringGrid1.Refresh;
end;