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; dbgKlantinstellingen: TDBGrid; Panel1: TPanel; btnKlantinstellingenToevoegen: TButton; dsKlantinstellingen: TDataSource; btnKlantinstellingenWijzigen: TButton; btnKlantinstellingenVerwijderen: TButton; procedure dbgKlantinstellingenDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure dbgKlantinstellingenEnter(Sender: TObject); procedure dbgKlantinstellingenColEnter(Sender: TObject); procedure dbgKlantinstellingenColExit(Sender: TObject); procedure btnKlantinstellingenToevoegenClick(Sender: TObject); procedure btnKlantinstellingenWijzigenClick(Sender: TObject); procedure btnKlantinstellingenVerwijderenClick(Sender: TObject); private GridOriginalOptions : TDBGridOptions; procedure VulKlantinstellingenGridMetData(Klantinstellingen: ArrayOfKlantinstellingenKlantinstellingen); public procedure ZoekAlleKlantinstellingen(); end; implementation uses Agent, Main, UiContext, KlantinstellingenDetailScherm; {$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.btnKlantinstellingenToevoegenClick( Sender: TObject); var fKlantinstellingenDetailScherm: TfmKlantinstellingenDetail; fBewerkKlantinstellingenResponse: BewerkKlantinstellingenResponse; begin fKlantinstellingenDetailScherm := TfmKlantinstellingenDetail.Create(self); fKlantinstellingenDetailScherm.KlantId := ''; fKlantinstellingenDetailScherm.IsExport := false; fKlantinstellingenDetailScherm.ShowModal; fBewerkKlantinstellingenResponse := TAgent.Create(fmMain.UiContext).BewerkKlantinstellingen('Upsert',fKlantinstellingenDetailScherm.KlantId,fKlantinstellingenDetailScherm.IsExport); if fBewerkKlantinstellingenResponse.Header.Status = '200' then begin VulKlantinstellingenGridMetData(fBewerkKlantinstellingenResponse.Klantinstellingen); end else begin ShowMessage(fBewerkKlantinstellingenResponse.Header.Omschrijving); end; end; procedure TfrmKlantinstellingen.btnKlantinstellingenVerwijderenClick( Sender: TObject); var fGeselecteerdeKlantId: string; fBewerkKlantinstellingenResponse: BewerkKlantinstellingenResponse; begin if dbgKlantinstellingen.SelectedRows.Count > 0 then begin dbgKlantinstellingen.DataSource.DataSet.GotoBookmark(Pointer(dbgKlantinstellingen.SelectedRows.Items[0])); fGeselecteerdeKlantId := dbgKlantinstellingen.DataSource.DataSet.FieldByName('cdsKlantinstellingenKlantId').AsString; end; fBewerkKlantinstellingenResponse := TAgent.Create(fmMain.UiContext).BewerkKlantinstellingen('Delete',fGeselecteerdeKlantId,false); if fBewerkKlantinstellingenResponse.Header.Status = '200' then begin VulKlantinstellingenGridMetData(fBewerkKlantinstellingenResponse.Klantinstellingen); end else begin ShowMessage(fBewerkKlantinstellingenResponse.Header.Omschrijving); end; end; procedure TfrmKlantinstellingen.btnKlantinstellingenWijzigenClick( Sender: TObject); var fKlantinstellingenDetailScherm: TfmKlantinstellingenDetail; fBewerkKlantinstellingenResponse: BewerkKlantinstellingenResponse; begin if dbgKlantinstellingen.SelectedRows.Count > 0 then begin dbgKlantinstellingen.DataSource.DataSet.GotoBookmark(Pointer(dbgKlantinstellingen.SelectedRows.Items[0])); fKlantinstellingenDetailScherm := TfmKlantinstellingenDetail.Create(self); fKlantinstellingenDetailScherm.KlantId := dbgKlantinstellingen.DataSource.DataSet.FieldByName('cdsKlantinstellingenKlantId').AsString; fKlantinstellingenDetailScherm.IsExport := dbgKlantinstellingen.DataSource.DataSet.FieldByName('cdsKlantinstellingenIsExport').AsBoolean; fKlantinstellingenDetailScherm.ShowModal; fBewerkKlantinstellingenResponse := TAgent.Create(fmMain.UiContext).BewerkKlantinstellingen('Upsert',fKlantinstellingenDetailScherm.KlantId,fKlantinstellingenDetailScherm.IsExport); if fBewerkKlantinstellingenResponse.Header.Status = '200' then begin VulKlantinstellingenGridMetData(fBewerkKlantinstellingenResponse.Klantinstellingen); end else begin ShowMessage(fBewerkKlantinstellingenResponse.Header.Omschrijving); end; end; end; procedure TfrmKlantinstellingen.dbgKlantinstellingenColEnter(Sender: TObject); begin if dbgKlantinstellingen.SelectedField.DataType = ftBoolean then begin GridOriginalOptions := dbgKlantinstellingen.Options; dbgKlantinstellingen.Options := dbgKlantinstellingen.Options - [dgEditing]; end; end; procedure TfrmKlantinstellingen.dbgKlantinstellingenColExit(Sender: TObject); begin if dbgKlantinstellingen.SelectedField.DataType = ftBoolean then dbgKlantinstellingen.Options := GridOriginalOptions; end; procedure TfrmKlantinstellingen.dbgKlantinstellingenDrawColumnCell(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 dbgKlantinstellingen.Canvas.FillRect(Rect) ; if VarIsNull(Column.Field.Value) then DrawFrameControl(dbgKlantinstellingen.Canvas.Handle,Rect, DFC_BUTTON, DFCS_BUTTONCHECK or DFCS_INACTIVE) {grayed} else DrawFrameControl(dbgKlantinstellingen.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]) ; {checked or unchecked} end; end; procedure TfrmKlantinstellingen.dbgKlantinstellingenEnter(Sender: TObject); begin dbgKlantinstellingenColEnter(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.