Приветствую!
Есть задача: в некоем дельфовом приложении открыть дочернюю форму на которой "показать" окно карты arcmap.
Написал нижеследующий код, он не работает: Panel2 - остается пустой, хотя mc стартует и mdx открывается.
Почему?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, esriGeometry_TLB, StdCtrls,
ExtCtrls, OleCtrls, ComObj, Dialogs, OleServer,
esriMapControl_TLB, esriSystemUI_TLB, esriCarto_TLB, esriGeoDatabase_TLB, esriSystem_TLB, esriDisplay_TLB;
type
TForm1 = class(TForm)
Panel2: TPanel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mc: IMapControlDefault;
la: ILayer;
anActiveView: IActiveView;
aScreenDisplay: IScreenDisplay;
implementation
{$R *.dfm}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mc:=nil;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
mc:=CreateComObject(CLASS_MapControl) as IMapControlDefault;
mc.LoadMxFile('D:\arcgis_data\2.mxd', 0, 0);
anActiveView:=mc.ActiveView;
anActiveView.Get_ScreenDisplay(aScreenDisplay);
aScreenDisplay.Set_hWnd(Panel2.Handle);
aScreenDisplay.UpdateWindow;
// anActiveView.Refresh; - пробовал - не помогает
aScreenDisplay.UpdateWindow;
anActiveView.Refresh;
end;
end.