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
|
unit Unit5;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;
type
TForm5 = class(TForm)
ComboBox1: TComboBox;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
DataSource2: TDataSource;
ADOTable2: TADOTable;
Procedure clicktitre(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
uses Unit4;
procedure TForm5.ComboBox1Change(Sender: TObject);
var
cat,tit:string;
i,xxx,n,y:integer;
lst_lab :array of tlabel;
begin
if y<>0 then
begin
for i := 0 to y do
begin
lst_lab[y].Destroy;
lst_lab[y].Free;
end;
end;
xxx:=85;
n:=1;
y:=0;
cat:=combobox1.Items.Text;
self.ADOQuery1.Prepared:=true;
self.ADOQuery1.SQL.Text:='select title from discution d inner join cathegorie '+
'c on d.id_cat=c.id_cat where'+cat+'=nom_cat';
self.ADOQuery1.ExecSQL;
for i:=0 to self.ADOQuery1.DataSetField.FieldCount-1 do
begin
inc(y);
setlength (lst_lab,y+1);
lst_lab[y]:= tlabel.Create(self) ;
with lst_lab[y] do
begin
Parent :=self;
caption:=self.ADOQuery1.Fields.DataSet.Fields.ToString;
top:= xxx;
left:=32;
name:='lab'+ inttostr(n);
tag:=y;
end;
self.ADOQuery1.Next;
xxx:=xxx+10;
n:=n+1;
end;
end;
procedure TForm5.FormCreate(Sender: TObject);
var i,xx:integer;
begin
if self.ADOTable2.RecordCount <>0 then
for i := 1 to self.ADOTable2.RecordCount -1 do
begin
self.ComboBox1.Items.add(self.ADOTable2.FieldValues['nom_cat'] ) ;
self.ADOTable2.Next;
end;
xx:=85 ;
for i:=1 to self.ADOTable1.RecordCount do
begin
with tlabel.Create(self)do
begin
parent:=self;
caption:=self.ADOTable1.FieldValues['titre'] ;
top:=xx;
left:=32;
onclick:=clicktitre ;
end;
self.ADOTable1.Next;
xx:=xx+10;
end;
procedure TForm5.clicktitre(sender:tobject);
begin
form4.showmodal;
end;
end;
end. |
Partager