1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;
type
TForm1 = class(TForm)
bCreation: TButton;
Table1: TTable;
bSuppression: TButton;
ListBox1: TListBox;
procedure bCreationClick(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure bSuppressionClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{***************************************************************************
j'ai rajouté, pour les besoins de l'exemple deux boutons et une liste
- bouton création de la table qui fait appel au code fourni avec delphi
afin de créer une table à deux champs
- bouton suppression d'un champs existant qui se charge de supprimer
un champs de la table
- liste pour visualiser les champs de la table
***************************************************************************}
procedure TForm1.bCreationClick(Sender: TObject);
var
i : byte;
begin
ListBox1.Clear;
with Table1 do
begin
Active := False;
DatabaseName :='DBDEMOS';
TableType :=ttParadox;
TableName :='CustInfo';
{Ne remplace pas une table existante }
if not Table1.Exists then
begin
{Le composant Table ne doit pas être actif }
{Commence par décrire le type de table et à lui }
{donner un nom }
{Décrit ensuite les champs de la table }
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name :='Field1';
DataType :=ftInteger;
Required :=True;
end;
with AddFieldDef do
begin
Name :='Field2';
DataType :=ftString;
Size :=30;
end;
end;
{Décrit ensuite tous les index }
with IndexDefs do
begin
Clear;
{Le 1er index n'a pas de nom car il s'agit
{d'une cléprimaire Paradox }
with AddIndexDef do
begin
Name :='';
Fields :='Field1';
Options :=[ixPrimary];
end;
with AddIndexDef do
begin
Name :='Fld2Indx';
Fields :='Field2';
Options :=[ixCaseInsensitive];
end;
end;
{Appelle la méthode CreateTable pour créer la table }
CreateTable;
end;
end;
// ce que j'ai ajouté à l'exemple de delphi
{ ouverture de la table
lecture des info concernant les champs
remplissage du listbox
}
Table1.Open;
for i := 0 to Table1.FieldCount - 1 do
begin
ListBox1.Items.Add(Table1.Fields[i].FieldName);
end;
end;
// ***************************************************************************//
// ici commence le code ajouté
//***************************************************************************//
procedure TForm1.ListBox1Click(Sender: TObject);
begin
// le bouton supprimer n'est activé que s'il y a
// un élément de la liste qui est sélectionne
bSuppression.Enabled := (ListBox1.Selected[ListBox1.ItemIndex])
end;
procedure TForm1.bSuppressionClick(Sender: TObject);
var
i : byte;
nom_champ : string;
begin
with Table1.FieldDefs do
begin
nom_champ := Table1.Fields[ListBox1.ItemIndex].FieldName;
if MessageDlg('Attention vous allez supprimer le champs : [' + nom_champ + '] Continuer?',
mtConfirmation, [mbYes, mbCancel], 0) = mrYes then
begin
// récupérer le numéro du champs à supprimer
i := ListBox1.ItemIndex;
// appel de la méthode Delete pour supprimer le champs
Delete(i);
// synchroniser la liste
ListBox1.Items.Delete(i);
end
end;
// activer désactiver le bouton supprimer selon la liste
bSuppression.Enabled := (ListBox1.Items.Count > 0);
end;
procedure TForm1.FormActivate(Sender: TObject);
var
i : byte;
begin
ListBox1.Clear;
Table1.Open;
for i := 0 to Table1.FieldCount - 1 do
begin
ListBox1.Items.Add(Table1.Fields[i].FieldName);
end;
end;
end. |
Partager