@@ -15,7 +15,7 @@ interface
1515 LazStringUtils, dbconnection, dbstructures, dbstructures.mysql, generic_types,
1616 apphelpers, extra_controls, createdatabase, SynEditMarkup, SynEditMarkupBracket,
1717 searchreplace, ImgList, IniFiles, LazFileUtils, LazUTF8, tabletools,
18- lazaruscompat, extfiledialog, process, SynEditMiscClasses, Contnrs;
18+ lazaruscompat, extfiledialog, process, SynEditMiscClasses, Contnrs, SynExportHTML ;
1919
2020
2121type
@@ -828,6 +828,8 @@ TMainForm = class(TExtForm)
828828 menuDisplayLogPanel1: TMenuItem;
829829 menuTreefilters1: TMenuItem;
830830 Separator1: TMenuItem;
831+ actCopyFormatted: TAction;
832+ Copyformattedtext1: TMenuItem;
831833 procedure actCreateDBObjectExecute(Sender: TObject);
832834 procedure actNextTabExecute(Sender: TObject);
833835 procedure actPreviousTabExecute(Sender: TObject);
@@ -1232,6 +1234,7 @@ TMainForm = class(TExtForm)
12321234 procedure actQueryTableExecute(Sender: TObject);
12331235 procedure actDisplayLogPanelExecute(Sender: TObject);
12341236 procedure actDisplayTreeFiltersExecute(Sender: TObject);
1237+ procedure actCopyFormattedExecute(Sender: TObject);
12351238 private
12361239 // Executable file details
12371240 FAppVerMajor: Integer;
@@ -11927,7 +11930,6 @@ procedure TMainForm.actCopyOrCutExecute(Sender: TObject);
1192711930 ClpFormat: Word;
1192811931 //ClpData: THandle;
1192911932 //APalette: HPalette;
11930- //Exporter: TSynExporterHTML;
1193111933 Results: TDBQuery;
1193211934 RowNum: PInt64;
1193311935 ExportDialog: TfrmExportGrid;
@@ -12015,6 +12017,38 @@ procedure TMainForm.actCopyOrCutExecute(Sender: TObject);
1201512017 Screen.Cursor := crDefault;
1201612018end;
1201712019
12020+ procedure TMainForm.actCopyFormattedExecute(Sender: TObject);
12021+ var
12022+ Exporter: TSynExporterHTML;
12023+ SynMemo: TSynMemo;
12024+ begin
12025+ // Copy formatted SQL text to clipboard
12026+ if not (Screen.ActiveControl is TSynMemo) then begin
12027+ Beep;
12028+ LogSQL('Active control is not a SynMemo');
12029+ Exit;
12030+ end;
12031+
12032+ SynMemo := TSynMemo(Screen.ActiveControl);
12033+ if SynMemo.Highlighter = nil then begin
12034+ Beep;
12035+ LogSQL('No highlighter assigned to active SynMemo');
12036+ Exit;
12037+ end;
12038+
12039+ Exporter := TSynExporterHTML.Create(nil);
12040+ try
12041+ Exporter.Title := APPNAME;
12042+ Exporter.UseBackground := True;
12043+ Exporter.Highlighter := SynMemo.Highlighter;
12044+ Exporter.ExportAsText := False;
12045+ Exporter.Options := Exporter.Options + [heoWinClipHeader];
12046+ Exporter.ExportAll(Explode(SLineBreak, SynMemo.SelText));
12047+ Exporter.CopyToClipboard;
12048+ finally
12049+ Exporter.Free;
12050+ end;
12051+ end;
1201812052
1201912053procedure TMainForm.actPasteExecute(Sender: TObject);
1202012054var
0 commit comments