Gestion de divx (base de donnée paradoxe)

Description

Grâce à la précieuse aide de Delphiprog !!!
Maintenant on peut sauvegarder la liste des Divx dans un dossier au choix en fichier .txt et la gestion des données est beaucoup mieux ... gérées !!!
----------------------------------------------
Script ki marche bien mais pourait mieux marcher. Ce programme m'a été très interressant pour aborder la gestion de donnée. Et j'encourage toute personne s'y connaissant + ke moi à y jeter un coup d'oeil pour montrer du doigt mes erreurs.

Source / Exemple :


unit UDivXMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, DBCtrls, DB, DBTables, Buttons, ImgList,
  ComCtrls, Grids, DBGrids;

type
  TDivXMainForm = class(TForm)
    MainMenu1: TMainMenu;
    Fichier1: TMenuItem;
    mnuEnregistrer1: TMenuItem;
    N1: TMenuItem;
    mnuQuitter1: TMenuItem;
    Afficher1: TMenuItem;
    N2: TMenuItem;
    btnAddModify: TBitBtn;
    Ajouter1: TMenuItem;
    mnuDivxEnStock: TMenuItem;
    mnuDivxPretes: TMenuItem;
    mnuUnDivx1: TMenuItem;
    APropos1: TMenuItem;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    DBText1: TDBText;
    DBTextNbCd: TDBText;
    DBTextDateArrivee: TDBText;
    DBMemoObservations: TDBMemo;
    StatusBar1: TStatusBar;
    chbxNonVus: TCheckBox;
    chbxPretes: TCheckBox;
    DBCheckBox1: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    DBGrid1: TDBGrid;
    mnuDivxNonVus: TMenuItem;
    Label4: TLabel;
    DBTextStock: TDBText;
    btnModifyObservations: TSpeedButton;
    generer: TMenuItem;
    SaveDialog1: TSaveDialog;
    procedure FormCreate(Sender: TObject);
    procedure mnuQuitter1Click(Sender: TObject);
    procedure btnAddModifyClick(Sender: TObject);
    procedure chbxNonVusClick(Sender: TObject);
    procedure mnuDivxNonVusClick(Sender: TObject);
    procedure mnuDivxEnStockClick(Sender: TObject);
    procedure mnuDivxPretesClick(Sender: TObject);
    procedure chbxPretesClick(Sender: TObject);
    procedure btnModifyObservationsClick(Sender: TObject);
    procedure genererClick(Sender: TObject);
  end;

var
  DivXMainForm: TDivXMainForm;

implementation

uses UDmDivX, UAddDeleteModifyForm;

{$R *.dfm}
{$R LockBtn.res}   //ressources dcontenant les bitmap du bouton

procedure TDivXMainForm.FormCreate(Sender: TObject);
begin
  //Afficher le nombre total de CD contenus dans la table
  StatusBar1.Panels[0].Text := Format(sNbDivX, [dmDivX.tblDivX.RecordCount]);
end;

procedure TDivXMainForm.mnuQuitter1Click(Sender: TObject);
begin
  close;
end;

procedure TDivXMainForm.btnAddModifyClick(Sender: TObject);
begin
  { Appel de la fiche permettant d'ajouter/Supprimer/modifier le
   contenu de la table DivX}
  DivXAddDeleteModifyForm.Show;
end;

procedure TDivXMainForm.chbxNonVusClick(Sender: TObject);
begin
   //Au passage, Activer/Désactiver la case à cocher chbxPretes
   chbxPretes.Enabled := not chbxNonVus.Checked;

   //Actualise l'élément de menu DivXNonVus
   mnuDivxNonVus.Checked := chbxNonVus.Checked;
   dmDivX.AfficherNonVus(chbxNonVus.Checked);
end;

procedure TDivXMainForm.mnuDivxNonVusClick(Sender: TObject);
begin
  { Resteindre l'affichage aux enregistrements pour lesquels
   le champ Vu est à faux }
  chbxNonVus.Checked := mnuDivxNonVus.Checked;
  dmDivX.AfficherNonVus(mnuDivxNonVus.Checked);
end;

procedure TDivXMainForm.mnuDivxEnStockClick(Sender: TObject);
begin
  { Afficher les enregistrements pour lesquels le champ Stock
   vaut vrai, donc non prêtés. }
  chbxPretes.Checked := not mnuDivxEnStock.Checked;
  dmDivX.AfficherPretes(not mnuDivxEnStock.Checked);
end;

procedure TDivXMainForm.mnuDivxPretesClick(Sender: TObject);
begin
  { Les DivX prêtés correspondent aux enregistrements pour lesquels le champ
  Stock est à faux }
  chbxPretes.Checked := mnuDivxPretes.Checked;
  dmDivX.AfficherPretes(mnuDivxPretes.Checked);
end;

