TprxScrollBox

De Pragma Wiki
Revisión del 20:11 23 may 2025 de Luciano Carou (discusión | contribs.) (Página creada con «=Descripción= El objeto '''TprxScrollBox''' (Panel de controles de edición) es un panel con barras de desplazamiento verticales y laterales para agregar controles de edición en cualquier pantalla. . miniaturadeimagen|no|Scroll box en la pantalla de cuentas. En este ejemplo, el scrollbox es el panel sobre el que se crean los controles de edición: *Codigo. *Descripcion. *Alias. *Rubro. Cada uno de esos controles se arma…»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Descripción

El objeto TprxScrollBox (Panel de controles de edición) es un panel con barras de desplazamiento verticales y laterales para agregar controles de edición en cualquier pantalla. .

Scroll box en la pantalla de cuentas.

En este ejemplo, el scrollbox es el panel sobre el que se crean los controles de edición:

  • Codigo.
  • Descripcion.
  • Alias.
  • Rubro.

Cada uno de esos controles se arma en un panel horizontal:

  • A la izquierda se ubica el nombre del campo, cuando el campo tiene clave foránea sobre otro ese título pasa a ser un botón.
  • A la derecha se ubica el control de edición del campo.

Identidad

  • Ancestro: TScrollBox
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxScrollBox.pas

Declaración

Primero se define un record en el que se guardan los campos agregados al panel.

type
  TprxDBScrollBoxField = record
    Title: String;
    DataSource: TDataSource;
    FieldName: String;
    LogicalName: String;
    DefaultButton: Boolean;
    NombreCampo: String;
  end;

Luego se declara un record para guardar los paneles que se agregan al scrollbox. Por ejemplo, la pantalla CUENTA tiene un solo panel, pero una factura usa dos:

Dos paneles en una factura.

A la izquierda hay un panel donde se agregan los controles de edición relacionados con el tipo de comprobante, a la derecha hay un panel en el que se agregan los campos relacionados con el proveedor.

La declaración del record es:

type
  TprxScrollBoxPanel = record
    FieldName: String;
    LogicalName: String;
    NumeroPanel: Integer;
    Leido: Boolean;
		Panel: TPanel;
    Text: TStaticText;
    TextB: TprxSpeedButton;
    Button: TprxSpeedButton;
    ImageIndex: Integer;
    DefaultButton: TprxSpeedButton;
    DefaultImageIndex: Integer;
    Control: TWinControl;
	end;

Finalmente, se declara el scrollbox:

type
  TprxScrollBox = class(TScrollBox)
  private
    FTitleWidth: Integer;
    FReadOnly: Boolean;
    FQuery: TprxADOQuerySelect;
    FQueryAUX: TprxADOQuerySelect;

    FDrawImages: Boolean;

    FTitlesInBold: Boolean;
    FControlParentColor: Boolean;

    FFields: array[1..TprxDBScrollBoxFieldMax] of TprxDBScrollBoxField;
    FFieldsCount: Integer;

    FValidatingFieldNbr: Integer;
    FShortFieldNames: Boolean;
  protected
    procedure   Loaded; override;
    function    Images: TImageList;

    procedure   SendDisableMessage(aControl: TControl; aFieldName: String);

    procedure   AddControl(aFieldName: String; aControl: TWinControl; aImageIndex: Integer; aDefaultButton: Boolean = False);

    procedure   SetTitlesInBold(aValue: Boolean);
    procedure   SetControlParentColor(aValue: Boolean);
    procedure   SetReadOnly(aValue: Boolean);
    procedure   SetDrawImages(aValue: Boolean);
    procedure   SetShortFieldNames(aValue: Boolean);

    property    ValidatingFieldNbr: Integer read FValidatingFieldNbr write FValidatingFieldNbr;
  public
    Panels: array[1..TprxScrollBoxPanelMax] of TprxScrollBoxPanel;
    PanelCount: Integer;

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

    procedure   AddTitle(aFieldName: String);

    procedure   AddStringField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddFilenameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddFoldernameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);

    procedure   AddIntegerField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddFloatField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddMemoField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddComboBoxField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean);
    procedure   AddDateField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);

    procedure   AddTimeField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);
    procedure   AddBooleanField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False);

    procedure   AddTitleArray(aTitle: String);
    procedure   AddFieldArray(aDataSource: TDataSource; aFieldName: String; aLogicalName: String; aDefaultButton: Boolean = False);
    function    FindInArray(aFieldName: String): Boolean;
    procedure   ApplyArray(aFocusFirst: Boolean = False);

    function    MaxHeight: Integer;
    procedure   FocusFirstControl;
    procedure   FocusFieldName(aFieldName: String);

    procedure   EnablePanels(aEnabled: Boolean);

    function    PanelNumber(aControl: TWinControl): Integer;

    property    Query: TprxADOQuerySelect read FQuery write FQuery;
    property    QueryAUX: TprxADOQuerySelect read FQueryAUX write FQueryAUX;

    property    FieldsCount: Integer read FFieldsCount;
  published
    property    ppTitleWidth: Integer read FTitleWidth write FTitleWidth;
    property    ppTitlesInBold: Boolean read FTitlesInBold write SetTitlesInBold;
    property    ppControlParentColor: Boolean read FControlParentColor write SetControlParentColor;
    property    ppReadOnly: Boolean read FReadOnly write SetReadOnly;
    property    ppDrawImages: Boolean read FDrawImages write SetDrawImages;
    property    ppShortFieldNames: Boolean read FShortFieldNames write SetShortFieldNames;
  end;