Autor Téma: Migrace z D7 na DXE. Výjimka vyvolaná zavřením ComponentEditoru.  (Přečteno 868 krát)

Offline zj

  • Nováček
  • *
  • Příspěvků: 10
  • Karma: 0
Migruji z D7 do DXE. Součástí prakticky všech projektů je i balíček komponent (DevExpress QuantumGrid 3) jejichž podpora skončila na D7. Nicméně po pár úpravách všechno vypadá funkčně až na pár "maličkostí". Zatím poslední nevyřešenou je výjimka vyvolaná zavíráním okna (potomek TDesignWindow) volaného ComponentEditorem nevizuální komponenty TdxDBGridLayoutList.

Access violation at address 50040950 in module 'rtl150.bpl'. Read of address 0000000C.

Kód: Delphi [Vybrat]
  1. [50040950]{rtl150.bpl  } System.@IntfClear (Line 28061, "System.pas" + 10) + $0
  2. [21084443]{designide150.bpl} ComponentDesigner.TComponentDesigner.SetSelection (Line 6363, "ComponentDesigner.pas" + 26) + $3
  3. [2108476A]{designide150.bpl} ComponentDesigner.TComponentDesigner.UpdateSelections (Line 6419, "ComponentDesigner.pas" + 19) + $C
  4. [21084125]{designide150.bpl} ComponentDesigner.TComponentDesigner.RootActivated (Line 6277, "ComponentDesigner.pas" + 5) + $2
  5. [223FB702]{delphivclide150.bpl} VCLFormDesigner.TVCLRootDesigner.Activate (Line 326, "VCLFormDesigner.pas" + 4) + $1E
  6. [51B1DB26]{vcldesigner150.bpl} VCLSurface.TVclDesignSurface.IsDesignMsg (Line 3235, "VCLSurface.pas" + 114) + $A
  7. [0B6BBB60]{IDEFixPack.dll} SetAllowKibitzedFlag + $3AC
  8. [5027DCDB]{vcl150.bpl  } Controls.TControl.WndProc (Line 6987, "Controls.pas" + 4) + $21
  9. [5035A729]{vcl150.bpl  } Forms.TApplication.DispatchAction (Line 10942, "Forms.pas" + 9) + $A
  10. [2103FB1A]{designide150.bpl} DeskUtil.SetFocusHook (Line 454, "DeskUtil.pas" + 4) + $C
  11. [50282830]{vcl150.bpl  } Controls.TWinControl.WndProc (Line 9831, "Controls.pas" + 144) + $6
  12. [21772A27]{vclactnband150.bpl} ActnMenus.CallWindowHook (Line 744, "ActnMenus.pas" + 20) + $F
  13. [50281ED0]{vcl150.bpl  } Controls.TWinControl.MainWndProc (Line 9552, "Controls.pas" + 3) + $6
  14. [500AFA64]{rtl150.bpl  } Classes.StdWndProc (Line 13491, "Classes.pas" + 8) + $0
  15. [50358A4F]{vcl150.bpl  } Forms.TApplication.ProcessMessage (Line 9743, "Forms.pas" + 6) + $9
  16. [50358B3A]{vcl150.bpl  } Forms.TApplication.HandleMessage (Line 9790, "Forms.pas" + 1) + $4
  17. [50358E65]{vcl150.bpl  } Forms.TApplication.Run (Line 9927, "Forms.pas" + 26) + $3
  18.  

formulář volaný ComponentEditorem má v OnClose

Kód: Delphi [Vybrat]
  1.   _flag := True;
  2.   Action := caFree;
  3.   if Assigned(LayoutList) and not (csDestroying in LayoutList.ComponentState) then
  4.   begin
  5.     UpdateSelection;
  6.     UnprepareLayouts;
  7.     if (LayoutList.Designer <> nil) and not (TdxDBGridLayoutDesigner(LayoutList.Designer).FDestroying) then
  8.     begin
  9.       TdxDBGridLayoutDesigner(LayoutList.Designer).FDesignerForm := nil;
  10.       LayoutList.Designer.Free;
  11.     end;
  12.   end;
  13.   PDesigner := nil;
  14.  

což bych rád debuggoval (krokoval) ale nevím jak - v desing módu. Pokud je TdxDBGridLayoutList umístěn v TDataModule je výjimka vyvolána téměř vždy pokud je ve TFormu není to tak časté ale občas přece jen - závislost jsem zatím nezjistil.

Zkusil jsem formulář ComponentEditoru zavolat v projektu ale narazil jsem na problém s DesignIntf který jsem našel a následně na DockForm který jsem už nenašel. Situaci prý řeší přidání DesignIDE do projektu což jsem našel na Inetu pro D2007 ('-LUDesignIDE' to the ***'Additional Options'*** box). Bohužel 'Additional Options' jsem v Project/Option/Delphi compiler u DXE už nenašel.

Předem díky za podněty

ZJ