D4: faire tcheckbox données conscience avec tdbedit
moyen Simple de faire de certains des composants de bases de données. Alternative aux bases de données des cases à cocher (et composants radiobutton) qui peuvent être organisés de manière plus flexible.
Bien que la plus récente des versions de Delphi peuvent offrir le meilleur des manières d'afficher des données-connaissance des collections de cases à cocher et les radiobuttons, je suis toujours à l'aide de D4. J'ai souvent souhaité, pour des bases de données de composants qui (a) ne comprend pas la biseauté boîte de D4 du groupe de boutons radio, (b) peut être fait pour ressembler à certains formulaires papier de plus près, c) les permis plus souple des éléments du groupe, et (d) permet inhabituels de boutons ' on ' et ' off ' simultanément.
En bref, plus de flexibilité.
je pense que cette recette de cela, et il illustre également des moyens simples pour la fabrication de certains contrôles qui ne sont pas compatibles avec les données d'acquérir cette capacité par la co-exploitation avec ceux qui le sont.
le haut et Le bas des lignes de cases à cocher sont représentés dans le code Delphi ci-dessous par les classes TCheckboxCollection et TPersonalityCBCollection respectivement. Chacune de ces classes est un conteneur pour la case de descripteurs et de leurs méthodes, Cliquez sur, GetValue et SetValue, d'établir le comportement des contrôles collectivement, et s'arranger pour associer leur valeur collective avec les bases de données de contrôle et, par conséquent, avec le magasin de données.
L'ensemble supérieur de cases à cocher se comporte comme un ensemble de boutons radio. En revanche, plus que de celui de l'ensemble de la baisse des cases à cocher peut être vérifiée à la fois, et le 'RESET' case à cocher peut être utilisé pour supprimer les contrôles de tous à la fois.
Vos commentaires sont les bienvenues!
unité Part1
interface
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, StdCtrls, Masque, DBCtrls, DBTables, ExtCtrls
type
TCheckboxDescriptor = class
// masquer le comportement par défaut de la case à cocher en réponse
// pour un clic, et de simplifier la manipulation de l'objet encapsulé
privé
preClickedState: TCheckBoxState
fonction GetState: TCheckBoxState
procédure SetState ( État: TCheckBoxState )
public
case à cocher: TCheckbox
propriétés État: TCheckBoxState lire GetState écrire SetState
constructeur Créer (theCheckbox: TCheckbox)
fin
TCheckboxCollection = class
// associer des données-connaissance de la zone d'édition et de sa valeur avec une collection
// de case descripteurs comportement par défaut ressemble à des boutons radio
checkboxDescriptors: TList
handlingClick: Boolean
privé
fonction FindSender ( Sender: TObject ): TCheckboxDescriptor
fonction GetValue : string
procédure SetValue ( NewValue: string )
public
associatedDBEdit: TDBEdit
constructeur Créer ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
procédure Cliquez sur ( Sender: TObject )
propriétés Valeur: string lire la GetValue écrire SetValue
fin
TPersonalityCBCollection = class ( TCheckboxCollection )
// classe dérivée qui permet à plus d'une case à coché
// un temps, et utilise une case à cocher vous permettant de réinitialiser les autres
privé
fonction GetValue : string
procédure SetValue ( NewValue: string )
public
propriétés Valeur: string lire la GetValue écrire SetValue
procédure Cliquez sur ( Sender: TObject )
fin
TForm1 = class(TForm)
Table1: TTable
DBEdit1: TDBEdit
DataSource1: TDataSource
'CheckBox1': TCheckBox
CheckBox2: 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
procédure FormCreate(Sender: TObject)
procédure CheckBoxNAClick(Sender: TObject)
procédure DBEdit1Change(Sender: TObject)
procédure CheckBox9Click(Sender: TObject)
procédure DBEdit2Change(Sender: TObject)
privé
SeverityCBs: TCheckboxCollection
PersonalityCBs: TPersonalityCBCollection
public
fin
var
Form1: TForm1
application
{$R *.DFM}
constructeur TCheckboxDescriptor.Créer (theCheckbox: TCheckbox)
démarrer
hérité Créer
case à cocher:=theCheckbox
// conserver le design de l'état de la case à cocher
preClickedState:=theCheckbox.État
fin
fonction TCheckboxDescriptor.GetState: TCheckBoxState
démarrer
result:=preClickedState
fin
procédure TCheckboxDescriptor.SetState ( État: TCheckBoxState )
démarrer
case à cocher.État: Etat=
preClickedState: Etat=
fin
constructeur TCheckboxCollection.Créer ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
var
i: integer
démarrer
hérité Créer
associatedDBEdit:=DBEdit
checkboxDescriptors:=TList.Créer
pour i:=0 de haute ( theCheckboxes ) ne
checkboxDescriptors.Ajouter(TCheckboxDescriptor.Créer(theCheckboxes[i]))
handlingClick:=false
fin
fonction TCheckboxCollection.FindSender ( Sender: TObject ): TCheckboxDescriptor
var c: integer
checkboxDescriptor: TCheckboxDescriptor
démarrer checkboxDescriptor:=
nul pour c:=0
de checkboxDescriptors.Count - 1
ne démarrer checkboxDescriptor:=checkboxDescriptors.Les articles[c]
si checkboxDescriptor.case = Expéditeur
break
fin result:=checkboxDescriptor
fin procédure TCheckboxCollection.Cliquez sur ( Sender: TObject )
var clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
démarrer si handlingClick
quitter
handlingClick:=true
clickedCBDescriptor:=FindSender ( Expéditeur )
si clickedCBDescriptor.Etat = cbChecked
clickedCBDescriptor.Etat:=cbUnchecked
else démarrer clickedCBDescriptor.Etat:=cbChecked
pour c:=0
de checkboxDescriptors.Count - 1
ne démarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor <> clickedCBDescriptor
oneCBDescriptor.Etat:=cbUnchecked
fin fin associatedDBEdit.Source de données.Edit
associatedDBEdit.Text:=Valeur
handlingClick:=false
fin procédure TPersonalityCBCollection.Cliquez sur ( Sender: TObject )
var clickedCB: TCheckbox
clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: entier
démarrer si handlingClick
quitter
handlingClick:=true
clickedCB:=Expéditeur
TCheckbox
clickedCBDescriptor:=FindSender ( Expéditeur )
si clickedCB.Nom = 'CheckBox16'
pour c:=0
de checkboxDescriptors . Count - 1
ne démarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbUnchecked
fin else cas clickedCBDescriptor.État
de cbChecked: clickedCBDescriptor.Etat:=cbUnchecked
else clickedCBDescriptor.Etat:=cbChecked
fin associatedDBEdit.Source de données.Edit
associatedDBEdit.Text:=Valeur
handlingClick:=false
fin fonction TPersonalityCBCollection.GetValue :
string var c, modulo, resultAsInt: integer
oneCBDescriptor: TCheckboxDescriptor
démarrer resultAsInt:=0
modulo:=1
pour c:=0
de checkboxDescriptors . Comte - 2
ne démarrer si c > 0
modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor.une case à cocher.Etat = cbChecked
resultAsInt:=resultAsInt modulo
fin result:=IntToStr ( resultAsInt )
fin fonction TCheckboxCollection.GetValue :
string var c: integer
oneCBDescriptor: TCheckboxDescriptor
démarrer pour c:=0
de checkboxDescriptors . Count - 1
ne démarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor.une case à cocher.Etat = cbChecked
démarrer si oneCBDescriptor.une case à cocher.Caption = 'N/A'
result:='0'
else result:=oneCBDescriptor.une case à cocher.Légende
break
fin finfin procédure TPersonalityCBCollection.SetValue ( NewValue:
string )
var c, modulo, modèle: integer
oneCBDescriptor: TCheckboxDescriptor
démarrer si NewValue = '
quitter
si handlingClick
quitter
handlingClick:=true
modulo:=1
modèle:=StrToInt(NewValue)
pour c:=0
de checkboxDescriptors . Count - 1
ne démarrer si c = 0
modulo:=1
else modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si (
et modulo) <> 0
oneCBDescriptor.Etat:=cbChecked
else oneCBDescriptor.Etat:=cbUnchecked
fin handlingClick:=false
fin procédure TCheckboxCollection.SetValue ( NewValue:
string )
var c: integer
oneCBDescriptor: TCheckboxDescriptor
démarrer si NewValue = '
quitter
si handlingClick
quitter
handlingClick:=true
pour c:=0
de checkboxDescriptors . Count - 1
ne démarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbUnchecked
fin c:=StrToInt(NewValue)
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbChecked
handlingClick:=false
fin procédure TForm1.FormCreate(Sender: TObject)
démarrer SeverityCBs := TCheckboxCollection . Créer ( DBEdit1,
[ CheckBoxNA,CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8 ] )
PersonalityCBs:=TPersonalityCBCollection.Créer ( DBEdit2,
[ CheckBox9, CheckBox10, CheckBox11, CheckBox12, CheckBox13, CheckBox14, CheckBox15, CheckBox16 ] )
Table1.Ouvert
fin procédure TForm1.CheckBoxNAClick(Sender: TObject)
démarrer SeverityCBs.Cliquez sur(Expéditeur)
fin procédure TForm1.DBEdit1Change(Sender: TObject)
démarrer SeverityCBs.SetValue(DBEdit1.Texte)
fin procédure TForm1.CheckBox9Click(Sender: TObject)
démarrer PersonalityCBs.Cliquez sur(Expéditeur)
fin procédure TForm1.DBEdit2Change(Sender: TObject)
démarrer PersonalityCBs.SetValue(DBEdit2.Texte)
fin fin.
& nbsp
D4: faire tcheckbox donnees conscience avec tdbedit
D4: faire tcheckbox donnees conscience avec tdbedit : Plusieurs milliers de conseils pour vous faciliter la vie.
moyen Simple de faire de certains des composants de bases de donnees. Alternative aux bases de donnees des cases a cocher (et composants radiobutton) qui peuvent etre organises de maniere plus flexible.
Bien que la plus recente des versions de Delphi peuvent offrir le meilleur des manieres d'afficher des donnees-connaissance des collections de cases a cocher et les radiobuttons, je suis toujours a l'aide de D4. J'ai souvent souhaite, pour des bases de donnees de composants qui (a) ne comprend pas la biseaute boîte de D4 du groupe de boutons radio, (b) peut etre fait pour ressembler a certains formulaires papier de plus pres, c) les permis plus souple des elements du groupe, et (d) permet inhabituels de boutons ' on ' et ' off ' simultanement.
En bref, plus de flexibilite.
je pense que cette recette de cela, et il illustre egalement des moyens simples pour la fabrication de certains controles qui ne sont pas compatibles avec les donnees d'acquerir cette capacite par la co-exploitation avec ceux qui le sont.
le haut et Le bas des lignes de cases a cocher sont representes dans le code Delphi ci-dessous par les classes TCheckboxCollection et TPersonalityCBCollection respectivement. Chacune de ces classes est un conteneur pour la case de descripteurs et de leurs methodes, Cliquez sur, GetValue et SetValue, d'etablir le comportement des controles collectivement, et s'arranger pour associer leur valeur collective avec les bases de donnees de controle et, par consequent, avec le magasin de donnees.
L'ensemble superieur de cases a cocher se comporte comme un ensemble de boutons radio. En revanche, plus que de celui de l'ensemble de la baisse des cases a cocher peut etre verifiee a la fois, et le 'RESET' case a cocher peut etre utilise pour supprimer les controles de tous a la fois.
Vos commentaires sont les bienvenues!
unite Part1
interface
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, StdCtrls, Masque, DBCtrls, DBTables, ExtCtrls
type
TCheckboxDescriptor = class
// masquer le comportement par defaut de la case a cocher en reponse
// pour un clic, et de simplifier la manipulation de l'objet encapsule
prive
preClickedState: TCheckBoxState
fonction GetState: TCheckBoxState
procedure SetState ( Etat: TCheckBoxState )
public
case a cocher: TCheckbox
proprietes Etat: TCheckBoxState lire GetState ecrire SetState
constructeur Creer (theCheckbox: TCheckbox)
fin
TCheckboxCollection = class
// associer des donnees-connaissance de la zone d'edition et de sa valeur avec une collection
// de case descripteurs comportement par defaut ressemble a des boutons radio
checkboxDescriptors: TList
handlingClick: Boolean
prive
fonction FindSender ( Sender: TObject ): TCheckboxDescriptor
fonction GetValue : string
procedure SetValue ( NewValue: string )
public
associatedDBEdit: TDBEdit
constructeur Creer ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
procedure Cliquez sur ( Sender: TObject )
proprietes Valeur: string lire la GetValue ecrire SetValue
fin
TPersonalityCBCollection = class ( TCheckboxCollection )
// classe derivee qui permet a plus d'une case a coche
// un temps, et utilise une case a cocher vous permettant de reinitialiser les autres
prive
fonction GetValue : string
procedure SetValue ( NewValue: string )
public
proprietes Valeur: string lire la GetValue ecrire SetValue
procedure Cliquez sur ( Sender: TObject )
fin
TForm1 = class(TForm)
Table1: TTable
DBEdit1: TDBEdit
DataSource1: TDataSource
'CheckBox1': TCheckBox
CheckBox2: 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
procedure FormCreate(Sender: TObject)
procedure CheckBoxNAClick(Sender: TObject)
procedure DBEdit1Change(Sender: TObject)
procedure CheckBox9Click(Sender: TObject)
procedure DBEdit2Change(Sender: TObject)
prive
SeverityCBs: TCheckboxCollection
PersonalityCBs: TPersonalityCBCollection
public
fin
var
Form1: TForm1
application
{$R *.DFM}
constructeur TCheckboxDescriptor.Creer (theCheckbox: TCheckbox)
demarrer
herite Creer
case a cocher:=theCheckbox
// conserver le design de l'etat de la case a cocher
preClickedState:=theCheckbox.Etat
fin
fonction TCheckboxDescriptor.GetState: TCheckBoxState
demarrer
result:=preClickedState
fin
procedure TCheckboxDescriptor.SetState ( Etat: TCheckBoxState )
demarrer
case a cocher.Etat: Etat=
preClickedState: Etat=
fin
constructeur TCheckboxCollection.Creer ( DBEdit: TDBEdit theCheckboxes: array de TCheckbox )
var
i: integer
demarrer
herite Creer
associatedDBEdit:=DBEdit
checkboxDescriptors:=TList.Creer
pour i:=0 de haute ( theCheckboxes ) ne
checkboxDescriptors.Ajouter(TCheckboxDescriptor.Creer(theCheckboxes[i]))
handlingClick:=false
fin
fonction TCheckboxCollection.FindSender ( Sender: TObject ): TCheckboxDescriptor
var c: integer
checkboxDescriptor: TCheckboxDescriptor
demarrer checkboxDescriptor:=
nul pour c:=0
de checkboxDescriptors.Count - 1
ne demarrer checkboxDescriptor:=checkboxDescriptors.Les articles[c]
si checkboxDescriptor.case = Expediteur
break
fin result:=checkboxDescriptor
fin procedure TCheckboxCollection.Cliquez sur ( Sender: TObject )
var clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: integer
demarrer si handlingClick
quitter
handlingClick:=true
clickedCBDescriptor:=FindSender ( Expediteur )
si clickedCBDescriptor.Etat = cbChecked
clickedCBDescriptor.Etat:=cbUnchecked
else demarrer clickedCBDescriptor.Etat:=cbChecked
pour c:=0
de checkboxDescriptors.Count - 1
ne demarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor <> clickedCBDescriptor
oneCBDescriptor.Etat:=cbUnchecked
fin fin associatedDBEdit.Source de donnees.Edit
associatedDBEdit.Text:=Valeur
handlingClick:=false
fin procedure TPersonalityCBCollection.Cliquez sur ( Sender: TObject )
var clickedCB: TCheckbox
clickedCBDescriptor, oneCBDescriptor: TCheckboxDescriptor
c: entier
demarrer si handlingClick
quitter
handlingClick:=true
clickedCB:=Expediteur
TCheckbox
clickedCBDescriptor:=FindSender ( Expediteur )
si clickedCB.Nom = 'CheckBox16'
pour c:=0
de checkboxDescriptors . Count - 1
ne demarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbUnchecked
fin else cas clickedCBDescriptor.Etat
de cbChecked: clickedCBDescriptor.Etat:=cbUnchecked
else clickedCBDescriptor.Etat:=cbChecked
fin associatedDBEdit.Source de donnees.Edit
associatedDBEdit.Text:=Valeur
handlingClick:=false
fin fonction TPersonalityCBCollection.GetValue :
string var c, modulo, resultAsInt: integer
oneCBDescriptor: TCheckboxDescriptor
demarrer resultAsInt:=0
modulo:=1
pour c:=0
de checkboxDescriptors . Comte - 2
ne demarrer si c > 0
modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor.une case a cocher.Etat = cbChecked
resultAsInt:=resultAsInt modulo
fin result:=IntToStr ( resultAsInt )
fin fonction TCheckboxCollection.GetValue :
string var c: integer
oneCBDescriptor: TCheckboxDescriptor
demarrer pour c:=0
de checkboxDescriptors . Count - 1
ne demarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si oneCBDescriptor.une case a cocher.Etat = cbChecked
demarrer si oneCBDescriptor.une case a cocher.Caption = 'N/A'
result:='0'
else result:=oneCBDescriptor.une case a cocher.Legende
break
fin finfin procedure TPersonalityCBCollection.SetValue ( NewValue:
string )
var c, modulo, modele: integer
oneCBDescriptor: TCheckboxDescriptor
demarrer si NewValue = '
quitter
si handlingClick
quitter
handlingClick:=true
modulo:=1
modele:=StrToInt(NewValue)
pour c:=0
de checkboxDescriptors . Count - 1
ne demarrer si c = 0
modulo:=1
else modulo:=modulo * 2
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
si (
et modulo) <> 0
oneCBDescriptor.Etat:=cbChecked
else oneCBDescriptor.Etat:=cbUnchecked
fin handlingClick:=false
fin procedure TCheckboxCollection.SetValue ( NewValue:
string )
var c: integer
oneCBDescriptor: TCheckboxDescriptor
demarrer si NewValue = '
quitter
si handlingClick
quitter
handlingClick:=true
pour c:=0
de checkboxDescriptors . Count - 1
ne demarrer oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbUnchecked
fin c:=StrToInt(NewValue)
oneCBDescriptor:=checkboxDescriptors.Les articles[c]
oneCBDescriptor.Etat:=cbChecked
handlingClick:=false
fin procedure TForm1.FormCreate(Sender: TObject)
demarrer SeverityCBs := TCheckboxCollection . Creer ( DBEdit1,
[ CheckBoxNA,CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8 ] )
PersonalityCBs:=TPersonalityCBCollection.Creer ( DBEdit2,
[ CheckBox9, CheckBox10, CheckBox11, CheckBox12, CheckBox13, CheckBox14, CheckBox15, CheckBox16 ] )
Table1.Ouvert
fin procedure TForm1.CheckBoxNAClick(Sender: TObject)
demarrer SeverityCBs.Cliquez sur(Expediteur)
fin procedure TForm1.DBEdit1Change(Sender: TObject)
demarrer SeverityCBs.SetValue(DBEdit1.Texte)
fin procedure TForm1.CheckBox9Click(Sender: TObject)
demarrer PersonalityCBs.Cliquez sur(Expediteur)
fin procedure TForm1.DBEdit2Change(Sender: TObject)
demarrer PersonalityCBs.SetValue(DBEdit2.Texte)
fin fin.
& nbsp
D4: faire tcheckbox données conscience avec tdbedit
By commentfaire
D4: faire tcheckbox données conscience avec tdbedit : Plusieurs milliers de conseils pour vous faciliter la vie.