자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

Q. 

DBCtrlGrid에 DBLookupCombo를 올린 후 콤보를 선택하면 ""Operation not allowed in DBCtrlGrid"" 오류가 발생하고 목록이 표시되지 않습니다. 어떻게 해결해야하나요?


델파이 4에서 델파이 2007로 마이그레이션 시 중입니다.


A. 

아래와 같이 FormCreate 시 FixDBLookupDataLinks 메소드를 호출해 보세요.


http://stackoverflow.com/questions/1453041/dbctrlgrid-with-a-dblookupcombobox


interface

uses
  ...
  ;

type Tdbp = class(TDBCtrlGrid);
type tdbl = class(TDBLookupControl);

type
  TForm4 = class(TForm)
    ...
    DBCtrlGrid1: TDBCtrlGrid;
    ...
  private
    ...
    function FindLCB(DataFieldName: String): TDBLookupComboBox;
    procedure FixDBLookupDataLinks;
  public
    ...
  end;



...and in your implementation:


----------


implementation

procedure TForm4.FormCreate(Sender: TObject);
begin
  ...
  DBCtrlGrid1.DataSource := DataSource1;
  FixDBLookupDataLinks;
end;

procedure TForm4.FixDBLookupDataLinks;
var
  lcb: TDBLookupComboBox;
  I,n: Integer;
  MyDataLink: TDataLink;
  ctl: TControl;
  dbp: Tdbctrlpanel;
begin
  dbp := Tdbp(DBControlGrid1).Panel;
  for n := 0 to Pred(dbp.ControlCount) do
  begin
    ctl := dbp.Controls[n];
    if ctl.ClassType = TDBLookupComboBox then
    begin
      lcb := TDBLookupComboBox(ctl);
      lcb.ControlStyle := lcb.ControlStyle + [csReplicatable];
      TDBL(lcb).ListLink.DataSourceFixed := False;
      for I := 0 to Pred(lcb.ControlCount) do
      begin
        if lcb.Controls[I] is TPopupDataList then
        begin
          TDBL(lcb).ListLink.DataSourceFixed := False;
          TDBL(lcb).DataLink.DataSourceFixed := False;
          MyDataLink := TDataLink(lcb.Controls[I].Perform(CM_GETDATALINK, 0, 0));
          if MyDataLink <> nil then
            MyDataLink.DataSourceFixed := False;
            MyDataLink.DataSource := nil;
        end;
      end;
    end;
  end;
end;

function TForm4.FindLCB(DataFieldName: String): TDBLookupComboBox;
var
  i: Integer;
begin
  Result := Nil;
  for i := 0 to Pred(ControlCount) do
    if Controls[i].ClassType = TDBLookupComboBox then
      if TDBLookupComboBox(Controls[i]).DataField = DataFieldName then
      begin
        Result := TDBLookupComboBox(Controls[i]);
        Break;
      end;
end;
번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 17189
공지 유용한 관련 사이트 관리자2 2014.03.20 56065
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99502
1579 Delphi 10.1 Berlin Update2설치후 FireDac으로 MySQL 접속시 오류 [3] 범이 2016.11.28 301
1578 델파이2007에서 프로젝트 실행시 에러 [1] file 신재철 2016.11.28 160
1577 Listview ScrollviewPos 위치 변경 버그인가요? silkroad99 2016.11.29 253
1576 3d 관련 컴포넌트 문의 드려요 [1] 엠카바데로 2016.11.30 215
1575 안녕하세요. 안드로이드 전화 끊기 문의 입니다. [1] jang 2016.12.01 847
1574 ClientDataSet의 데이터 참조 [1] 나즈나 2016.12.02 118
1573 Modal 창이 뒤로 숨는 현상 원인이 무엇일까요? file 도의 2016.12.02 863
1572 모바일 폰 사진첩 폴더 접근방법 [2] 향기 2016.12.06 532
1571 Webbrowser에서 오픈시 과거 데이타를 가져오는 듯한 느낌은? [4] 화이부동 2016.12.06 505
1570 아래 Debug Error 추적 내용이 있어 다른 방법을 공유 합니다. [1] jang 2016.12.06 457
1569 Delphi 10.1 Berlin Enterprise update1 to update2 후 문제 [1] jang 2016.12.07 112
1568 비콘 컴포넌트를 이용한 어플에 대한 질문 드립니다. [1] file 한수 2016.12.07 211
1567 TComboBox, TDateEdit, TTimeEdit등 컴포넌트의 밑줄 제거방법문의 [3] 김태윤 2016.12.07 319
1566 갤럭시 탭 가로모드 실행시, 앱이 꺼지는 현상 [3] 가을이다 2016.12.07 7589
1565 RAD 스튜디오 베를린 10.1에서 인포믹스 DB를 지원하나요? 험프리 2016.12.08 200
1564 C++ Builder 2007에서 유니코드 파일 불러오는 법 문의드립니다. [1] YSJ 2016.12.08 371
1563 Delphi 10.1 Berlin Update2 설치후 WindowsXP 운영체제 오류 발생에 대한 의견 [6] 범이 2016.12.08 485
1562 안녕하세요. 델파이 10.1 베를린 설치 관련하여 질문 드립니다. [5] file 이즈로즈 2016.12.08 636
1561 안드로이드폰 DataSnap서버 접속오류에 대한 문의 이노베이션 2016.12.09 513
1560 델파이 10 에서 립모션 설정 방법좀 알고 싶습니다. [1] 한사람 2016.12.12 180