자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 39645
공지 유용한 관련 사이트 관리자2 2014.03.20 79152
1572 FastReport에서 코드작성은 어떻게 해야되나요? 코드탭이 아예 선택이 안되네요.. [2] file 왕초보 2020.10.13 568
1571 DataSNAP 연결하여 클라이언트에서 업무처리중에 네트웍이 끊기면 [2] 0Erros 2017.07.16 569
1570 XE10(Delphi 10 Seattle)에서 VCL테마(Vcl.Themes) 사용시 TPopupMenu는 테마 안타게 하는 벙법좀 알려주세요. [1] andy.park 2016.01.29 569
1569 BLE 페어링 [1] Brian 2017.09.14 570
1568 ios [1] file 지구수비방위대 2021.08.09 570
1567 Builder XE 사용 중 Memory Leak 발생 시 SetProcessWorkingSetSize 사용해도 되나요? 제제제 2020.07.20 570
1566 CameraComponent에 대한 문의입니다. [1] arinh 2015.04.04 571
1565 CG32.DLL을 찾을 수 없습니다 [3] 손보라 2019.05.10 572
1564 Delphi 10.4 버전 맥용으로 컴파일시 오류 발생하는 이유가 궁금합니다. [2] 델포이 2021.06.04 572
1563 bcdfield 관련 마이그레이션 작업 문의 [3] mckim 2018.07.13 573
1562 BDE 10.3 Rio 설치시, oracle client 미인식 문제 [1] file 하히후헤호 2019.07.11 574
1561 firedac에서 alias사용한 쿼리를 edit하면 에러가 나네요. [1] fraha 2019.09.25 574
1560 델파이7에서 String 변수 값이 메모리에 남습니다. [1] 농약먹고쿠 2016.02.04 574
1559 datasnap 서버프로그램에서 특정클라이언트에게만 내용을 전달할수가 있을까요 [1] 라빌레나 2020.10.02 574
1558 델파이 10 stringGrid 관련문의 [4] file 개미 2020.11.27 574
1557 파이어몽키로 사진저장 파일오류...?? [1] 밤바야 2016.05.26 575
1556 TStringGrid를 스타일 제외하기 [2] 나도몰라 2016.10.05 575
1555 [델파이 부트캠프] 델파이가 어떻게 바뀌고 있는지 궁금하네요. 험프리 2016.09.30 575
1554 [FireDAC][Phys]-300. Driver [ORACLE] is not registered. Correct driver ID or define [ORACLE] virtual driver in FDDriver.ini [1] 나마 2020.08.05 575
1553 바코드 스캐너 관련문의 [2] file silkroad99 2017.04.24 576