unit uDASelectDataTablesForm; {$IFDEF MSWINDOWS} {$I ..\DataAbstract.inc} {$ELSE} {$I ../DataAbstract.inc} {$ENDIF} interface uses {$IFDEF FPC} LResources, {$ENDIF} {$IFDEF MSWINDOWS}Windows,{$ENDIF} Messages, SysUtils, Variants, Classes ,Graphics, Controls, Forms, Dialogs, StdCtrls, CheckLst, Buttons; type TDASelectDataTablesForm = class(TForm) btn_Ok: TBitBtn; btn_Cancel: TBitBtn; lb_DataTables: TCheckListBox; cb_SelectAll: TCheckBox; procedure cb_SelectAllClick(Sender: TObject); procedure lb_DataTablesClick(Sender: TObject); private fChanging: boolean; procedure SetOkButtonCaption(const Value: string); public procedure UpdateCheckBoxState; property OkButtonCaption: string write SetOkButtonCaption; end; var DASelectDataTablesForm: TDASelectDataTablesForm; implementation {$IFNDEF FPC} {$R *.dfm} {$ENDIF FPC} procedure TDASelectDataTablesForm.cb_SelectAllClick(Sender: TObject); var i: integer; begin if fChanging then exit; fChanging := true; try for i := 0 to lb_DataTables.Items.Count-1 do lb_DataTables.Checked[i] := cb_SelectAll.Checked; finally fChanging := false; end; end; procedure TDASelectDataTablesForm.lb_DataTablesClick(Sender: TObject); var lNone, lAll: boolean; i: integer; begin if fChanging then exit; fChanging := true; try lNone := true; lAll := true; for i := 0 to lb_DataTables.Items.Count-1 do if lb_DataTables.Checked[i] then lNone := false else lAll := false; if lNone then cb_SelectAll.State := cbUnchecked else if lAll then cb_SelectAll.State := cbChecked else cb_SelectAll.State := cbGrayed; finally fChanging := false; end; end; procedure TDASelectDataTablesForm.SetOkButtonCaption(const Value: string); begin btn_Ok.Caption := Value; end; procedure TDASelectDataTablesForm.UpdateCheckBoxState; begin lb_DataTablesClick(nil); end; {$IFDEF FPC} initialization {$I uDASelectDataTablesForm.lrs} {$ENDIF} end.