D4: hacer tcheckbox de datos cuenta con tdbedit
Simple manera de hacer que algunos de los componentes de datos. Alternativa de datos de casillas de verificación (y botones de radio) que se pueden organizar de manera más flexible.
a Pesar de que las versiones más recientes de Delphi pueden ofrecer mejores formas de visualización de datos-conocimiento de las colecciones de casillas de verificación y botones de radio, yo sigo con D4. Muchas veces he deseado un data-aware componente que (a) no incluye el biselado cuadro de D4 del grupo de botones de radio, (b) puede ser hecho para parecerse a algunos de los formularios en papel, más de cerca, (c) permisos más flexible disposición de los elementos en el grupo, y (d) los permisos de patrones inusuales de botones de 'on' y 'off' simultáneamente.
En resumen, más de flexibilidad.
creo que esta receta no esta, y también ilustra simples medios para la fabricación de algunos controles que no son compatibles con datos de adquirir esta capacidad a través de la cooperación con los que son.
La parte superior e inferior de las filas de casillas de verificación están representados en el código de Delphi a continuación por las clases TCheckboxCollection y TPersonalityCBCollection respectivamente. Cada una de estas clases es un contenedor de casilla de verificación de los descriptores y sus métodos, haga Clic en, GetValue y SetValue, establecer el comportamiento de los controles colectivamente, y organizar a asociar su valor colectivo asociada con el control de datos y, por lo tanto, con el almacén de datos.
La parte superior del conjunto de casillas de verificación se comporta como un conjunto de botones de radio. En contraste, más de uno de los de menor casillas de verificación puede comprobar a la vez, y el 'RESET' casilla de verificación, puede ser utilizado para eliminar los cheques de todo a la vez.
Sus comentarios son bienvenidos!
unidad Unit1
interfaz
usa
Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de diálogo,
Db, StdCtrls, Máscara, DBCtrls, DBTables, ExtCtrls
tipo
TCheckboxDescriptor = clase
// ocultar el comportamiento por defecto de la casilla de verificación en respuesta
// a un clic, y simplificar la manipulación de la encapsulado objeto
privada
preClickedState: TCheckBoxState
función GetState: TCheckBoxState
procedimiento SetState ( Estado: TCheckBoxState )
público
casilla de verificación: TCheckbox
propiedad Estado: TCheckBoxState leer GetState escribir SetState
constructor Crear (theCheckbox: TCheckbox)
fin
TCheckboxCollection = clase
// asociar una base de datos-consciente cuadro de edición y su valor con una colección
// de la casilla de verificación de los descriptores de comportamiento por defecto similar a los botones de la radio
checkboxDescriptors: TList
handlingClick: Boolean
privada
función FindSender ( Sender: TObject ): TCheckboxDescriptor
función GetValue : cadena
procedimiento SetValue ( NewValue: cadena )
público
associatedDBEdit: TDBEdit
constructor Crear ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
procedimiento haga Clic en ( Sender: TObject )
propiedad Valor: cadena leer GetValue escribir SetValue
fin
TPersonalityCBCollection = clase ( TCheckboxCollection )
// clase derivada que permite que más de una casilla de verificación para ser revisadas en el
// un tiempo, y utiliza una casilla de verificación para el restablecimiento de los demás
privada
función GetValue : cadena
procedimiento SetValue ( NewValue: cadena )
público
propiedad Valor: cadena leer GetValue escribir SetValue
procedimiento haga Clic en ( Sender: TObject )
fin
TForm1 = clase(TForm)
Tabla1: TTable
DBEdit1: TDBEdit
DataSource1: TDataSource
CheckBox1: TCheckBox
2: TCheckBox
CheckBox3: TCheckBox
CheckBox4: TCheckBox
CheckBox5: TCheckBox
CheckBox6: TCheckBox
CheckBox7: TCheckBox
CheckBox8: TCheckBox
CheckBoxNA: TCheckBox
CheckBox9: TCheckBox
CheckBox10: TCheckBox
CheckBox11: TCheckBox
CheckBox12: TCheckBox
CheckBox13: TCheckBox
CheckBox14: TCheckBox
CheckBox15: TCheckBox
CheckBox16: TCheckBox
DBNavigator1: TDBNavigator
Label1: TLabel
Label2: TLabel
Label3: TLabel
Shape1: TShape
Label4: TLabel
DBEdit2: TDBEdit
procedimiento FormCreate(Sender: TObject)
procedimiento CheckBoxNAClick(Sender: TObject)
procedimiento DBEdit1Change(Sender: TObject)
procedimiento CheckBox9Click(Sender: TObject)
procedimiento DBEdit2Change(Sender: TObject)
privada
SeverityCBs: TCheckboxCollection
PersonalityCBs: TPersonalityCBCollection
público
fin
var
Form1: TForm1
aplicación
{$R *.DFM}
constructor TCheckboxDescriptor.Crear (theCheckbox: TCheckbox)
begin
heredado Crear
casilla de verificación:=theCheckbox
// conservar el estado de diseño de la casilla de verificación
preClickedState:=theCheckbox.Estado
fin
función TCheckboxDescriptor.GetState: TCheckBoxState
begin
resultado:=preClickedState
fin
procedimiento TCheckboxDescriptor.SetState ( Estado: TCheckBoxState )
begin
casilla de verificación.Estado:=Estado
preClickedState:=Estado
fin
constructor TCheckboxCollection.Crear ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
var
i: integer
begin
heredado Crear
associatedDBEdit:=DBEdit
checkboxDescriptors:=TList.Crear
para i:=0 para alto ( theCheckboxes ) hacer
checkboxDescriptors.Agregar(TCheckboxDescriptor.Crear(theCheckboxes[i]))
handlingClick:=false
fin
función TCheckboxCollection.FindSender ( Sender: TObject ): TCheckboxDescriptor
var c: integer
checkboxDescriptor: TCheckboxDescriptor
begin checkboxDescriptor:=
nil para c:=0
para checkboxDescriptors.Count - 1
hacer begin checkboxDescriptor:=checkboxDescriptors.Los elementos[c]
si checkboxDescriptor.casilla de verificación = Remitente
entonces break
fin resultado:=checkboxDescriptor
fin procedimiento TCheckboxCollection.Haga clic en ( Sender: TObject )
var clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
begin si handlingClick
entonces salir
handlingClick:=true
clickedCBDescriptor:=FindSender ( Remitente )
si clickedCBDescriptor.Estado = cbChecked
entonces clickedCBDescriptor.Estado:=cbUnchecked
persona begin clickedCBDescriptor.Estado:=cbChecked
para c:=0
para checkboxDescriptors.Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor <> clickedCBDescriptor
entonces oneCBDescriptor.Estado:=cbUnchecked
fin fin associatedDBEdit.Origen de datos.Editar
associatedDBEdit.Texto:=Valor
handlingClick:=false
fin procedimiento TPersonalityCBCollection.Haga clic en ( Sender: TObject )
var clickedCB: TCheckbox
clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
begin si handlingClick
entonces salir
handlingClick:=true
clickedCB:=Remitente
como TCheckbox
clickedCBDescriptor:=FindSender ( Remitente )
si clickedCB.Nombre = 'CheckBox16'
entonces para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbUnchecked
fin persona caso clickedCBDescriptor.Estado de
de cbChecked: clickedCBDescriptor.Estado:=cbUnchecked
persona clickedCBDescriptor.Estado:=cbChecked
fin associatedDBEdit.Origen de datos.Editar
associatedDBEdit.Texto:=Valor
handlingClick:=false
fin función TPersonalityCBCollection.GetValue :
cadena var c, modulo, resultAsInt: integer
oneCBDescriptor: TCheckboxDescriptor
begin resultAsInt:=0
modulo:=1
para c:=0
para checkboxDescriptors . Conde - 2
hacer begin si c > 0
entonces modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor.casilla de verificación.Estado = cbChecked
entonces resultAsInt:=resultAsInt modulo
fin resultado:=IntToStr ( resultAsInt )
fin función TCheckboxCollection.GetValue :
cadena var c: integer
oneCBDescriptor: TCheckboxDescriptor
begin para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor.casilla de verificación.Estado = cbChecked
entonces begin si oneCBDescriptor.casilla de verificación.Caption = 'N/a'
resultado:='0'
persona resultado:=oneCBDescriptor.casilla de verificación.Título
break
fin finfin procedimiento TPersonalityCBCollection.SetValue ( NewValue:
cadena )
var c, modulo, patrón: integer
oneCBDescriptor: TCheckboxDescriptor
begin si NewValue = '
salir
si handlingClick
entonces salir
handlingClick:=true
modulo:=1
patrón:=StrToInt(NewValue)
para c:=0
para checkboxDescriptors . Count - 1
hacer begin si c = 0
entonces modulo:=1 de
persona modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si (patrón de
y de módulo) <> 0
entonces oneCBDescriptor.Estado:=cbChecked
persona oneCBDescriptor.Estado:=cbUnchecked
fin handlingClick:=false
fin procedimiento TCheckboxCollection.SetValue ( NewValue:
cadena )
var c: integer
oneCBDescriptor: TCheckboxDescriptor
begin si NewValue = '
salir
si handlingClick
entonces salir
handlingClick:=true
para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbUnchecked
fin c:=StrToInt(NewValue)
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbChecked
handlingClick:=false
fin procedimiento TForm1.FormCreate(Sender: TObject)
begin SeverityCBs := TCheckboxCollection . Crear ( DBEdit1,
[ CheckBoxNA,las casillas 1, 2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8 ] )
PersonalityCBs:=TPersonalityCBCollection.Crear ( DBEdit2,
[ CheckBox9, CheckBox10, CheckBox11, CheckBox12, CheckBox13, CheckBox14, CheckBox15, CheckBox16 ] )
Tabla1.Abierto
fin procedimiento TForm1.CheckBoxNAClick(Sender: TObject)
begin SeverityCBs.Haga clic en(Remitente)
fin procedimiento TForm1.DBEdit1Change(Sender: TObject)
begin SeverityCBs.SetValue(DBEdit1.De texto)
fin procedimiento TForm1.CheckBox9Click(Sender: TObject)
begin PersonalityCBs.Haga clic en(Remitente)
fin procedimiento TForm1.DBEdit2Change(Sender: TObject)
begin PersonalityCBs.SetValue(DBEdit2.De texto)
fin fin.
& nbsp
D4: hacer tcheckbox de datos cuenta con tdbedit
D4: hacer tcheckbox de datos cuenta con tdbedit : Multi-millones de consejos para hacer su vida mas facil.
Simple manera de hacer que algunos de los componentes de datos. Alternativa de datos de casillas de verificacion (y botones de radio) que se pueden organizar de manera mas flexible.
a Pesar de que las versiones mas recientes de Delphi pueden ofrecer mejores formas de visualizacion de datos-conocimiento de las colecciones de casillas de verificacion y botones de radio, yo sigo con D4. Muchas veces he deseado un data-aware componente que (a) no incluye el biselado cuadro de D4 del grupo de botones de radio, (b) puede ser hecho para parecerse a algunos de los formularios en papel, mas de cerca, (c) permisos mas flexible disposicion de los elementos en el grupo, y (d) los permisos de patrones inusuales de botones de 'on' y 'off' simultaneamente.
En resumen, mas de flexibilidad.
creo que esta receta no esta, y tambien ilustra simples medios para la fabricacion de algunos controles que no son compatibles con datos de adquirir esta capacidad a traves de la cooperacion con los que son.
La parte superior e inferior de las filas de casillas de verificacion estan representados en el codigo de Delphi a continuacion por las clases TCheckboxCollection y TPersonalityCBCollection respectivamente. Cada una de estas clases es un contenedor de casilla de verificacion de los descriptores y sus metodos, haga Clic en, GetValue y SetValue, establecer el comportamiento de los controles colectivamente, y organizar a asociar su valor colectivo asociada con el control de datos y, por lo tanto, con el almacen de datos.
La parte superior del conjunto de casillas de verificacion se comporta como un conjunto de botones de radio. En contraste, mas de uno de los de menor casillas de verificacion puede comprobar a la vez, y el 'RESET' casilla de verificacion, puede ser utilizado para eliminar los cheques de todo a la vez.
Sus comentarios son bienvenidos!
unidad Unit1
interfaz
usa
Windows, Messages, SysUtils, Classes, Graphics, Controles, Formularios, cuadros de dialogo,
Db, StdCtrls, Mascara, DBCtrls, DBTables, ExtCtrls
tipo
TCheckboxDescriptor = clase
// ocultar el comportamiento por defecto de la casilla de verificacion en respuesta
// a un clic, y simplificar la manipulacion de la encapsulado objeto
privada
preClickedState: TCheckBoxState
funcion GetState: TCheckBoxState
procedimiento SetState ( Estado: TCheckBoxState )
publico
casilla de verificacion: TCheckbox
propiedad Estado: TCheckBoxState leer GetState escribir SetState
constructor Crear (theCheckbox: TCheckbox)
fin
TCheckboxCollection = clase
// asociar una base de datos-consciente cuadro de edicion y su valor con una coleccion
// de la casilla de verificacion de los descriptores de comportamiento por defecto similar a los botones de la radio
checkboxDescriptors: TList
handlingClick: Boolean
privada
funcion FindSender ( Sender: TObject ): TCheckboxDescriptor
funcion GetValue : cadena
procedimiento SetValue ( NewValue: cadena )
publico
associatedDBEdit: TDBEdit
constructor Crear ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
procedimiento haga Clic en ( Sender: TObject )
propiedad Valor: cadena leer GetValue escribir SetValue
fin
TPersonalityCBCollection = clase ( TCheckboxCollection )
// clase derivada que permite que mas de una casilla de verificacion para ser revisadas en el
// un tiempo, y utiliza una casilla de verificacion para el restablecimiento de los demas
privada
funcion GetValue : cadena
procedimiento SetValue ( NewValue: cadena )
publico
propiedad Valor: cadena leer GetValue escribir SetValue
procedimiento haga Clic en ( Sender: TObject )
fin
TForm1 = clase(TForm)
Tabla1: TTable
DBEdit1: TDBEdit
DataSource1: TDataSource
CheckBox1: TCheckBox
2: TCheckBox
CheckBox3: TCheckBox
CheckBox4: TCheckBox
CheckBox5: TCheckBox
CheckBox6: TCheckBox
CheckBox7: TCheckBox
CheckBox8: TCheckBox
CheckBoxNA: TCheckBox
CheckBox9: TCheckBox
CheckBox10: TCheckBox
CheckBox11: TCheckBox
CheckBox12: TCheckBox
CheckBox13: TCheckBox
CheckBox14: TCheckBox
CheckBox15: TCheckBox
CheckBox16: TCheckBox
DBNavigator1: TDBNavigator
Label1: TLabel
Label2: TLabel
Label3: TLabel
Shape1: TShape
Label4: TLabel
DBEdit2: TDBEdit
procedimiento FormCreate(Sender: TObject)
procedimiento CheckBoxNAClick(Sender: TObject)
procedimiento DBEdit1Change(Sender: TObject)
procedimiento CheckBox9Click(Sender: TObject)
procedimiento DBEdit2Change(Sender: TObject)
privada
SeverityCBs: TCheckboxCollection
PersonalityCBs: TPersonalityCBCollection
publico
fin
var
Form1: TForm1
aplicacion
{$R *.DFM}
constructor TCheckboxDescriptor.Crear (theCheckbox: TCheckbox)
begin
heredado Crear
casilla de verificacion:=theCheckbox
// conservar el estado de diseño de la casilla de verificacion
preClickedState:=theCheckbox.Estado
fin
funcion TCheckboxDescriptor.GetState: TCheckBoxState
begin
resultado:=preClickedState
fin
procedimiento TCheckboxDescriptor.SetState ( Estado: TCheckBoxState )
begin
casilla de verificacion.Estado:=Estado
preClickedState:=Estado
fin
constructor TCheckboxCollection.Crear ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
var
i: integer
begin
heredado Crear
associatedDBEdit:=DBEdit
checkboxDescriptors:=TList.Crear
para i:=0 para alto ( theCheckboxes ) hacer
checkboxDescriptors.Agregar(TCheckboxDescriptor.Crear(theCheckboxes[i]))
handlingClick:=false
fin
funcion TCheckboxCollection.FindSender ( Sender: TObject ): TCheckboxDescriptor
var c: integer
checkboxDescriptor: TCheckboxDescriptor
begin checkboxDescriptor:=
nil para c:=0
para checkboxDescriptors.Count - 1
hacer begin checkboxDescriptor:=checkboxDescriptors.Los elementos[c]
si checkboxDescriptor.casilla de verificacion = Remitente
entonces break
fin resultado:=checkboxDescriptor
fin procedimiento TCheckboxCollection.Haga clic en ( Sender: TObject )
var clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
begin si handlingClick
entonces salir
handlingClick:=true
clickedCBDescriptor:=FindSender ( Remitente )
si clickedCBDescriptor.Estado = cbChecked
entonces clickedCBDescriptor.Estado:=cbUnchecked
persona begin clickedCBDescriptor.Estado:=cbChecked
para c:=0
para checkboxDescriptors.Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor <> clickedCBDescriptor
entonces oneCBDescriptor.Estado:=cbUnchecked
fin fin associatedDBEdit.Origen de datos.Editar
associatedDBEdit.Texto:=Valor
handlingClick:=false
fin procedimiento TPersonalityCBCollection.Haga clic en ( Sender: TObject )
var clickedCB: TCheckbox
clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
begin si handlingClick
entonces salir
handlingClick:=true
clickedCB:=Remitente
como TCheckbox
clickedCBDescriptor:=FindSender ( Remitente )
si clickedCB.Nombre = 'CheckBox16'
entonces para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbUnchecked
fin persona caso clickedCBDescriptor.Estado de
de cbChecked: clickedCBDescriptor.Estado:=cbUnchecked
persona clickedCBDescriptor.Estado:=cbChecked
fin associatedDBEdit.Origen de datos.Editar
associatedDBEdit.Texto:=Valor
handlingClick:=false
fin funcion TPersonalityCBCollection.GetValue :
cadena var c, modulo, resultAsInt: integer
oneCBDescriptor: TCheckboxDescriptor
begin resultAsInt:=0
modulo:=1
para c:=0
para checkboxDescriptors . Conde - 2
hacer begin si c > 0
entonces modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor.casilla de verificacion.Estado = cbChecked
entonces resultAsInt:=resultAsInt modulo
fin resultado:=IntToStr ( resultAsInt )
fin funcion TCheckboxCollection.GetValue :
cadena var c: integer
oneCBDescriptor: TCheckboxDescriptor
begin para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si oneCBDescriptor.casilla de verificacion.Estado = cbChecked
entonces begin si oneCBDescriptor.casilla de verificacion.Caption = 'N/a'
resultado:='0'
persona resultado:=oneCBDescriptor.casilla de verificacion.Titulo
break
fin finfin procedimiento TPersonalityCBCollection.SetValue ( NewValue:
cadena )
var c, modulo, patron: integer
oneCBDescriptor: TCheckboxDescriptor
begin si NewValue = '
salir
si handlingClick
entonces salir
handlingClick:=true
modulo:=1
patron:=StrToInt(NewValue)
para c:=0
para checkboxDescriptors . Count - 1
hacer begin si c = 0
entonces modulo:=1 de
persona modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
si (patron de
y de modulo) <> 0
entonces oneCBDescriptor.Estado:=cbChecked
persona oneCBDescriptor.Estado:=cbUnchecked
fin handlingClick:=false
fin procedimiento TCheckboxCollection.SetValue ( NewValue:
cadena )
var c: integer
oneCBDescriptor: TCheckboxDescriptor
begin si NewValue = '
salir
si handlingClick
entonces salir
handlingClick:=true
para c:=0
para checkboxDescriptors . Count - 1
hacer begin oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbUnchecked
fin c:=StrToInt(NewValue)
oneCBDescriptor:=checkboxDescriptors.Los elementos[c]
oneCBDescriptor.Estado:=cbChecked
handlingClick:=false
fin procedimiento TForm1.FormCreate(Sender: TObject)
begin SeverityCBs := TCheckboxCollection . Crear ( DBEdit1,
[ CheckBoxNA,las casillas 1, 2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8 ] )
PersonalityCBs:=TPersonalityCBCollection.Crear ( DBEdit2,
[ CheckBox9, CheckBox10, CheckBox11, CheckBox12, CheckBox13, CheckBox14, CheckBox15, CheckBox16 ] )
Tabla1.Abierto
fin procedimiento TForm1.CheckBoxNAClick(Sender: TObject)
begin SeverityCBs.Haga clic en(Remitente)
fin procedimiento TForm1.DBEdit1Change(Sender: TObject)
begin SeverityCBs.SetValue(DBEdit1.De texto)
fin procedimiento TForm1.CheckBox9Click(Sender: TObject)
begin PersonalityCBs.Haga clic en(Remitente)
fin procedimiento TForm1.DBEdit2Change(Sender: TObject)
begin PersonalityCBs.SetValue(DBEdit2.De texto)
fin fin.
& nbsp
D4: hacer tcheckbox de datos cuenta con tdbedit
By Consejos Y Trucos
D4: hacer tcheckbox de datos cuenta con tdbedit : Multi-millones de consejos para hacer su vida más fácil.