TprxScrollBox
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. .

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:

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;