D4: faire tcheckbox données conscience avec tdbedit

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.

delphi.jpg

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

fin

fin



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.

delphi.jpg

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

fin

fin



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

D4: faire tcheckbox données conscience avec tdbedit : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation