본문 바로가기
IT-개발,DB

[개발/델파이] TAdvStringGrid에 Combobox 사용하는 방법

by SB리치퍼슨 2015. 8. 27.

[DELPHI TIP] TAdvStringGrid에 Combobox 사용하는 방법..




두가지 방법이 있습니다.
셀을 수정할때 콤보박스나 기타 컨트롤이 표시되는방법과
첨부터 나와있는방법....

두가지다 해보면요...
GetEditorType 이벤트를 이용하시면 에디트하실 때만 보입니다. 1번컬럼을 그렇게 만들어보겠습니다.

그리고 2,3번은 radio버튼으로 만들어보겠습니다. 
첨부터 보이실려면 Formcreate이벤트나 기타 함수에서 한번 만들어주시면됩니다.
Formcreate에서 만들어보죠.

먼저 폼생성시

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;

begin
radopt1:=tstringlist.Create;
radopt1.Add('Delphi');
radopt1.Add('C++Builder');
radopt1.Add('JBuilder');
radopt2:=tstringlist.Create;
radopt2.Add('Std');
radopt2.Add('Prof');
radopt2.Add('C/S');
with Grid do
begin
ColCount := 4;
RowCount := 10;
for i:=1 to rowcount-1 do
begin
addradio(2,i,0,-1,radopt1);
addradio(3,i,1,-1,radopt2);
end;
DefaultRowHeight := 70;
DefaultColWidth := 120;
Options := Options + [goEditing];

end;
end;

다음과 같이 해줍니다.
Grid함수중 addradio함수를 이용해서 radio버튼이 나와야 할곳에 for문으로 미리 다 출력해서 만들어두는 방식입니다.
Options에 goEdting속석이 들어가있어야 수정이 가능하므로 그때 수정시 column1에 콤보박스가 보입니다.

클릭했을때 내용을 보시기 위해서는 

Grid이벤트중 OnGetEditorType 이벤트를 만들어주시면됩니다.
procedure TForm1.gridGetEditorType(Sender: TObject; ACol,
ARow: Integer; var AEditor: TEditorType);
begin
With Grid do begin
case ACol of
1: begin
aEditor := edComboList;
ClearComboString;
AddComboString('대구');
AddComboString('대전');
AddComboString('서울');
AddComboString('평양');
end;
end; // case
end; // with
end; // procedure



지원가능한 컨트롤은 ...
TEditorType = (edNormal,edSpinEdit,edComboEdit,edComboList,edEditBtn,edCheckBox,
edDateEdit,edDateEditUpDown,edTimeEdit,edButton,edDataCheckBox,edNumeric,
edPositiveNumeric,edFloat,edCapital,edMixedCase,edPassword,edUnitEditBtn,
edLowerCase,edUpperCase,edFloatSpinEdit,edTimeSpinEdit,edDateSpinEdit,
edNumericEditBtn,edFloatEditBtn,edCustom,edRichEdit,edNone
{$IFDEF TMSUNICODE}
, edUniEdit,edUniComboEdit,edUniComboList,edUniEditBtn, edUniMemo
{$ENDIF}
);
이렇습니다. 참고하시고요.

창훈 wrote:
> 안녕하세요..

> TAdvStringGrid.. 예제만 보더라도.. 그 기능이 정말로 막강하지않나 싶습니다.. 그래서 그런지 프로퍼티 창에 나열된 속성만 하더라도 정말 많네요..

> 그 중에 가장 기본이 될 만한 Combobox를 쎌 안에 넣는 방법이 필요해서.. 데모프로그램도 보았습니다만.. 그리고, 해당 사이트에 있는 설명도 보았습니다만.. 영어가 짧아서 인지.. 어떤 프로퍼티가 어떤 값으로 설정되어야 한다는 명확한 이야기를 찾지 못했고, 그래서 결국 여러분께 다시 도움을 청합니다..

> Combobox 를 넣기 위한 프로퍼티 속성은 어떻게 되어야 하는지요..?





출처: http://cyhome.cyworld.com/?home_id=a4202130&postSeq=7853519

반응형

댓글