Skip to content

Commit da5e781

Browse files
committed
feat: add a separate menu item "copy formatted text", using the old code for copying SynEdit-highlighted text as HTML
Refs #2487
1 parent fd05816 commit da5e781

2 files changed

Lines changed: 51 additions & 3 deletions

File tree

source/main.dfm

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1871,12 +1871,15 @@ object MainForm: TMainForm
18711871
object CopyItem: TMenuItem
18721872
Action = actCopy
18731873
end
1874-
object Copycolumnnames1: TMenuItem
1875-
Action = actCopyColumnNames
1874+
object Copyformattedtext1: TMenuItem
1875+
Action = actCopyFormatted
18761876
end
18771877
object Copywithtabstospaces1: TMenuItem
18781878
Action = actCopyTabsToSpaces
18791879
end
1880+
object Copycolumnnames1: TMenuItem
1881+
Action = actCopyColumnNames
1882+
end
18801883
object actCopyGridNodes1: TMenuItem
18811884
Action = actCopyGridNodes
18821885
end
@@ -3446,6 +3449,15 @@ object MainForm: TMainForm
34463449
ImageIndex = 3
34473450
OnExecute = menuCopyColumnNamesClick
34483451
end
3452+
object actCopyFormatted: TAction
3453+
Category = 'Various'
3454+
Caption = 'Copy formatted text'
3455+
Hint =
3456+
'Copies selected text with formatting from current editor to clip' +
3457+
'board'
3458+
ImageIndex = 3
3459+
OnExecute = actCopyFormattedExecute
3460+
end
34493461
end
34503462
object menuConnections: TPopupMenu
34513463
AutoHotkeys = maManual

source/main.pas

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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;
1225512257
end;
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

1225812294
procedure TMainForm.actPasteExecute(Sender: TObject);
1225912295
var

0 commit comments

Comments
 (0)