* Call TDatalink.LayoutChanged when controls are disabled and dataset closed/opened. Bug #16428 + test

git-svn-id: trunk@15422 -
This commit is contained in:
joost 2010-06-13 12:26:50 +00:00
parent 194855eee0
commit 6a6ab2a392
3 changed files with 47 additions and 6 deletions

View File

@ -254,6 +254,7 @@ begin
deFieldChange : HandleFieldChange(TField(Info));
deDataSetChange,
deDataSetScroll : HandleScrollOrChange;
deLayoutChange : FEnableControlsEvent:=deLayoutChange;
end;
if not ControlsDisabled then begin
@ -1062,6 +1063,7 @@ begin
else
begin
DoBeforeOpen;
FEnableControlsEvent:=deLayoutChange;
FInternalCalcFields:=False;
try
FDefaultFields:=FieldCount=0;

View File

@ -71,6 +71,7 @@ type
procedure TestMove; // bug 5048
procedure TestActiveBufferWhenClosed;
procedure TestEOFBOFClosedDataset;
procedure TestLayoutChangedEvents;
procedure TestDataEventsResync;
procedure TestBug7007;
procedure TestBug6893;
@ -267,9 +268,9 @@ begin
Next;
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
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:0;DataSetScrolled:0;',DataEvents);
AssertEquals('deCheckBrowseMode:0;deDataSetScroll:0;DataSetScrolled:0;DataSetChanged;',DataEvents);
DataEvents := '';
end;
AssertEquals(count,i-1);
@ -335,6 +336,37 @@ begin
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;
var i,count : integer;
aDatasource : TDataSource;
@ -354,10 +386,10 @@ begin
open;
DataEvents := '';
Resync([rmExact]);
AssertEquals('deDataSetChange:0;',DataEvents);
AssertEquals('deDataSetChange:0;DataSetChanged;',DataEvents);
DataEvents := '';
next;
AssertEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;',DataEvents);
AssertEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;DataSetChanged;',DataEvents);
close;
end;
finally
@ -2040,7 +2072,7 @@ begin
DataEvents := '';
query1.append;
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;',DataEvents);
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;DataSetChanged;',DataEvents);
AssertEquals(5, datalink1.ActiveRecord);
AssertEquals(6, datalink1.RecordCount);
AssertEquals(6, query1.RecordCount);
@ -2048,7 +2080,7 @@ begin
DataEvents := '';
query1.cancel;
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;',DataEvents);
AssertEquals('deCheckBrowseMode:0;deUpdateState:0;deDataSetChange:0;DataSetChanged;',DataEvents);
AssertEquals(5, datalink1.ActiveRecord);
AssertEquals(6, datalink1.RecordCount);
AssertEquals(6, query1.RecordCount);

View File

@ -75,6 +75,7 @@ type
TTestDataLink = class(TDataLink)
protected
procedure DataSetScrolled(Distance: Integer); override;
procedure DataSetChanged; override;
{$IFDEF fpc}
procedure DataEvent(Event: TDataEvent; Info: Ptrint); override;
{$ELSE}
@ -293,6 +294,12 @@ begin
inherited DataSetScrolled(Distance);
end;
procedure TTestDataLink.DataSetChanged;
begin
DataEvents := DataEvents + 'DataSetChanged;';
inherited DataSetChanged;
end;
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Ptrint);
{$ELSE}
procedure TTestDataLink.DataEvent(Event: TDataEvent; Info: Longint);