* 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)); 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;

View File

@ -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);

View File

@ -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);