Gestion de divx (base de donnée paradoxe)

Soyez le premier à donner votre avis sur cette source.

Vue 16 076 fois - Téléchargée 1 907 fois

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

Ajouter un commentaire

Commentaires

Messages postés
5
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
30 décembre 2003

je l'ai besoin de cet source
Messages postés
1
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
26 octobre 2003

J'ai fait un programme qui fait Divx/DVD/Vidéothèque... Le code gère une base de donnée XML, mais je n'inclus que le chemin des images, pas les images...
Ce logiciel est freeware et dispo sur : http://pardalissoftware.free.fr
Messages postés
24
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
20 avril 2005

Pareil que Roje, je cherche comment intercepter l'image affichée dans le webbrowser pour télécharger l'image automatiquement (et sans rien demandé à l'utilisateur) afin de la mettre dans le prog, si vous avez des infos pleasseeee helpppppp
Messages postés
7
Date d'inscription
mercredi 21 août 2002
Statut
Membre
Dernière intervention
22 juin 2004

salut, j'avais commencé à faire une petite appli dans le même genre, mais je voulais rajouter les images des jaquettes dans la base de données, mais là je sèche... vous pouvez me donner une solution ou une idée ?
Merci.
Messages postés
4
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
10 octobre 2005

ça va pas tarder je rajoute une fonctionnalité
:-)
Afficher les 8 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.