mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 08:51:10 +02:00
* Call TDatalink.LayoutChanged when controls are disabled and dataset closed/opened. Bug #16428 + test
git-svn-id: trunk@15422 -
This commit is contained in:
parent
194855eee0
commit
6a6ab2a392
@ -254,6 +254,7 @@ begin
|
|||||||
deFieldChange : HandleFieldChange(TField(Info));
|
deFieldChange : HandleFieldChange(TField(Info));
|
||||||
deDataSetChange,
|
deDataSetChange,
|
||||||
deDataSetScroll : HandleScrollOrChange;
|
deDataSetScroll : HandleScrollOrChange;
|
||||||
|
deLayoutChange : FEnableControlsEvent:=deLayoutChange;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if not ControlsDisabled then begin
|
if not ControlsDisabled then begin
|
||||||
@ -1062,6 +1063,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
DoBeforeOpen;
|
DoBeforeOpen;
|
||||||
|
FEnableControlsEvent:=deLayoutChange;
|
||||||
FInternalCalcFields:=False;
|
FInternalCalcFields:=False;
|
||||||
try
|
try
|
||||||
FDefaultFields:=FieldCount=0;
|
FDefaultFields:=FieldCount=0;
|
||||||
|
@ -71,6 +71,7 @@ type
|
|||||||
procedure TestMove; // bug 5048
|
procedure TestMove; // bug 5048
|
||||||
procedure TestActiveBufferWhenClosed;
|
procedure TestActiveBufferWhenClosed;
|
||||||
procedure TestEOFBOFClosedDataset;
|
procedure TestEOFBOFClosedDataset;
|
||||||
|
procedure TestLayoutChangedEvents;
|
||||||
procedure TestDataEventsResync;
|
procedure TestDataEventsResync;
|
||||||
procedure TestBug7007;
|
procedure TestBug7007;
|
||||||
procedure TestBug6893;
|
procedure TestBug6893;
|
||||||
@ -267,9 +268,9 @@ begin
|
|||||||
|
|
||||||
Next;
|
Next;
|
||||||
if (i > ABufferCount) and not EOF then
|
if (i > ABufferCount) and not EOF then
|
||||||
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:-1;DataSetScrolled:1;',DataEvents)
|
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:-1;DataSetScrolled:1;DataSetChanged;',DataEvents)
|
||||||
else
|
else
|
||||||
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:0;DataSetScrolled:0;',DataEvents);
|
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:0;DataSetScrolled:0;DataSetChanged;',DataEvents);
|
||||||
DataEvents := '';
|
DataEvents := '';
|
||||||
end;
|
end;
|
||||||
AssertEquals(count,i-1);
|
AssertEquals(count,i-1);
|
||||||
@ -335,6 +336,37 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestDBBasics.TestLayoutChangedEvents;
|
||||||
|
var aDatasource : TDataSource;
|
||||||
|
aDatalink : TDataLink;
|
||||||
|
ds : tdataset;
|
||||||
|
|
||||||
|
begin
|
||||||
|
aDatasource := TDataSource.Create(nil);
|
||||||
|
aDatalink := TTestDataLink.Create;
|
||||||
|
try
|
||||||
|
aDatalink.DataSource := aDatasource;
|
||||||
|
ds := DBConnector.GetNDataset(6);
|
||||||
|
aDatasource.DataSet:=ds;
|
||||||
|
with ds do
|
||||||
|
begin
|
||||||
|
open;
|
||||||
|
|
||||||
|
DataEvents := '';
|
||||||
|
DisableControls;
|
||||||
|
Active:=False;
|
||||||
|
Active:=True;
|
||||||
|
EnableControls;
|
||||||
|
AssertEquals('deLayoutChange:0;DataSetChanged;',DataEvents);
|
||||||
|
|
||||||
|
close;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
aDatasource.Free;
|
||||||
|
aDatalink.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestDBBasics.TestDataEventsResync;
|
procedure TTestDBBasics.TestDataEventsResync;
|
||||||
var i,count : integer;
|
var i,count : integer;
|
||||||
aDatasource : TDataSource;
|
aDatasource : TDataSource;
|
||||||
@ -354,10 +386,10 @@ begin
|
|||||||
open;
|
open;
|
||||||
DataEvents := '';
|
DataEvents := '';
|
||||||
Resync([rmExact]);
|
Resync([rmExact]);
|
||||||
AssertEquals('deDataSetChange:0;',DataEvents);
|
AssertEquals('deDataSetChange:0;DataSetChanged;',DataEvents);
|
||||||
DataEvents := '';
|
DataEvents := '';
|
||||||
next;
|
next;
|
||||||
AssertEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;',DataEvents);
|
AssertEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;DataSetChanged;',DataEvents);
|
||||||
close;
|
close;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
@ -2040,7 +2072,7 @@ begin
|
|||||||
|
|
||||||
DataEvents := '';
|
DataEvents := '';
|
||||||
query1.append;
|
query1.append;
|
||||||
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;',DataEvents);
|
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;DataSetChanged;',DataEvents);
|
||||||
AssertEquals(5, datalink1.ActiveRecord);
|
AssertEquals(5, datalink1.ActiveRecord);
|
||||||
AssertEquals(6, datalink1.RecordCount);
|
AssertEquals(6, datalink1.RecordCount);
|
||||||
AssertEquals(6, query1.RecordCount);
|
AssertEquals(6, query1.RecordCount);
|
||||||
@ -2048,7 +2080,7 @@ begin
|
|||||||
|
|
||||||
DataEvents := '';
|
DataEvents := '';
|
||||||
query1.cancel;
|
query1.cancel;
|
||||||
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;',DataEvents);
|
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;DataSetChanged;',DataEvents);
|
||||||
AssertEquals(5, datalink1.ActiveRecord);
|
AssertEquals(5, datalink1.ActiveRecord);
|
||||||
AssertEquals(6, datalink1.RecordCount);
|
AssertEquals(6, datalink1.RecordCount);
|
||||||
AssertEquals(6, query1.RecordCount);
|
AssertEquals(6, query1.RecordCount);
|
||||||
|
@ -75,6 +75,7 @@ type
|
|||||||
TTestDataLink = class(TDataLink)
|
TTestDataLink = class(TDataLink)
|
||||||
protected
|
protected
|
||||||
procedure DataSetScrolled(Distance: Integer); override;
|
procedure DataSetScrolled(Distance: Integer); override;
|
||||||
|
procedure DataSetChanged; override;
|
||||||
{$IFDEF fpc}
|
{$IFDEF fpc}
|
||||||
procedure DataEvent(Event: TDataEvent; Info: Ptrint); override;
|
procedure DataEvent(Event: TDataEvent; Info: Ptrint); override;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
@ -293,6 +294,12 @@ begin
|
|||||||
inherited DataSetScrolled(Distance);
|
inherited DataSetScrolled(Distance);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestDataLink.DataSetChanged;
|
||||||
|
begin
|
||||||
|
DataEvents := DataEvents + 'DataSetChanged;';
|
||||||
|
inherited DataSetChanged;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Ptrint);
|
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Ptrint);
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Longint);
|
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Longint);
|
||||||
|
Loading…
Reference in New Issue
Block a user