IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Quels boutons actifs dans un Navigator


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Quels boutons actifs dans un Navigator
    Bonjour

    Comment savoir quels sont les boutons actifs (non grisés) dans un DBNavigator.

    Je ne veux pas savoir quel bouton a été enfoncé, mais lesquels sont sucseptibles d'être enfoncés.

    Merci.

  2. #2
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut Delphi -Dbase Navigateur
    Bonjour,

    Lorsque vous utilisez le navigateur pour utiliser un fichier .dbf vous devez
    configurer le navigateur exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     var
       DBNavSt : TDBNavigator;
       ...
     begin
       ...
       DBNavSt.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];  
       ...
    c'est donc à vous même de définir les boutons du navigateur.
    Seront en gris ceux qui ne sont pas momentanément utilisables, exemple
    nbFirst et nbPrior si vous ètes sur le premier enregistrement du fichier.
    Les autres boutons, Suivant et Dernier, sont tous utilisabies.

    Salutations.

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Malheureusement la propriété Buttons de la classe TDBNavigator est protégée, donc impossible d'y accéder directement.

    La solution est de définir une classe dérivée de TDBNavigator pour pouvoir y accéder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    interface
     
    type
      TMyDBNav = class(TDBNavigator)
      private
        function GetEnableButtons: TButtonSet;
      published
        property EnableButtons: TButtonSet read GetEnableButtons;
      end;
     
    implementation
     
    function TMyDBNav.GetEnableButtons: TButtonSet;
    var
      i: TNavigateBtn;
    begin
      result := [];
      for i := Low(Buttons) to High(Buttons) do
        if (Buttons[i].Visible) and (Buttons[i].Enabled) then Include(result, i);
    end;
    Ensuite depuis ton formulaire, tu créé dynamiquement ton DBNav:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FNav := TMyDBNav.Create(Self);
      FNav.Align := alBottom;
      FNav.Parent := Self;
      FNav.DataSource := DataSource1;
    end;
    et enfin tu peux récupérer l'état des boutons pour un instant donné ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      BoutonDispo: TButtonSet;
    begin
      BoutonDispo := FNav.EnableButtons;
      // Pour tester si le bouton 'First' est dispo
      if nbFirst in BoutonDispo then
        ShowMessage('Bouton ''First'' dispo !');
    end;

    [edit]
    Sinon autre solution tu dois avoir la possiblité de déterminer l'état des tes buttons en examinant le DataSet (sa position avec Bof et Eof, et son état : dsBrowse, dsEdit, dsInsert, ...).
    [/edit]

    @+ Claudius

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Merci Claudius,

    Cela m'a l'air d'être tout à fait ce que je désire.

    Parcontre j'ai un souci avec le TbuttonSet : identificateur non déclaré.
    Je suppose qu'il me manque quelque chose.

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    uses ..., ExtCtrls, DBCtrls;
    @+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Cl@udius
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    uses ..., ExtCtrls, DBCtrls;
    @+
    I have got them

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DaTMB, DBGrids, DBCtrls, Mask, Grids, ExtCtrls, jpeg,
      DB, DBTables, ComCtrls, Buttons ;

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Citation Envoyé par mesquest
    I have got them

    Dans la version que j'utilise (Delphi7) TButtonSet est défini dans l'unité DBCtrls. Vérifies ce que te précise le fichier d'aide de ta version (si différent mais je n'y crois pas trop).

    @+ Claudius

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Cl@udius
    Re,

    Vérifies ce que te précise le fichier d'aide de ta version
    @+ Claudius
    Salut, a priori tbuttonset est plutot une fonction pour C++ voila ce que l'on trouve dans l'aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [C++]void __fastcall TForm1::CustomerCompanyEnter(TObject *Sender)
    {
      if (Sender == (TObject *)CustomerCompany)
      {
        DBNavigatorAll->DataSource = CustomerCompany->DataSource;
        DBNavigatorAll->VisibleButtons = TButtonSet() << nbFirst << nbPrior << nbNext << nbLast;
      }
      else
      {
        DBNavigatorAll->DataSource = OrderNum->DataSource;
        DBNavigatorAll->VisibleButtons = TButtonSet() << nbInsert << nbDelete << nbEdit
                                       << nbPost << nbCancel << nbRefresh;
      }
    }
    et pour langage delphi le même code n'utilise pas tbuttonset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [Delphi]procedure TForm1.CustomerCompanyEnter(Sender :TObject);
    begin
      if Sender = CustomerCompany then
      begin
        DBNavigatorAll.DataSource := CustomerCompany.DataSource;
        DBNavigatorAll.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];
      end
      else
      begin
        DBNavigatorAll.DataSource := OrderNum.DataSource;
        DBNavigatorAll.VisibleButtons := DBNavigatorAll.VisibleButtons + [nbInsert,
          nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];
      end;
    end;

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 27
    Points : 19
    Points
    19
    Par défaut

    Ca y est cela fonction.


    Il me fallait utiliser TNavButtonSet a la place de TbuttonSet

    Merci beaucoup Claudius

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Bouton actif et info bulle, dans le pied de page d'un formulaire tabulaire
    Par denisduval75 dans le forum Access
    Réponses: 0
    Dernier message: 13/04/2015, 12h21
  2. Desactiver le bouton "Option" dans la barre de navigation
    Par thanos33 dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 21/10/2010, 17h12
  3. Quel est le nom du Bouton "OK" dans une Alert JS
    Par tromaltsec dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2007, 16h59
  4. Réponses: 3
    Dernier message: 15/11/2006, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo