J'avais envie d'un petit programme plus sympa que ma bdd access, alors il y a 2 semaines je me suis lancé a essayer Delphi (je n'y avais jamais touché auparavant, j'etais resté a la bonne vieille epoque du basic, et un peu de Flash).
Je me suis mis a lire quelques tuto, j'ai telechargé et essayé de comprendre avec acharnement certaines sources postées sur ce site, beaucoup de recherches sur internet, mais surtout une grosse dose de reflexion et de logique.
Je suis finalement arrivé à faire ce petit programme qui regroupe pas mal de petites choses interessantes pour les autres débutants, avec entre autres :
- Des requetes ADO,
- Resultats dans le dbgrid affiché par ordre alphabetique,
- Ajout, suppression et modifications sur des edit, memo, combobox et checkbox,
- Interception de la touche Entrée dans le Edit de recherche,
- Boite de dialogue pour confirmer une suppression, ...
Source / Exemple :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, Mask, DBCtrls, ExtCtrls, ImgList,
Buttons, GIFImg, ExtDlgs, JPEG;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
BtnApropos: TButton;
GroupActions: TGroupBox;
BtnMesJeux: TBitBtn;
Label8: TLabel;
BtnAjout: TBitBtn;
BtnModif: TBitBtn;
BtnDelete: TBitBtn;
BtnQuitter: TBitBtn;
GroupFiche: TGroupBox;
DB_numero: TDBEdit;
DBCheckBox1: TDBCheckBox;
LabelNumero: TLabel;
LabelRegion: TLabel;
LabelSauv: TLabel;
LabelTaille: TLabel;
LabelCat: TLabel;
LabelURL: TLabel;
DB_region: TDBEdit;
DB_sauv: TDBEdit;
DB_taille: TDBEdit;
DB_categorie: TDBEdit;
DB_url: TDBMemo;
DB_titre: TDBMemo;
RadioGroup1: TRadioGroup;
Edit1: TEdit;
BtnChercher: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure BtnMesJeuxClick(Sender: TObject);
procedure BtnChercherClick(Sender: TObject);
procedure BtnAjoutClick(Sender: TObject);
procedure BtnModifClick(Sender: TObject);
procedure BtnDeleteClick(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure BtnQuitterClick(Sender: TObject);
procedure BtnAproposClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
uses Unit2, Apropos, uDm;
{$R *.dfm}
procedure TForm1.BtnMesJeuxClick(Sender: TObject);
begin
With Dm.AdoQuery1 do
begin
SQL.Clear;
SQL.Add('Select * From Jeux Where Possède=True');
SQL.Add ('Order by Titre asc');
Open;
end;
end;
procedure TForm1.BtnAproposClick(Sender: TObject);
begin
form3.show;
end;
procedure TForm1.BtnChercherClick(Sender: TObject);
begin //Recherche si le bouton Radio "par titres" est selectionné
Dm.AdoQuery1.SQL.Clear;
if RadioGroup1.Buttons[0].checked=true then with Dm.AdoQuery1 do begin
SQL.Add('Select * From Jeux Where Titre Like '+QuotedStr('%'+Edit1.Text+'%'));
SQL.Add ('Order by Titre asc');
Open;
end;
begin //Recherche si le bouton radio "par numero" est selectionné
if RadioGroup1.Buttons[1].Checked=true then with Dm.AdoQuery1 do begin
SQL.Add('Select * from Jeux Where Numero Like '+QuotedStr(Edit1.Text));
Open;
end;
{Si le SQL ne trouve aucun enregistrement alors affichier le message}
if Dm.AdoQuery1.RecordCount<>0 then show else ShowMessage('Aucun jeu trouvé');
edit1.clear;
end;
end;
procedure TForm1.BtnAjoutClick(Sender: TObject);
begin
with form2 do
begin
// Mettre une valeur vide dans chaque champs à remplir
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Memo1.Text:='';
ComboBox1.Text:='';
ComboBox2.Text:='';
ComboBox3.Text:='';
CheckBox1.Checked:=False;
// Je nomme la nouvelle fenêtre "nouvelle fiche" car le bouton de validation
// réagira différement suivant son nom
caption:='Nouvelle Fiche';
showmodal
end;
end;
procedure TForm1.BtnModifClick(Sender: TObject);
begin
with form2 do
begin
// la même fenêtre que précedemment est appelée, mais cette fois-ci on l'appelera "Modifier"
// Cette fois-ci on ne demandera pas à avoir des champs vide, mais de reprendre les
// champs de la fiche consultée
Caption:='Modifier';
Edit1.Text:=Dm.ADOQuery1.fieldbyname('Numero').AsString;
Edit2.Text:=Dm.ADOQuery1.fieldbyname('Titre').AsString;
ComboBox1.Text:=Dm.ADOQuery1.fieldbyname('Region').AsString;
ComboBox2.Text:=Dm.ADOQuery1.fieldbyname('Sauvegarde').AsString;
combobox3.Text:=Dm.ADOQuery1.fieldbyname('Taille').AsString;
Edit3.Text:=Dm.ADOQuery1.fieldbyname('Catégorie').AsString;
Memo1.Text:=Dm.ADOQuery1.fieldbyname('URL').Value;
CheckBox1.Checked:=Dm.ADOQuery1.fieldbyname('Possède').Value;
Show;
end;
end;
procedure TForm1.BtnQuitterClick(Sender: TObject);
begin
close;
end;
procedure TForm1.BtnDeleteClick(Sender: TObject);
begin
// Le bloc case-of regarde la valeur renvoyée par la boîte de dialogue, puis
// vérifie s'il s'agit de mrOK ou de mrCanceled, et effectue l'instruction adaptée
case MessageDlg('Voulez-vous supprimer cette fiche?',mtConfirmation, mbOKCancel, 0) of
mrOK: Dm.ADOQuery1.Delete;
mrCancel: Close;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Dm.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('Select * From Jeux Where Titre Like '+QuotedStr('%'+Edit1.Text+'%'));
Open;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then // #13 = code de la touche Entrée
begin
BtnChercherClick(Sender);
// ainsi, la touche Entrée commande
//le chargement de la page
key:=#0; // pour éviter d'entendre un son
end;
end;
end.
===================================================================
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Mask, Buttons, ExtCtrls, ExtDlgs;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
CheckBox1: TCheckBox;
BtnValider: TBitBtn;
BtnSupprimer: TBitBtn;
Memo1: TMemo;
procedure BtnSupprimerClick(Sender: TObject);
procedure BtnValiderClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form2: TForm2;
implementation
uses Unit1, uDm;
{$R *.dfm}
procedure TForm2.BtnValiderClick(Sender: TObject);
begin
if form2.caption='Nouvelle Fiche' then // Si la fenetre s'appelle "Nouvelle fiche"
Dm.ADOQuery1.Insert // on ajoute une nouvelle entrée dans notre BDD
else // Sinon (donc par défaut c'est qu'elle s'appelle "Modifier"
Dm.ADOQuery1.edit; // on remplace chaque champs de la Form1 par les valeurs qu'on a mis
Dm.ADOQuery1.FieldByName('Numero').Value:=edit1.Text;
Dm.ADOQuery1.FieldByName('Titre').Value:=edit2.text;
Dm.ADOQuery1.fieldbyname('Region').value:=combobox1.text;
Dm.ADOQuery1.fieldbyname('Sauvegarde').value:=combobox2.text;
Dm.ADOQuery1.fieldbyname('Taille').value:=combobox3.text;
Dm.ADOQuery1.FieldByName('Catégorie').Value:=edit3.Text;
Dm.ADOQuery1.fieldbyname('URL').Value:=Memo1.Text;
Dm.ADOQuery1.fieldbyname('Possède').Value:=CheckBox1.Checked;
Dm.ADOQuery1.Post;
close;
end;
procedure TForm2.BtnSupprimerClick(Sender: TObject);
begin
close;
end;
end.
Conclusion :
2 semaines de travail qui m'ont énormément apporté, et que je désire partager avec les autres débutants qui cherchent la syntaxe de certains codes. Je compte faire encore evoluer ce petit programme afin d'aller encore plus loin dans mes connaissances
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.