unit frameKlantinstellingen; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, Datasnap.DBClient, DnaCodeService; type TfrmKlantinstellingen = class(TFrame) cdsKlantinstellingen: TClientDataSet; dbgGebruikers: TDBGrid; Panel1: TPanel; btnKlantinstellingenToevoegen: TButton; dsKlantinstellingen: TDataSource; btnKlantinstellingenWijzigen: TButton; btnKlantinstellingenVerwijderen: TButton; procedure dbgGebruikersDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgGebruikersEnter(Sender: TObject); procedure dbgGebruikersColEnter(Sender: TObject); procedure dbgGebruikersColExit(Sender: TObject); private GridOriginalOptions : TDBGridOptions; procedure VulKlantinstellingenGridMetData(Klantinstellingen: ArrayOfKlantinstellingenKlantinstellingen); public procedure ZoekAlleKlantinstellingen(); end; implementation uses Agent, Main, UiContext; {$R *.dfm} { TfrmKlantinstellingen } procedure TfrmKlantinstellingen.ZoekAlleKlantinstellingen(); var fBewerkKlantinstellingenResponse: BewerkKlantinstellingenResponse; begin fBewerkKlantinstellingenResponse := TAgent.Create(fmMain.UiContext).BewerkKlantinstellingen('List','',false); try if fBewerkKlantinstellingenResponse.Header.Status = '200' then begin VulKlantinstellingenGridMetData(fBewerkKlantinstellingenResponse.Klantinstellingen); end else begin ShowMessage(fBewerkKlantinstellingenResponse.Header.Omschrijving); end; finally fBewerkKlantinstellingenResponse.Free; end; end; procedure TfrmKlantinstellingen.dbgGebruikersColEnter(Sender: TObject); begin if Self.dbgGebruikers.SelectedField.DataType = ftBoolean then begin Self.GridOriginalOptions := Self.dbgGebruikers.Options; Self.dbgGebruikers.Options := Self.dbgGebruikers.Options - [dgEditing]; end; end; procedure TfrmKlantinstellingen.dbgGebruikersColExit(Sender: TObject); begin if Self.dbgGebruikers.SelectedField.DataType = ftBoolean then Self.dbgGebruikers.Options := Self.GridOriginalOptions; end; procedure TfrmKlantinstellingen.dbgGebruikersDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const CtrlState: array[Boolean] of integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED) ; begin if (Column.Field.DataType=ftBoolean) then begin dbgGebruikers.Canvas.FillRect(Rect) ; if VarIsNull(Column.Field.Value) then DrawFrameControl(dbgGebruikers.Canvas.Handle,Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_INACTIVE) {grayed} else DrawFrameControl(dbgGebruikers.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]) ; {checked or unchecked} end; end; procedure TfrmKlantinstellingen.dbgGebruikersEnter(Sender: TObject); begin dbgGebruikersColEnter(Sender); end; procedure TfrmKlantinstellingen.VulKlantinstellingenGridMetData( Klantinstellingen: ArrayOfKlantinstellingenKlantinstellingen); var ii: integer; begin cdsKlantinstellingen.Close; cdsKlantinstellingen.CreateDataSet; ii := 0; while ii <= length(Klantinstellingen)-1 do begin cdsKlantinstellingen.InsertRecord([Klantinstellingen[ii].KlantId, Klantinstellingen[ii].Klantnaam, Klantinstellingen[ii].IsExport]); ii := ii + 1; end; end; end.