unit ConfigFrame_with_Addons; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, mvDrawingEngine, mvDE_RGBGraphics, mvDE_BGRA, mvDE_LCL, mvDLEFPC, mvDLEWin, mvDLESynapse, ConfigFrame; type { TCfgFrame_with_addons } TCfgFrame_with_addons = class(TCfgFrame) cbDownloadEngine: TComboBox; cbDrawingEngine: TComboBox; Label1: TLabel; Label2: TLabel; procedure cbDownloadEngineChange(Sender: TObject); procedure cbDrawingEngineChange(Sender: TObject); private FRGBGraphicsDrawingEngine: TMvRGBGraphicsDrawingEngine; FBGRADrawingEngine: TMvBGRADrawingEngine; FLCLDrawingEngine: TMvLCLDrawingEngine; FSynapseDownloadEngine: TMvDESynapse; FFpHttpClientDownloadEngine: TMvDEFPC; {$IFDEF MSWINDOWS} FWinDownloadEngine: TMvDEWin; {$ENDIF} public destructor Destroy; override; end; implementation {$R *.lfm} { TCfgFrame_with_addons } destructor TCfgFrame_with_addons.Destroy; begin FreeAndNil(FRGBGraphicsDrawingEngine); FreeAndNil(FBGRADrawingEngine); FreeAndNil(FSynapseDownloadEngine); FreeAndNil(FFpHttpClientDownloadEngine); {$IFDEF MSWINDOWS} FreeAndNil(FWinDownloadEngine); {$ENDIF} inherited; end; procedure TCfgFrame_with_addons.cbDrawingEngineChange(Sender: TObject); begin case cbDrawingEngine.ItemIndex of 0: MapView.DrawingEngine := nil; 1: begin if FRGBGraphicsDrawingEngine = nil then FRGBGraphicsDrawingEngine := TMvRGBGraphicsDrawingEngine.Create(self); MapView.DrawingEngine := FRGBGraphicsDrawingEngine; end; 2: begin if FBGRADrawingEngine = nil then FBGRADrawingEngine := TMvBGRADrawingEngine.Create(self); MapView.DrawingEngine := FBGRADrawingEngine; end; 3: begin if FLCLDrawingEngine = nil then FLCLDrawingEngine := TMvLCLDrawingEngine.Create(self); MapView.DrawingEngine := FLCLDrawingEngine; end; end; DoUpdateLayers; end; procedure TCfgFrame_with_addons.cbDownloadEngineChange(Sender: TObject); begin case cbDownloadEngine.ItemIndex of 0: MapView.DownloadEngine := nil; 1: begin if FSynapseDownloadEngine = nil then FSynapseDownloadEngine := TMvDESynapse.Create(self); MapView.DownloadEngine := FSynapseDownloadEngine; end; 2: begin if FFpHttpClientDownloadEngine = nil then FFpHttpClientDownloadEngine := TMvDEFPC.Create(self); MapView.DownloadEngine := FFpHttpClientDownloadEngine; end; 3: begin {$IFDEF MSWINDOWS} if FWinDownloadEngine = nil then FWinDownloadEngine := TMvDEWin.Create(Self); MapView.DownloadEngine := FWinDownloadEngine; {$ELSE} ShowMessage('WinInet download engine can only be used in Windows.'); {$ENDIF} end; end; UpdateDownloadEngineProxy; end; end.