From 54c3d2655375ab0612923f0a8876aa164946aa86 Mon Sep 17 00:00:00 2001 From: Maxim Ganetsky Date: Sat, 16 Jul 2022 00:49:32 +0300 Subject: [PATCH] MemDS: added a standard command for editing dataset fields to component's context menu (patch from Aleksey, issue #39823) --- components/memds/frmselectdataset.pp | 48 ++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/components/memds/frmselectdataset.pp b/components/memds/frmselectdataset.pp index ceedd6952e..00cac9cf5d 100644 --- a/components/memds/frmselectdataset.pp +++ b/components/memds/frmselectdataset.pp @@ -20,9 +20,15 @@ uses StdCtrls, Buttons, MemDS, ComponentEditors, PropEdits, LazarusPackageIntf; Type + + { TMemDatasetEditor } + TMemDatasetEditor = Class(TComponentEditor) - FStartIndex : Integer; + private + DefaultEditor: TBaseComponentEditor; Public + constructor Create(AComponent: TComponent; ADesigner: TComponentEditorDesigner); override; + destructor Destroy; override; procedure ExecuteVerb(Index: Integer); override; function GetVerb(Index: Integer): string; override; function GetVerbCount: Integer; override; @@ -84,33 +90,57 @@ end; { TMemDatasetEditor } +constructor TMemDatasetEditor.Create(AComponent: TComponent; + ADesigner: TComponentEditorDesigner); +var + CompClass: TClass; +begin + inherited Create(AComponent, ADesigner); + CompClass := PClass(Acomponent)^; + try + PClass(AComponent)^ := TDataSet; + DefaultEditor := GetComponentEditor(AComponent, ADesigner); + finally + PClass(AComponent)^ := CompClass; + end; +end; + +destructor TMemDatasetEditor.Destroy; +begin + DefaultEditor.Free; + inherited Destroy; +end; + procedure TMemDatasetEditor.ExecuteVerb(Index: Integer); begin - If Index