Fermer une fiche à l'aide de Close

Fermer une fiche à l'aide de Close - Delphi/Pascal - Programmation

Marsh Posté le 16-04-2010 à 14:58:15    

Bonjour,
je suis débutant en Delphi et j'ai du mal à gérer l'ouverture et la fermeture des fiches dites disponibles. je vous copie le code de mes trois fiches avec commentaires.
Merci d'avance.
 
 

La fiche Créée automatiquemen
t
 
 
 
unit _gestionAppel;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, ExtCtrls, Menus;
 
type
  TFormAppel = class(TForm)
    queryAppel: TQuery;
    quitter: TButton;
    Effacer: TButton;
    Enregistrer: TButton;
    reponseApp: TMemo;
    raisonApp: TMemo;
    numCl: TEdit;
    dateApp: TEdit;
    Label6: TLabel;
    Label4: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    MainMenu1: TMainMenu;
    Fichier1: TMenuItem;
    Quitter1: TMenuItem;
    Chercher1: TMenuItem;
    pardate1: TMenuItem;
    numroclient1: TMenuItem;
    probNonresolu: TMenuItem;
    Depuisunedatedonne1: TMenuItem;
    parnomduclient1: TMenuItem;
    procedure EnregistrerClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure numClEnter(Sender: TObject);
    procedure EffacerClick(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure probNonresoluClick(Sender: TObject);
 
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  FormAppel: TFormAppel;
 
implementation
 
uses _gestionClient, _resultatRequete;
 
{$R *.dfm}
 
procedure TFormAppel.EnregistrerClick(Sender: TObject);
begin
with queryAppel do
  Begin
  Active := False;
  SQL.Clear;
  SQL.Add('Insert into appel (numClient, raisonApp, reponseApp, DateApp)');
  SQL.Add (' values (:n, :r, :rp, :dt)');
  paramByName('n').AsString := numCl.Text;
  paramByName('r').AsString := raisonApp.Text;
  paramByName('rp').AsString := reponseApp.Text;
  paramByName('dt').AsString := dateApp.Text;
  ExecSql;
  End;
end;
 
procedure TFormAppel.FormCreate(Sender: TObject);
begin
   dateApp.Text := DateToStr(Date);
end;
 
procedure TFormAppel.numClEnter(Sender: TObject);
var C : TFormClient;
begin
C := TFormClient.Create(Self);
C.Show;
end;
 
procedure TFormAppel.EffacerClick(Sender: TObject);
begin
numCl.Text := '';
raisonApp.Text := '';
reponseApp.Text := '';
end;
 
 
procedure TFormAppel.Quitter1Click(Sender: TObject);
begin
FormAppel.Close; // Ne répond pas mais ne génère aucune erreur
end;
 
procedure TFormAppel.probNonresoluClick(Sender: TObject);
var F : TresultatRequete;
begin
F := TresultatRequete.Create(Self);
F.Show;
End;
end.
 
 
FormAppel fiche disponible
 
 
unit _gestionClient;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;
 
type
  TformClient = class(TForm)
    nomCl: TEdit;
    prenomCl: TEdit;
    adrCl: TEdit;
    telCl: TEdit;
    dateCl: TEdit;
    LabelNom: TLabel;
    LabelPrenom: TLabel;
    LabelAdr: TLabel;
    LabelTel: TLabel;
    LabelDate: TLabel;
    btRechercher: TButton;
    btEnregistrer: TButton;
    btAnnuler: TButton;
    DBGrid1: TDBGrid;
    LabelResultat: TLabel;
    DataSource1: TDataSource;
    QueryClient: TQuery;
    Quitter: TButton;
    procedure btRechercherClick(Sender: TObject);
    procedure btEnregistrerClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure btAnnulerClick(Sender: TObject);
    procedure QuitterClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  formClient: TformClient;
 
implementation
 
uses _gestionAppel;
 
{$R *.dfm}
 
procedure TformClient.btRechercherClick(Sender: TObject);
begin
with QueryClient do
  Begin
  SQL.Clear;
  Active := False;
  SQL.Add('select * from client where nomClient = :n and prenomClient = :p');
  paramByName('n').AsString := nomCl.Text;
  paramByName('p').AsString := prenomCl.Text;
  Active := True;
 
  if (RecordCount = 0)
    then
    ShowMessage('Les coordonnées saisies ne correspondent à aucun client');
 
   End;
End;
 
procedure TformClient.btEnregistrerClick(Sender: TObject);
begin
  with QueryClient do
    Begin
    Active := False;
    SQL.Clear;
    SQL.Add ('insert into Client (nomClient, prenomClient, adrClient, telClient, date1Achat) values (:n, :p, :a, :t, :d)');
    paramByName('n').AsString := nomCl.Text;
    paramByName('p').AsString := prenomCl.Text;
    paramByName('a').AsString := adrCl.Text;
    paramByName('t').AsString := telCl.Text;
    paramByName('d').AsString := dateCl.Text;
    ExecSql;
    End;
end;
 
procedure TformClient.DBGrid1CellClick(Column: TColumn);
begin
FormAppel.numCl.Text := QueryClient.Fields[0].AsString;
FormClient.Close;  //Erreur de violation d'accès
end;
 
 
procedure TformClient.btAnnulerClick(Sender: TObject);
begin
  nomCl.Text := '';
  prenomCl.Text := '';
  adrCl.Text := '';
  telCl.Text := '';
  dateCl.Text := '';
end;
 
procedure TformClient.QuitterClick(Sender: TObject);
begin
FormClient.Close;  //Génère une erreur de violation d'accès
end;
 
end.
 
 
 
 
La fiche ResultatRequete disponible également  
 
 
 
unit _resultatRequete;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, DB, DBTables;
 
type
  TresultatRequete = class(TForm)
    QueryRecherche: TQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    labelResult: TLabel;
    DBNavigator1: TDBNavigator;
    btUpdate: TButton;
    quitterRes: TButton;
    QueryUpdate: TQuery;
    procedure quitterResClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btUpdateClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  resultatRequete: TresultatRequete;
 
implementation
 
{$R *.dfm}
 
procedure TresultatRequete.quitterResClick(Sender: TObject);
begin
resultatRequete.Close; //Génère code violation d'accès
end;
 
procedure TresultatRequete.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Action := CaFree;
end;
 
procedure TresultatRequete.btUpdateClick(Sender: TObject);
var
reponse : String;
begin
reponse := inputBox('Mise à jour', 'Entrez la réponse apportée', 'Le problème a été résolu');
with QueryUpdate do
  begin
    Active := false;
    SQL.Clear;
    SQL.Add('Update appel set reponseApp = :r where NumApp = :n');
    paramByName('r').AsString := reponse;
    paramByName('n').AsString := DBGrid1.Fields[4].AsString;
    ExecSql;
    End;
 
end;
 
procedure TresultatRequete.FormCreate(Sender: TObject);
begin
queryRecherche.Active := True;
end;
 
end.
 
 
J'ai essayé le Hide à la place de Close mais ne marche pas non plus.
 
 
 

Reply

Marsh Posté le 16-04-2010 à 14:58:15   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed