@@ -810,6 +810,8 @@ TMainForm = class(TExtForm)
810810 N27: TMenuItem;
811811 actCopyColumnNames: TAction;
812812 Copycolumnnames1: TMenuItem;
813+ actCopyFormatted: TAction;
814+ Copyformattedtext1: TMenuItem;
813815 procedure actCreateDBObjectExecute(Sender: TObject);
814816 procedure menuConnectionsPopup(Sender: TObject);
815817 procedure actExitApplicationExecute(Sender: TObject);
@@ -1217,6 +1219,7 @@ TMainForm = class(TExtForm)
12171219 procedure actQueryTableExecute(Sender: TObject);
12181220 procedure actDisplayLogPanelExecute(Sender: TObject);
12191221 procedure actDisplayTreeFiltersExecute(Sender: TObject);
1222+ procedure actCopyFormattedExecute(Sender: TObject);
12201223 private
12211224 // Executable file details
12221225 FAppVerMajor, FAppVerMinor, FAppVerRelease, FAppVerRevision: Word;
@@ -12168,7 +12171,6 @@ procedure TMainForm.actCopyOrCutExecute(Sender: TObject);
1216812171 ClpFormat: Word;
1216912172 ClpData: THandle;
1217012173 APalette: HPalette;
12171- Exporter: TSynExporterRTF;
1217212174 Results: TDBQuery;
1217312175 RowNum: PInt64;
1217412176 ExportDialog: TfrmExportGrid;
@@ -12254,6 +12256,40 @@ procedure TMainForm.actCopyOrCutExecute(Sender: TObject);
1225412256 Screen.Cursor := crDefault;
1225512257end;
1225612258
12259+ procedure TMainForm.actCopyFormattedExecute(Sender: TObject);
12260+ var
12261+ Exporter: TSynExporterHTML;
12262+ SynMemo: TSynMemo;
12263+ begin
12264+ // Copy formatted SQL text to clipboard
12265+ if not (Screen.ActiveControl is TSynMemo) then begin
12266+ MessageBeep(MB_ICONWARNING);
12267+ LogSQL('Active control is not a SynMemo');
12268+ Exit;
12269+ end;
12270+
12271+ SynMemo := TSynMemo(Screen.ActiveControl);
12272+ if SynMemo.Highlighter = nil then begin
12273+ MessageBeep(MB_ICONWARNING);
12274+ LogSQL('No highlighter assigned to active SynMemo');
12275+ Exit;
12276+ end;
12277+
12278+ Exporter := TSynExporterHTML.Create(nil);
12279+ try
12280+ Exporter.Title := APPNAME;
12281+ Exporter.UseBackground := True;
12282+ Exporter.Highlighter := SynMemo.Highlighter;
12283+ Exporter.ExportAsText := False;
12284+ Clipboard.Open;
12285+ Clipboard.TryAsText := SynMemo.SelText;
12286+ Exporter.ExportAll(Explode(SLineBreak, SynMemo.SelText));
12287+ Exporter.CopyToClipboard;
12288+ Clipboard.Close;
12289+ finally
12290+ Exporter.Free;
12291+ end;
12292+ end;
1225712293
1225812294procedure TMainForm.actPasteExecute(Sender: TObject);
1225912295var
0 commit comments