mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 10:49:16 +02:00
lcl: Enter edit state for LM_PASTE / Clear / Cut for TDBEdit in WndProc instead of each one separated
git-svn-id: trunk@32484 -
This commit is contained in:
parent
d73f175065
commit
2012691818
@ -202,8 +202,7 @@ Type
|
|||||||
|
|
||||||
procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS;
|
procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS;
|
||||||
procedure WMKillFocus(var Message: TLMKillFocus); message LM_KILLFOCUS;
|
procedure WMKillFocus(var Message: TLMKillFocus); message LM_KILLFOCUS;
|
||||||
procedure LMPasteFromClip(var Message: TLMessage); message LM_PASTE;
|
procedure WndProc(var Message: TLMessage); override;
|
||||||
procedure LMCutToClip(var Message: TLMessage); message LM_CUT;
|
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
@ -123,12 +123,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function FieldCanAcceptKey(Field: TField; AKey: char): boolean;
|
|
||||||
begin
|
|
||||||
Result := (Field<>nil) and Field.IsValidChar(AKey) and
|
|
||||||
(Field.DataType<>ftAutoInc);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDBEdit.KeyPress(var Key: char);
|
procedure TDBEdit.KeyPress(var Key: char);
|
||||||
var
|
var
|
||||||
SavedKey: Char;
|
SavedKey: Char;
|
||||||
@ -233,27 +227,30 @@ begin
|
|||||||
FDatalink.Reset;
|
FDatalink.Reset;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBEdit.LMPasteFromClip(var Message: TLMessage);
|
procedure TDBEdit.WndProc(var Message: TLMessage);
|
||||||
begin
|
begin
|
||||||
if FDataLink.CanModify then
|
case Message.Msg of
|
||||||
begin
|
LM_CLEAR,
|
||||||
//LCL changes the Text before LM_PASTE is called and not after like Delphi. Issue 20330
|
LM_CUT,
|
||||||
//When Edit is called the Text property is reset to the previous value
|
LM_PASTE:
|
||||||
//Add a workaround while bug is not fixed
|
begin
|
||||||
FDataLink.OnDataChange := nil;
|
if FDataLink.CanModify then
|
||||||
FDatalink.Edit;
|
begin
|
||||||
FDataLink.Modified;
|
//LCL changes the Text before LM_PASTE is called and not after like Delphi. Issue 20330
|
||||||
FDataLink.OnDataChange := @DataChange;
|
//When Edit is called the Text property is reset to the previous value
|
||||||
inherited LMPasteFromClip(Message);
|
//Add a workaround while bug is not fixed
|
||||||
|
FDataLink.OnDataChange := nil;
|
||||||
|
FDatalink.Edit;
|
||||||
|
FDataLink.Modified;
|
||||||
|
FDataLink.OnDataChange := @DataChange;
|
||||||
|
inherited WndProc(Message);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
inherited WndProc(Message);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBEdit.LMCutToClip(var Message: TLMessage);
|
|
||||||
begin
|
|
||||||
FDatalink.Edit;
|
|
||||||
inherited LMCutToClip(Message);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ Public Methods }
|
{ Public Methods }
|
||||||
constructor TDBEdit.Create(AOwner: TComponent);
|
constructor TDBEdit.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user