RAD Studio VCL Reference
|
Disables data display in data-aware controls associated with the dataset.
procedure DisableControls;
__fastcall DisableControls();
Call DisableControls prior to iterating through a large number of records in the dataset to prevent data-aware controls from updating every time the active record changes. Disabling controls prevents flicker and speeds performance because data does not need to be written to the display.
If controls are not already disabled, DisableControls records the current state of the dataset, broadcasts the state change to all associated data-aware controls and detail datasets, and increments the dataset's disabled count variable. Otherwise, DisableControls just increments the disabled count variable.
The disabled count is used internally to determine whether to display data in data-aware controls. When the disable count variable is greater than zero, data is not updated.
If the dataset is the master of a master/detail relationship, calling DisableControls also disables the master/detail relationship. Setting BlockReadSize instead of calling DisableControls updates the detail datasets as you scroll through the dataset, but does not update data-aware controls.
Delphi Examples:
{ Usually DisableControls is called within the context of a try...finally block that reenables the controls even if an exception occurs. For example: } procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin ListBox1.Clear; ListBox1.Items[0]:= 'Destination Airports:'; with Flights do begin DisableControls; try First; i:= 1; ListBox1.Items[0]:= 'Destination Airports:'; while not Eof do begin ListBox1.Items[i]:= Fields[2].Value;; i:= i + 1; Next; end; finally EnableControls; end; end; end; procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin Flights:= TTable.Create(Form1); with Flights do begin TableName := 'Flights'; // This path depends on the Demos directory of your RAD Studio installation. DatabaseName := 'c:\Documents and Settings\All Users\Documents\RAD Studio\6.0\Demos\IntraWeb\Win32\FlightInformation\Data'; end; DS2.DataSet:= Flights; DBGrid2.DataSource.DataSet:= Flights; Flights.Active:= True; end;
{ The following code fragment illustrates how DataSets and DataSetCount can be used to ensure that an action is taken for every open dataset. Assign CheckButtonActive as the AfterClose and AfterOpen event handlers for TClientDataSet1. } procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin if not RemoteServer1.Connected then RemoteServer1.Connected := True; ClientDataSet1.Close; with RemoteServer1 do begin for I := 0 to DataSetCount - 1 do DataSets[I].EnableControls; end; ClientDataSet1.Open; end; procedure TForm1.Button3Click(Sender: TObject); var I: Integer; begin ClientDataSet1.Close; RemoteServer1.Connected := False; with RemoteServer1 do begin for I := 0 to DataSetCount - 1 do DataSets[I].DisableControls; end; end; procedure TForm1.CheckButtonActive(DataSet: TDataSet); begin Button1.Enabled := not ClientDataSet1.Active; Button2.Enabled := ClientDataSet1.Active; Button3.Enabled := ClientDataSet1.Active; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|