procedure TDivXMainForm.chbxPretesClick(Sender: TObject);
begin
  mnuDivxPretes.Checked := chbxPretes.Checked;
  mnuDivxEnStock.Checked := not chbxPretes.Checked;
  dmDivX.AfficherPretes(mnuDivxPretes.Checked);
end;

procedure TDivXMainForm.btnModifyObservationsClick(Sender: TObject);
begin
  {Basculer l'état de DBMemoObservations.ReadOnly }
  DBMemoObservations.ReadOnly := not DBMemoObservations.ReadOnly;
  {Selon l'état de DBMemoObservations, afficher une image différente sur
   le bouton}
  If DBMemoObservations.ReadOnly then
    btnModifyObservations.Glyph.LoadFromResourceName(Hinstance, 'LOCKSHUT')
  else
    btnModifyObservations.Glyph.LoadFromResourceName(HInstance, 'LOCKOPEN');
end;

procedure TDivXMainForm.genererClick(Sender: TObject);
var F : TextFile;
begin
  Savedialog1.Filter := 'Fichier Texte (*.txt)|(*.txt)';
  Savedialog1.FileName := 'Liste Divx';
  Savedialog1.Execute;
   AssignFile(F,Savedialog1.FileName +'.txt');
   Rewrite(F);
  while not dmDivx.tblDivX.Eof do begin
  Writeln(F,dmDivx.tblDivX.FieldByName('Divx').AsString);
  dmDivx.tblDivX.Next;
  end;
  CloseFile(F);
  dmDivx.tblDivX.First;

end;

end.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
unit UDmDivX;

interface

uses
  SysUtils, Classes, DB, DBTables;

type
  TdmDivX = class(TDataModule)
    dsDivX: TDataSource;
    tblDivX: TTable;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Afficher les DivX non vus }
    procedure AfficherNonVus(NonVus : boolean = True);
    { Afficher les DivX prêtés}
    procedure AfficherPretes(Pretes : boolean = True);
  end;

var
  dmDivX: TdmDivX;

ResourceString
  sNbDivX = 'Nombre de DivX affichés : %d';

implementation

{$R *.dfm}

{-----------------------------------------------------------------------------
  Procedure: TdmDivX.AfficherNonVus
  Author:    delphiprog
  Date:      03-janv.-2003
  Arguments: NonVus: boolean; filtre la table ssi NonVus = True
  Result:    None
-----------------------------------------------------------------------------}
procedure TdmDivX.AfficherNonVus(NonVus: boolean);
begin
  if NonVus then
    tblDivX.Filter := 'vu = ''False''';
  tblDivX.Filtered := NonVus;
end;

{-----------------------------------------------------------------------------
  Procedure: TdmDivX.AfficherPretes
  Author:    delphiprog
  Date:      03-janv.-2003
  Arguments: Pretes: boolean; filtre la table ssi Pretes = True
  Result:    None
-----------------------------------------------------------------------------}
procedure TdmDivX.AfficherPretes(Pretes: boolean);
begin
  if Pretes then
    tblDivX.Filter := 'Stock <> ''''';
  tblDivX.Filtered := Pretes;
end;

procedure TdmDivX.DataModuleCreate(Sender: TObject);
begin
  { Conserver le temps de la mise au point de l'application. }
  if not tblDivX.Active then
    tblDivX.Active := True;
end;

end.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
unit UAddDeleteModifyForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, DB, DBTables, Grids, DBGrids,
  ComCtrls;

type
  TDivXAddDeleteModifyForm = class(TForm)
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Label1: TLabel;
    DBNavigator1: TDBNavigator;
    StatusBar1: TStatusBar;
    procedure FormPaint(Sender: TObject);
  end;

var
  DivXAddDeleteModifyForm: TDivXAddDeleteModifyForm;

implementation

uses UDmDivX;

{$R *.dfm}

procedure TDivXAddDeleteModifyForm.FormPaint(Sender: TObject);
begin
  { Afficher le nombre d'enregistrements de la table DivX répondant aux
  critères de filtrage}
  StatusBar1.SimpleText := Format(sNbDivX, [dmDivX.TblDivX.RecordCount]);
end;

end.

Conclusion :


Il n'y a apparemment plus de bug, désormais ça marche très bien !
Je serais heureux si vous m'apportiez des améliorations ou des conseils car j'ai envie de continuer à développer cette apli (Génération d'une liste en HTML, gestion de CD musique, gestion de CD de sauvegardes, etc ...)
BYE
----------------------------------------------
Il y a un bug ke je n'arrive pas à intercepté au début apres avoir chargé la liste des Divx dans ma DBListbox, il ya un message d'erreur à chaque fois que je tente de modifier ma base. C'est pour cette raison que j'ai désactivé cette possibilité. De plus je n'arrive pas à filtrer les données de ma base ... Ausecour !

Codes Sources

A voir également

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.