unit uViewDireccionEntrega;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,
  cxGridDBBandedTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
  uDADataTable, Grids, DBGrids, ActnList, ImgList, PngImageList, ComCtrls,
  ToolWin, cxGridDBTableView, uViewDetallesGenerico, cxCurrencyEdit,
  uDAInterfaces, cxLookAndFeels, cxLookAndFeelPainters, dxLayoutControl,
  StdCtrls, Mask, DBCtrls, cxContainer, dxLayoutcxEditAdapters, cxDBEdit,
  cxMaskEdit, cxDropDownEdit;
  
type
  TfrViewDireccionEntrega = class(TfrViewBase)
    dxLayoutControl1Group_Root: TdxLayoutGroup;
    dxLayoutControl1: TdxLayoutControl;
    dsDetalles: TDADataSource;
    dxLayoutControl1Item2: TdxLayoutItem;
    cbPoblacion: TcxDBComboBox;
    dxLayoutControl1Item3: TdxLayoutItem;
    cbProvincia: TcxDBComboBox;
    dxLayoutControl1Item4: TdxLayoutItem;
    eCalle: TcxDBTextEdit;
    dxLayoutControl1Item5: TdxLayoutItem;
    eCodigoPostal: TcxDBTextEdit;
    dxLayoutControl1Group1: TdxLayoutGroup;
    procedure cbPoblacionPropertiesInitPopup(Sender: TObject);
    procedure cbProvinciaPropertiesInitPopup(Sender: TObject);
  protected
    FProvincias : TStringList;
    FPoblaciones : TStringList;
    procedure CargarProvincias;
    procedure CargarPoblaciones;

  public
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;

  end;

implementation
{$R *.dfm}

uses
  uProvinciasPoblacionesController, uStringsUtils;

{ TfrViewDireccionEntrega }

procedure TfrViewDireccionEntrega.CargarPoblaciones;
var
  i : integer;
  AID : Integer;
begin
  AID := StrToInt(FProvincias.Values[cbProvincia.Text]);
  with TProvinciasPoblacionesController.Create do
    try
      FPoblaciones := DarListaPoblaciones(AID);

      with cbPoblacion.Properties.Items do
      begin
        BeginUpdate;
        try
          Clear;
          for i := 0 to FPoblaciones.Count - 1 do
            Add(FPoblaciones.Names[i]);
        finally
          EndUpdate;
        end;
      end;
    finally
      Free;
    end;
end;

procedure TfrViewDireccionEntrega.CargarProvincias;
var
  i : integer;
begin
  with TProvinciasPoblacionesController.Create do
    try
      FProvincias := DarListaProvincias;

      with cbProvincia.Properties.Items do
      begin
        BeginUpdate;
        try
          Clear;
          for i := 0 to FProvincias.Count - 1 do
            Add(FProvincias.Names[i]);
        finally
          EndUpdate;
        end;
      end;
    finally
      Free;
    end;
end;

procedure TfrViewDireccionEntrega.cbPoblacionPropertiesInitPopup(Sender: TObject);
begin
  inherited;

  ShowHourglassCursor;
  try
    FreeANDNIL(FPoblaciones);
    if not Assigned(FProvincias) then
      CargarProvincias;
    if not EsCadenaVacia(cbProvincia.Text) and (FProvincias.IndexOfName(cbProvincia.Text) <> -1) then
      CargarPoblaciones
  finally
    HideHourglassCursor;
  end;
end;

procedure TfrViewDireccionEntrega.cbProvinciaPropertiesInitPopup(Sender: TObject);
begin
  inherited;

  ShowHourglassCursor;
  try
    if not Assigned(FProvincias) then
      CargarProvincias;
  finally
    HideHourglassCursor;
  end;
end;

constructor TfrViewDireccionEntrega.Create(AOwner: TComponent);
begin
  inherited;
  FProvincias := NIL;
  FPoblaciones := NIL;
end;

destructor TfrViewDireccionEntrega.Destroy;
begin
  if Assigned(FProvincias) then
    FreeANDNIL(FProvincias);

  if Assigned(FPoblaciones) then
    FreeANDNIL(FPoblaciones);

  inherited;
end;

end.
