Skip to content

Commit 2fc1ed1

Browse files
committed
[+] implement base frame for pop-up editors, closes #52
1 parent d535ca5 commit 2fc1ed1

File tree

8 files changed

+209
-149
lines changed

8 files changed

+209
-149
lines changed

forms/fmmain.pas

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ interface
77
uses
88
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
99
StdCtrls, DBGrids, DBCtrls, ExtCtrls, uObjects, DB, Grids, ActnList, Buttons,
10-
frameTaskCommand;
10+
frameTaskCommandEditor;
1111

1212
type
1313

@@ -104,7 +104,7 @@ TfmMain = class(TForm)
104104
procedure miLogClick(Sender: TObject);
105105
private
106106
FLastColumn: TColumn; //last sorted grid column
107-
FTaskCmd: TfrmTaskCommand;
107+
FTaskCmd: TfrmTaskCommandEditor;
108108
public
109109
procedure UpdateSortIndication(ACol: TColumn);
110110
end;
@@ -215,7 +215,7 @@ procedure TfmMain.gridTasksEditButtonClick(Sender: TObject);
215215
begin
216216
if not Assigned(FTaskCmd) then
217217
begin
218-
FTaskCmd := TfrmTaskCommand.Create(Self);
218+
FTaskCmd := TfrmTaskCommandEditor.Create(Self);
219219
FTaskCmd.Parent := gridTasks;
220220
end;
221221
FTaskCmd.ShowEditor(gridTasks.SelectedField, gridTasks.SelectedFieldRect.TopLeft);

forms/framebase.lfm

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
object BaseFrame: TBaseFrame
2+
Left = 0
3+
Height = 360
4+
Top = 0
5+
Width = 480
6+
ClientHeight = 360
7+
ClientWidth = 480
8+
DesignTimePPI = 144
9+
OnExit = FrameExit
10+
ParentFont = False
11+
TabOrder = 0
12+
DesignLeft = 2785
13+
DesignTop = 1022
14+
object pnlButtons: TPanel
15+
Left = 0
16+
Height = 56
17+
Top = 304
18+
Width = 480
19+
Align = alBottom
20+
ClientHeight = 56
21+
ClientWidth = 480
22+
TabOrder = 0
23+
object btnOK: TButton
24+
Left = 344
25+
Height = 38
26+
Top = 8
27+
Width = 113
28+
Caption = 'OK'
29+
OnClick = btnOKClick
30+
TabOrder = 0
31+
end
32+
object btnCancel: TButton
33+
Left = 16
34+
Height = 38
35+
Top = 8
36+
Width = 113
37+
Caption = 'Cancel'
38+
OnExit = FrameExit
39+
TabOrder = 1
40+
end
41+
end
42+
end

forms/framebase.pas

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
unit framebase;
2+
3+
{$mode ObjFPC}{$H+}
4+
5+
interface
6+
7+
uses
8+
Classes, SysUtils, Forms, Controls, ExtCtrls, StdCtrls, SynEdit,
9+
SynHighlighterSQL, ComCtrls, LCLType, Db;
10+
11+
type
12+
13+
{ TBaseFrame }
14+
15+
TBaseFrame = class(TFrame)
16+
btnOK: TButton;
17+
btnCancel: TButton;
18+
pnlButtons: TPanel;
19+
procedure btnOKClick(Sender: TObject);
20+
procedure FrameExit(Sender: TObject);
21+
protected
22+
fldCommand: TField;
23+
function GetEditorValue(): string; virtual; abstract;
24+
procedure SetEditorValue(AText: string); virtual; abstract;
25+
public
26+
procedure ShowEditor(AField: TField; ATopLeft: TPoint);
27+
procedure HideEditor();
28+
procedure ApplyChanges();
29+
procedure CreateParams(var Params: TCreateParams); override;
30+
end;
31+
32+
implementation
33+
34+
{$R *.lfm}
35+
36+
{ TBaseFrame }
37+
38+
procedure TBaseFrame.FrameExit(Sender: TObject);
39+
begin
40+
HideEditor();
41+
end;
42+
43+
procedure TBaseFrame.btnOKClick(Sender: TObject);
44+
begin
45+
ApplyChanges();
46+
end;
47+
48+
procedure TBaseFrame.ShowEditor(AField: TField; ATopLeft: TPoint);
49+
begin
50+
SetEditorValue(AField.AsString);
51+
fldCommand := AField;
52+
Left := ATopLeft.X;
53+
Top := ATopLeft.Y;
54+
Show();
55+
SetFocus();
56+
end;
57+
58+
procedure TBaseFrame.HideEditor;
59+
begin
60+
Hide();
61+
Parent.SetFocus();
62+
end;
63+
64+
procedure TBaseFrame.ApplyChanges;
65+
begin
66+
fldCommand.DataSet.Edit;
67+
fldCommand.AsString := GetEditorValue();
68+
HideEditor();
69+
end;
70+
71+
procedure TBaseFrame.CreateParams(var Params: TCreateParams);
72+
begin
73+
inherited CreateParams(Params);
74+
Params.Style := Params.Style or WS_SIZEBOX;
75+
end;
76+
77+
end.
78+

