lazarus-ccr/components/lazmapviewer/examples/fulldemo/configframe_with_addons.pas
2024-04-05 14:51:09 +00:00

109 lines
2.9 KiB
ObjectPascal

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.