Diferencia entre revisiones de «TprxScrollBox»
(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…») |
Sin resumen de edición |
||
Línea 142: | Línea 142: | ||
end; | end; | ||
</pre> | </pre> | ||
=Implementación= | |||
===procedure AddControl(aFieldName: String; aControl: TWinControl; aImageIndex: Integer; aDefaultButton: Boolean = False)=== | |||
Agrega un control de edición al panel activo, los argumentos son: | |||
*aFieldName es el nombre del campo. | |||
*aControl es el control de edición que estamos agregando. | |||
*Índice de la imágen, si la usa. | |||
*aDefaultButton indica si debe agregarle un botón a la derecha del control de edición. | |||
Esta función es usada desde dentro del mismo componente. | |||
===procedure AddTitle(aFieldName: String)=== | |||
Agrega un título al panel, por ejemplo: | |||
[[Archivo:20250523 1536 ADD TITLE.png|miniaturadeimagen|no|Títulos en la pantalla de artículos.]] | |||
===procedure AddStringField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBEdit]] para un campo de tipo VARCHAR, usa el procedimiento AddControl. | |||
===procedure AddFilenameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBEdit]] para un campo con comportamiento FILENAME, es decir que permite elegir el nombre de un archivo. | |||
===procedure AddFoldernameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBEdit]] para un campo con atributo igual a pFOLDERNAME, es decir que permite elegir el nombre de una carpeta. | |||
===procedure AddIntegerField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBEdit]] para un campo de tipo enteros. | |||
===procedure AddFloatField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBEdit]] para un campo de tipo FLOAT o NUMERIC. | |||
===procedure AddMemoField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición [[TprxDBMemo]] para un campo de tipo MEMO. | |||
===procedure AddComboBoxField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean)=== | |||
Agrega un control de edición [[TprxDBComboBox]] para un campo. | |||
===procedure AddDateField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control [[TprxDBEditDateTime]]de edición de fechas. | |||
===procedure AddTimeField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control [[TprxDBEditDateTime]] de edición de tipo hora. | |||
===procedure AddBooleanField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)=== | |||
Agrega un control de edición {{TprxDBCheckBox]] para un campo de tipo BIT. |
Revisión del 20:46 23 may 2025
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;
Implementación
procedure AddControl(aFieldName: String; aControl: TWinControl; aImageIndex: Integer; aDefaultButton: Boolean = False)
Agrega un control de edición al panel activo, los argumentos son:
- aFieldName es el nombre del campo.
- aControl es el control de edición que estamos agregando.
- Índice de la imágen, si la usa.
- aDefaultButton indica si debe agregarle un botón a la derecha del control de edición.
Esta función es usada desde dentro del mismo componente.
procedure AddTitle(aFieldName: String)
Agrega un título al panel, por ejemplo:

procedure AddStringField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBEdit para un campo de tipo VARCHAR, usa el procedimiento AddControl.
procedure AddFilenameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBEdit para un campo con comportamiento FILENAME, es decir que permite elegir el nombre de un archivo.
procedure AddFoldernameField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBEdit para un campo con atributo igual a pFOLDERNAME, es decir que permite elegir el nombre de una carpeta.
procedure AddIntegerField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBEdit para un campo de tipo enteros.
procedure AddFloatField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBEdit para un campo de tipo FLOAT o NUMERIC.
procedure AddMemoField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición TprxDBMemo para un campo de tipo MEMO.
procedure AddComboBoxField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean)
Agrega un control de edición TprxDBComboBox para un campo.
procedure AddDateField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control TprxDBEditDateTimede edición de fechas.
procedure AddTimeField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control TprxDBEditDateTime de edición de tipo hora.
procedure AddBooleanField(aDataSource: TDataSource; aFieldName: String; DefaultButton: Boolean = False)
Agrega un control de edición {{TprxDBCheckBox]] para un campo de tipo BIT.