Annuaire v1.0.0

Soyez le premier à donner votre avis sur cette source.

Vue 8 754 fois - Téléchargée 2 200 fois

Description

Premier micro-projet concernant la base de données intégrée MyBase.
Programmation d'un annuaire téléphonique avec ajout, modification et effacement des enregistrements et classement alphabétique automatique.
Fourni avec le source, un tutorial sur la création d'une base MyBase avec l'IDE et la relation avec des composants TDBEdit et TDBMemo.

Source / Exemple :



  • {===============================================================================
  • Code Source : BEAUMONT Christophe
  • Version : 1.0.1
  • Date : 04 Mars 2010
*
  • Micro-projet 01 - Exemple d'utilisation de MyBase, une base de données reposant
  • sur le composant TClientDataSet et permettant de développer des applications
  • pour accéder à des données de faible taille en locale. De plus MyBase est très
  • léger à déployer puisqu'il suffit de redistribuer le programme avec "midas.dll"
  • ou bien de l'intégrer au programme en incluant "MidasLib" dans la partie "Uses".
  • Le tri alphabétique se fait automatiquement en déclarant le champ "Nom" dans la
  • propriété "IndexFieldNames" du composant TClientDataSet.
  • ===============================================================================}
  • unit f_main;
*
  • interface
*
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, StdCtrls, DBCtrls, Mask, Grids, DBGrids, DB, XPMan, DBClient, MidasLib;
*
  • type
  • TMonAnnuaire = class(TForm)
  • CDS1: TClientDataSet;
  • DS1: TDataSource;
  • XPLook: TXPManifest;
  • CDS1ID: TAutoIncField;
  • CDS1Nom: TStringField;
  • CDS1Prénom: TStringField;
  • CDS1NumDomicile: TStringField;
  • CDS1NumPortable: TStringField;
  • CDS1NumTravail: TStringField;
  • CDS1Télécopie: TStringField;
  • CDS1Adresse: TStringField;
  • CDS1Email: TStringField;
  • CDS1Infos: TStringField;
  • DBGrid1: TDBGrid;
  • LabNom: TLabel;
  • DBNom: TDBEdit;
  • LabPrenom: TLabel;
  • DBPrenom: TDBEdit;
  • LabDomicile: TLabel;
  • DBDomicile: TDBEdit;
  • LabPortable: TLabel;
  • DBPortable: TDBEdit;
  • LabTravail: TLabel;
  • LabTelecopie: TLabel;
  • DBTravail: TDBEdit;
  • DBTelecopie: TDBEdit;
  • LabEmail: TLabel;
  • DBEmail: TDBEdit;
  • LabAdresse: TLabel;
  • DBAdresse: TDBMemo;
  • LabInfos: TLabel;
  • DBInfos: TDBMemo;
  • Ajouter: TButton;
  • Valider: TButton;
  • Effacer: TButton;
  • APropos: TButton;
  • Recherche: TEdit;
  • LabRecherche: TLabel;
  • procedure FormCreate(Sender: TObject);
  • procedure FormDestroy(Sender: TObject);
  • procedure EffacerClick(Sender: TObject);
  • procedure ValiderClick(Sender: TObject);
  • procedure AjouterClick(Sender: TObject);
  • procedure RechercheChange(Sender: TObject);
  • private
  • { Déclarations privées }
  • public
  • { Déclarations publiques }
  • end;
*
  • var
  • MonAnnuaire: TMonAnnuaire;
*
  • implementation
*
  • {$R *.dfm}
*
  • procedure TMonAnnuaire.ValiderClick(Sender: TObject);
  • begin
  • // Si CDS1 est en mode Insertion ou Edition
  • if CDS1.State in [dsInsert, dsEdit] then
  • // Alors on valide l'ajout ou la modification
  • CDS1.Post;
  • end;
*
  • procedure TMonAnnuaire.AjouterClick(Sender: TObject);
  • begin
  • // Ajouter un nouvel enregistrement
  • CDS1.Append;
  • end;
*
  • procedure TMonAnnuaire.EffacerClick(Sender: TObject);
  • begin
  • // On va s'assurer qu'on veut bien effacer l'enregistrement
  • if MessageDlg('Supprimer l''enregistrement ?',mtconfirmation,[mbok,mbcancel],0)=mrok then
  • // Si OK, on efface !
  • CDS1.Delete;
  • end;
