Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[TMS] TAdvStringGrid 기능소개 - 셀 항목에 콤보박스 사용하는 방법


Recommended Posts

image.png

TAdvStringGrid 에서는 지정된 셀에 Combobox를 적용하여 앱 사용자로 부터 항목을 선택 받게 할 수 있습니다.

콤보박스를  사용하기 위해서는 셀 항목의  콤보박스 데이터가 사용자의 선택에 따라 바뀌게 되므로 TAdvStringGrid 가 입력 가능한  Editable 상태가 되어야 합니다.

아래 그림과 같이 Quick config 에서 Allow edit 를 체크 합니다.

image.png

사용되는 메소드는 3가지 입니다.  (하단 소스 참조)

OnHasComboBox 에서 특정셀이 콤보박스를 항상 보이게 지정 합니다.

OnGetEditorProp 에서는 콤보박스에 데이터를 삽입 합니다.

OnGetEditorType 특정셀에 콤보박스 속성을 지정 합니다.

procedure TMvForm.FormCreate(Sender: TObject);
begin
  SList := TStringList.Create;   // Test Data
  sList.Add( '00000' );
  sList.Add( '11111' );
  sList.Add( '22222' );
  sList.Add( '33333' );
  sList.Add( '44444' );

  with AdvStringGrid1 do begin
    ColWidths[ 1 ] := 120;
    ColWidths[ 2 ] := 120;

    ControlLook.DropDownAlwaysVisible := TRUE; // 콤보박스가 처음부터 보이게 함
  end;
end;

//****************************************************************************************************
procedure TMvForm.Button1Click(Sender: TObject);
begin
  AdvStringGrid1.Cells[ 2,5 ] := SList[0];   // 특정 이벤트에서 ComboBox 초기값 지정
end;

procedure TMvForm.Button2Click(Sender: TObject);
begin
  with AdvStringGrid1 do begin
    ShowMessage(  ComboBox.Items.IndexOf( Cells[2,5] ).ToString  + ' : ' + Cells[ 2,5 ]   );
  end;
end;

//****************************************************************************************************************
procedure TMvForm.AdvStringGrid1HasComboBox(Sender: TObject; ACol, ARow: Integer; var HasComboBox: Boolean);
begin
  if ( Acol = 2 ) and ( ARow  = 5 ) then     // 특정셀 콤보박스 항상 보이게.
    HasComboBox := TRUE;
end;

procedure TMvForm.AdvStringGrid1GetEditorProp(Sender: TObject; ACol, ARow: Integer; AEditLink: TEditLink);
var
  i : integer;
begin
  with AdvStringGrid1 do begin
    if ( Acol = 2 ) and ( ARow  = 5 ) then
    begin
      ClearComboString;
      for i := 0 to SList.Count - 1 do
        AddComboString( SList[i]  );
    end;
  end;
end;

procedure TMvForm.AdvStringGrid1GetEditorType(Sender: TObject; ACol, ARow: Integer; var AEditor: TEditorType);
var
  sList : TStringList;
begin
  with AdvStringGrid1 do begin
    if ( Acol = 2 ) and ( ARow  = 5 ) then
       aEditor := edComboList;
  end;
end;

 

데모영상

 

 

이 댓글 링크
다른 사이트에 공유하기

  • c2design changed the title to [TMS] TAdvStringGrid 기능소개 - 셀 항목에 콤보박스 사용하는 방법

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.