-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathVcl.LabeledMask.pas
More file actions
124 lines (108 loc) · 4.32 KB
/
Vcl.LabeledMask.pas
File metadata and controls
124 lines (108 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
{******************************************************************************}
{ }
{ DataAwareLabeledComponents: Dataaware Edit components with Label }
{ }
{ Copyright (c) 2021-2025 (Ethea S.r.l.) }
{ Author: Carlo Barazzetta }
{ }
{ https://github.com/EtheaDev/DBAwareLabeledComponents }
{ }
{******************************************************************************}
{ }
{ Licensed under the Apache License, Version 2.0 (the "License"); }
{ you may not use this file except in compliance with the License. }
{ You may obtain a copy of the License at }
{ }
{ http://www.apache.org/licenses/LICENSE-2.0 }
{ }
{ Unless required by applicable law or agreed to in writing, software }
{ distributed under the License is distributed on an "AS IS" BASIS, }
{ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. }
{ See the License for the specific language governing permissions and }
{ limitations under the License. }
{ }
{******************************************************************************}
unit Vcl.LabeledMask;
{$I 'DBAwareLabeledComponents.inc'}
interface
uses
Winapi.Windows,
Winapi.Messages,
System.Types,
System.SysUtils,
System.Classes,
Vcl.Controls,
Vcl.StdCtrls,
Vcl.Mask,
Vcl.BoundLabel;
type
{TLabeledMaskEdit}
TLabeledMaskEdit = class(TMaskEdit)
private
FBoundLabel: TControlBoundLabel;
FBoundCaption: TCaption;
procedure SetBoundCaption(const Value: TCaption);
function GetIsEmpty: Boolean;
protected
procedure SetParent(AParent: TWinControl); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure VisibleChanging; override;
procedure DoEnter; override;
procedure DoExit; override;
public
constructor Create(AOwner: TComponent); override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
published
property IsEmpty: Boolean read GetIsEmpty;
property BoundCaption : TCaption read FBoundCaption write SetBoundCaption;
property BoundLabel: TControlBoundLabel read FBoundLabel;
end;
implementation
{ TLabeledMaskEdit }
constructor TLabeledMaskEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FBoundLabel := TControlBoundLabel.Create(self);
end;
procedure TLabeledMaskEdit.DoEnter;
begin
inherited;
EnterEditCtrl(Self, FBoundLabel);
end;
procedure TLabeledMaskEdit.DoExit;
begin
inherited;
ExitEditCtrl(Self, FBoundLabel);
end;
function TLabeledMaskEdit.GetIsEmpty: Boolean;
begin
Result := Text = '';
end;
procedure TLabeledMaskEdit.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (AComponent = FBoundLabel) and (Operation = opRemove) then
FBoundLabel := nil;
end;
procedure TLabeledMaskEdit.SetBoundCaption(const Value: TCaption);
begin
ChangeBoundCaption(Value,FBoundLabel,self);
FBoundCaption := Value;
end;
procedure TLabeledMaskEdit.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
inherited SetBounds(ALeft, ATop, AWidth, AHeight);
DrawBoundLabel(FBoundLabel, Self );
end;
procedure TLabeledMaskEdit.SetParent(AParent: TWinControl);
begin
inherited SetParent(AParent);
SetParentOfLabel(FBoundLabel,AParent,Self);
end;
procedure TLabeledMaskEdit.VisibleChanging;
begin
inherited;
FBoundLabel.Visible := not Visible;
end;
end.