*
  • procedure TMonAnnuaire.FormCreate(Sender: TObject);
  • var FileName : String;
  • begin
  • // Récupère le chemin d'accès à notre programme et ajoute le fichier binaire
  • FileName:=ExtractFilePath(Application.ExeName)+'bottin.dat';
  • // si le fichier existe
  • if FileExists(FileName) then
  • begin
  • // Alors on ouvre le contenu
  • CDS1.LoadFromFile(FileName);
  • // Et on active la base
  • CDS1.Open;
  • end
  • else
  • begin
  • // Si le fichier n'existe pas alors on efface les champs éventuels
  • CDS1.FieldDefs.Clear;
  • // Et on construit une table neuve et vide
  • CDS1.FieldDefs.Add('ID',ftAutoInc,0);
  • CDS1.FieldDefs.Add('Nom',ftString,30);
  • CDS1.FieldDefs.Add('Prénom',ftString,20);
  • CDS1.FieldDefs.Add('NumDomicile',ftString,10);
  • CDS1.FieldDefs.Add('NumPortable',ftString,10);
  • CDS1.FieldDefs.Add('NumTravail',ftString,10);
  • CDS1.FieldDefs.Add('Télécopie',ftString,10);
  • CDS1.FieldDefs.Add('Adresse',ftString,180);
  • CDS1.FieldDefs.Add('Email',ftString,100);
  • CDS1.FieldDefs.Add('Infos',ftString,200);
  • CDS1.CreateDataSet;
  • CDS1.Open;
  • end;
  • end;
*
  • procedure TMonAnnuaire.FormDestroy(Sender: TObject);
  • begin
  • // On ne quitte pas le programme sans sauvegarder nos données
  • CDS1.SaveToFile(ExtractFilePath(Application.ExeName)+'bottin.dat',dfBinary);
  • end;
*
  • procedure TMonAnnuaire.RechercheChange(Sender: TObject);
  • var Option : TLocateOptions;
  • begin
  • // Option = Ignore les majuscules et la case / Recherche partielle sur le nom
  • Option := [loCaseInsensitive]+[loPartialKey];
  • // On cherche dans le champ "Nom" le texte entré dans le TLabel
  • CDS1.Locate('Nom',Recherche.Text,Option);
  • end;
*
  • end.
*

Conclusion :


Premiers pas dans l'étude des bases de données.
Prochain programme probablement avec la relation maître-détail.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Extrait de WikipediA :
« La meilleure façon de s'affranchir d'une accusation de plagiaire est de citer systématiquement les sources sur lesquelles son travail est fondé... »

Mais c'est un détail insignifiant ici.

Je mets 10/10 pour la participation pédagogique dont j'espère beaucoup s'inspireront.
Messages postés
80
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 juin 2012

Voilà c'est fait.
v 1.0.1 de l'annuaire, tous les composants avec accents ont été renommés.

Salutations
Messages postés
80
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
15 juin 2012

Bonjour à tous,

Tout d'abord merci pour vos encouragements.
Je ne savais pas pour les accents je vais donc corriger mon source actuel et en tenir compte pour le futur.
Quand à mes sources c'est 4 programmes compilables sur MyBase trouvés sur ce site ainsi que deux articles d'un blog dont voici les références :
- http://www.theworldofdelphi.com/blog/index.php?post/2008/08/28/Une-mini-base-de-donnees-integree-dans-Delphi
- http://www.theworldofdelphi.com/blog/index.php?post/2008/09/05/Utilisation-de-MyBase-pour-faire-un-fichier-de-configuration
Quant à mon travail disons que je m'efforce de produire des programmes pour débutants faits par un débutant, je reproduis donc en majeure partie ce que j'apprends moi-même et ce qui me fait progresser mais surtout ce que je comprends.

Salutations.
Messages postés
65
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
8 août 2011

Bonjour Christophe
D'accord avec Delphiprog, ça fait du bien de voir un jeune qui en veut et qui soigne son français! Si tu en est là au bout de 15 jours, tu as effectivement un gros potentiel.
Petit bémol, évite de nommer tes objets avec des voyelles accentuées qui ne passent pas avec des versions de delphi 7 et moins.
Selon les dernières stats, 46% des delphinautes utilisent encore delphi 5-7.
36% utilisent 2009+.
N'hésite pas non plus à citer tes sources.
Cela dit, j'ai hâte de voir tes réalisations personnelles dans quelques temps.
Ton programme a par ailleurs remis un coup de projecteur sur Midas.
Pour ceux que ça intéresse, Embarcadero facture la licence Midas 5000 euros quand on veut faire du machine to machine en pro. (pas de commentaire) http://edn.embarcadero.com/tr/print/20870

Bon week-end à tous
Dom
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Je ne veux pas rentrer dans la polémique de savoir si c'est un plagiat ou non. En effet, comme le souligne Mauricio, il n'y a pas 36 manières d'utiliser un TClientDataSet en tant que composant d'accès direct aux données. En revanche, un code clair, bien présenté, bien documenté et agrémenté d'un tutoriel bien foutu, ça ne court pas les rues. Et tout ça, c'est uniquement l'œuvre de Christophe.
On a trop l'habitude de voir des copier/coller de codes pourris et là, pour moi, c'est une bouffée d'oxygène qui me fait du bien.
Dois-je aussi ajouter que le tout est rédigé dans un français impeccable ?

Ce petit gars mérite beaucoup qu'on lui prête attention et qu'on l'encourage.
Afficher les 15 commentaires

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.