mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-18 23:09:33 +02:00
LCL: Respect ReadOnly property in TDBLookupComboBox and TDBLookupListBox. Issue #32408, patch from Michal Gawrycki.
git-svn-id: trunk@55911 -
This commit is contained in:
parent
18d11b50a2
commit
8e708aabea
@ -802,6 +802,7 @@ Type
|
||||
procedure InitializeWnd; override;
|
||||
procedure DestroyWnd; override;
|
||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||
procedure UTF8KeyPress(var UTF8Key: TUTF8Char); override;
|
||||
procedure Loaded; override;
|
||||
procedure UpdateData(Sender: TObject); override;
|
||||
procedure DataChange(Sender: TObject); override;
|
||||
|
@ -66,8 +66,22 @@ end;
|
||||
|
||||
procedure TDBLookupComboBox.Select;
|
||||
begin
|
||||
FDataLink.Modified;
|
||||
inherited Select;
|
||||
FDataLink.OnDataChange := nil;
|
||||
try
|
||||
if FDataLink.Edit then
|
||||
begin
|
||||
FDataLink.UpdateData;
|
||||
inherited Select;
|
||||
end
|
||||
else
|
||||
begin
|
||||
// if cannot modify, let it reset
|
||||
FDatalink.Reset;
|
||||
DataChange(Self);
|
||||
end;
|
||||
finally
|
||||
FDataLink.OnDataChange := @DataChange;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDBLookupComboBox.KeyDown(var Key: Word; Shift: TShiftState);
|
||||
@ -81,6 +95,13 @@ begin
|
||||
inherited KeyDown(Key, Shift);
|
||||
end;
|
||||
|
||||
procedure TDBLookupComboBox.UTF8KeyPress(var UTF8Key: TUTF8Char);
|
||||
begin
|
||||
if not FDataLink.CanModify then
|
||||
UTF8Key := '';
|
||||
inherited UTF8KeyPress(UTF8Key);
|
||||
end;
|
||||
|
||||
procedure TDBLookupComboBox.Loaded;
|
||||
begin
|
||||
inherited Loaded;
|
||||
|
@ -55,8 +55,13 @@ procedure TDBLookupListBox.DoSelectionChange(User: Boolean);
|
||||
begin
|
||||
if User then
|
||||
begin
|
||||
FDataLink.Modified;
|
||||
FDataLink.UpdateRecord;
|
||||
if FDataLink.CanModify then
|
||||
begin
|
||||
FDataLink.Modified;
|
||||
FDataLink.UpdateRecord;
|
||||
end
|
||||
else
|
||||
DataChange(Self);
|
||||
end;
|
||||
inherited DoSelectionChange(User);
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user