자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 17167
공지 유용한 관련 사이트 관리자2 2014.03.20 56039
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99473
1579 10.2 Datasnap서버에 ClientDataSet 사용시 Midas.dll 오류 문의 [1] 심바 2019.02.12 401
1578 RAD Studio 10.3.2 Code Insight의 지속적인 문제 [2] 포비 2019.10.02 402
1577 TJSONArray Data Clear 문의 [1] 늦바람 2019.11.29 402
1576 [공유] 라이브바인딩으로 날짜필드를 연결할때 포맷을 지정할 수 있나요? file 험프리 2015.10.21 402
1575 TComport 64bit도 지원가능한가요? [2] 야크 2021.01.12 402
1574 firedac 한글 깨짐 문의 mecagoki 2016.10.21 403
1573 [REST 웨비나] REST API 동시 처리에 따른 DB Connection 및 트렌젝션 관리? 험프리 2020.09.17 403
1572 바코드스캔이 넘느려서 질문드립니다 [1] 화현 2019.11.23 404
1571 델파이에서 안드로이드 개발중 만난 네트워크 오류입니다. [2] 장은우 2019.03.29 404
1570 이메일 질문입니다. [2] 희망나라 2019.08.26 404
1569 [XE8 웹세미나] 실행중 발생하는 Access violation시 클래스명이라도 표시 해줬으면 디버깅 속도 개선에 많은 도움이 될듯합니다. [1] 관리자 2015.05.08 404
1568 "display notification: out of stack space" 에러가 발생하고, 초기화면이 뜨며 화면이 멈춥니다. 험프리 2017.11.27 405
1567 XE7에서 WinRT 같은 Win10 기능을 사용 할 수 있나요? [3] 가나당 2015.08.03 405
1566 델파이 시애틀 관련문의 [1] file rrraggg 2017.07.20 406
1565 C++ Builder 몇가지 빌드오류. [2] junho103 2018.03.27 406
1564 Incompatible type 에러 (재질문) [1] gent 2018.11.15 406
1563 DBGRID 질문 드립니다. [2] 초보델팡이 2019.08.23 406
» [마이그레이션][델파이4>2007] DBCtrlGrid에 DBLookupCombo를 올린 후 콤보를 선택하면 ""Operation not allowed in DBCtrlGrid"" 오류가 발생하고 목록이 표시되지 않습니다. 어떻게 해결해야하나요? 험프리 2015.05.30 406
1561 [시애틀]디버그 모드 진입 불가 [1] 김태윤 2016.06.14 407
1560 TGrid를 db와 연결했는데 이미지 필드에 이미지가 안나옵니다. 델마당쇠 2020.02.10 407