입력할때 dbgrid의 칼럼 하나를 radio 버튼처럼 선택하게 해서 입력하게 하고 싶은데 가능한가요?
dbgrid 안에서가 아닌 밖에서는 radio 버튼이 추가 가능하던데요...
제가 파워빌더 언에서는 해본 기억이 있는데 델파이는 모르겠네요...
고견 부탁드립니다...
private
rdFirst, rdSecond: TRadioButton;
procedure rdFirstClick(Sender: TObject);
procedure rdSecondClick(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i, iLeft, iTop: Integer;
begin
iLeft := 0;
iTop := 0;
for i := 0 to 3 do
iLeft := iLeft + TStringGrid(DBGrid1).ColWidths[i];
for i := 0 to 3 do
iTop := iTop + TStringGrid(DBGrid1).RowHeights[i];
rdFirst := TRadioButton.Create(DBGrid1);
with rdFirst do
begin
Parent := DBGrid1;
Alignment := taRightJustify;
AutoSize := False;
Caption := '첫번째';
Visible := True;
Cursor := crHandPoint;
SetBounds(iLeft, iTop, TStringGrid(DBGrid1).ColWidths[4], TStringGrid(DBGrid1).RowHeights[4] Div 2);
OnClick := rdFirstClick;
end;
rdSecond := TRadioButton.Create(DBGrid1);
with rdSecond do
begin
Parent := DBGrid1;
Alignment := taRightJustify;
AutoSize := False;
Caption := '첫번째';
Visible := True;
Cursor := crHandPoint;
SetBounds(iLeft, iTop + (TStringGrid(DBGrid1).RowHeights[4] Div 2), TStringGrid(DBGrid1).ColWidths[4], TStringGrid(DBGrid1).RowHeights[4] Div 2);
OnClick := rdSecondClick;
end;
end;
procedure TForm1.rdFirstClick(Sender: TObject);
begin
{ TODO }
end;
procedure TForm1.rdSecondClick(Sender: TObject);
begin
{ TODO }
end;
요런 형태가 기본 골격이 될텐데...
이걸 원하시는데로 사용하고자 하시면
라디오버튼을 동적 배열로 선언하고
각 로우마다 라디오버튼을 두개씩 동적으로 달아주고
로우가 늘거나 줄어들면 그에 맞춰서 달아주거나 해제해주고
그리드내에서 스크롤될때에 맞춰서 각 라디오버튼의 위치를 전부 잡아주고 Visible 값 설정해주거나
그외 다른 꽁수로 제어를 해주는 등
엄청나게 손이 많이 갈겁니다. ㅎㅎ;
예전에 한번 구현해봤었는데 쓸만하긴 하지만 들어간 노가다에 비해선 그다지 메리트가 없더군요. ;;;
그래서 그리드보다는 db 컨트롤 그리드가 마련되어 있습니다. ^^