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;