forms/frametaskcommand.pas

Lines changed: 0 additions & 89 deletions
This file was deleted.
Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,11 @@
1-
object frmTaskCommand: TfrmTaskCommand
2-
Left = 0
3-
Height = 360
4-
Top = 0
5-
Width = 480
6-
ClientHeight = 360
7-
ClientWidth = 480
8-
Color = clDefault
9-
DesignTimePPI = 144
10-
OnExit = edCommandExit
11-
ParentColor = False
12-
ParentFont = False
13-
TabOrder = 0
14-
DesignLeft = 2911
15-
DesignTop = 973
16-
inline edCommand: TSynEdit
1+
inherited frmTaskCommandEditor: TfrmTaskCommandEditor
2+
inherited pnlButtons: TPanel
3+
inherited btnCancel: TButton
4+
OnClick = FrameExit
5+
OnExit = nil
6+
end
7+
end
8+
inline edCommand: TSynEdit[1]
179
Left = 0
1810
Height = 304
1911
Top = 0
@@ -25,11 +17,10 @@ object frmTaskCommand: TfrmTaskCommand
2517
Font.Quality = fqNonAntialiased
2618
ParentColor = False
2719
ParentFont = False
28-
TabOrder = 0
20+
TabOrder = 1
2921
OnKeyDown = edCommandKeyDown
30-
Gutter.AutoSize = False
3122
Gutter.Visible = False
32-
Gutter.Width = 75
23+
Gutter.Width = 95
3324
Gutter.MouseActions = <>
3425
RightGutter.Width = 0
3526
RightGutter.MouseActions = <>
@@ -459,9 +450,10 @@ object frmTaskCommand: TfrmTaskCommand
459450
MouseTextActions = <>
460451
MouseSelActions = <>
461452
Lines.Strings = (
462-
'Download'
453+
'select * from foo where bar = ''baz'''
463454
)
464455
VisibleSpecialChars = [vscSpace, vscTabAtLast]
456+
ScrollBars = ssAutoVertical
465457
SelectedColor.BackPriority = 50
466458
SelectedColor.ForePriority = 50
467459
SelectedColor.FramePriority = 50
@@ -508,7 +500,7 @@ object frmTaskCommand: TfrmTaskCommand
508500
MarkupInfo.Foreground = clGray
509501
end
510502
object SynGutterCodeFolding1: TSynGutterCodeFolding
511-
Width = 0
503+
Width = 15
512504
MouseActions = <>
513505
MarkupInfo.Background = clNone
514506
MarkupInfo.Foreground = clGray
@@ -517,38 +509,11 @@ object frmTaskCommand: TfrmTaskCommand
517509
end
518510
end
519511
end
520-
object pnlButtons: TPanel
521-
Left = 0
522-
Height = 56
523-
Top = 304
524-
Width = 480
525-
Align = alBottom
526-
ClientHeight = 56
527-
ClientWidth = 480
528-
TabOrder = 1
529-
object btnOK: TButton
530-
Left = 344
531-
Height = 38
532-
Top = 8
533-
Width = 113
534-
Caption = 'OK'
535-
OnClick = btnOKClick
536-
TabOrder = 0
537-
end
538-
object btnCancel: TButton
539-
Left = 16
540-
Height = 38
541-
Top = 8
542-
Width = 113
543-
Caption = 'Cancel'
544-
OnClick = edCommandExit
545-
TabOrder = 1
546-
end
547-
end
548-
object SynSQLSyn: TSynSQLSyn
512+
object SynSQLSyn: TSynSQLSyn[2]
549513
DefaultFilter = 'SQL Files (*.sql)|*.sql'
514+
Enabled = False
550515
SQLDialect = sqlPostgres
551-
Left = 405
552-
Top = 13
516+
Left = 360
517+
Top = 53
553518
end
554519
end

0 commit comments

Comments
 (0)