자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15762
공지 유용한 관련 사이트 관리자2 2014.03.20 54577
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97974
1573 ios 앱 개발 아이콘 변경문의 [2] file 사랑남 2015.05.15 1936
1572 WINEXEC 관련해서 문의드립니다 [3] file jcitec 2015.05.16 1366
1571 IDFTP.List 한글 깨짐에 대한 답변 관련해서 .... [1] jcitec 2015.05.16 1011
1570 MacinCloud 설정에 문의 드립니다. [2] silkroad99 2015.05.18 540
1569 Delphi XE7 컴파일 시 용량 문의드립니다. [1] file zzakakzzakak 2015.05.19 444
1568 xe8에서 iphone device 연결방법문의? [2] silkroad99 2015.05.19 774
1567 [Q&A] XE8 세미나에서 나온 질문과 답변을 정리했습니다. 관리자 2015.05.20 496
1566 앱테더링으로 동일서브넷이 아닌 외부의 앱과 연결해 데이터를 주고 받을 수 있나요? [3] Humphery 2015.05.20 634
1565 XE 5 에서 DB 관련 문제 질문 입니다. [2] file 에프아이티최실장 2015.05.26 172
1564 모바일 디바이스에서 실행 시 검은화면에서 멈춰버립니다. 오류를 어떻게 확인하나요? Humphery 2015.05.27 2195
1563 HTML 에디터 관련 문의드립니다 [1] 배기현 2015.05.27 451
1562 델파이 XE8에서 쓰래드 디버깅 기능 향상된 것이 있나요? Humphery 2015.05.29 711
1561 델파이 메모리 누수(leak) 지점을 분석할 수 있나요? file Humphery 2015.05.29 1922
1560 XE8 iOS Device 에러나는 이유가? [1] silkroad99 2015.05.29 469
» [마이그레이션][델파이4>2007] DBCtrlGrid에 DBLookupCombo를 올린 후 콤보를 선택하면 ""Operation not allowed in DBCtrlGrid"" 오류가 발생하고 목록이 표시되지 않습니다. 어떻게 해결해야하나요? 험프리 2015.05.30 403
1558 scrollbox 문의? [2] silkroad99 2015.06.01 212
1557 Delphi XE7 Out of Memory 버그 [2] 겨울아이 2015.06.01 1198
1556 iOS app 종료는 어떻게 해야하나요? [2] silkroad99 2015.06.02 471
1555 webbrowser 이미지 보기 문의 [1] file 사랑남 2015.06.02 345
1554 안드로이드 어플리케이션 테스트 중 .... [1] file 에프아이티최실장 2015.06.04 207