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 :

Recherche alphabétique dans un DBGrid


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Par défaut Recherche alphabétique dans un DBGrid
    salut a tous , j'ai un dbgrid des données delphi , je sais comment filtrer avec un edit ou chercher avec un edit en utilisant locate , mais ce que je cherche , c'est comment chercher dans un champ dbgrid sans edit et sans combobox ,, seulement quand j'appuie sur un touche clavier par exemple "A" , l'indicateur va automatiquement sur l'enregistrement qui commence par A.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 935
    Billets dans le blog
    6
    Par défaut
    Il faut utiliser les événements du clavier, comme OnKeyDown.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre très actif
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Par défaut
    Oui je le savais l'idée mais comment programmer ?

  4. #4
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Par défaut
    Bonsoir à tous

    voila je te propose un code.

    // DBGrid1.ReadOnly:=True ;
    //Form1.KeyPreview:=True ;

    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
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var Val:string;
    begin
    if Key in [65..122] then   // uniquement les touches alphabétiques.
     begin
     Table.Filtered:=false  ;
     Table.Filter:='NOM_FBR='+Quotedstr((Chr(Key)+'*'));
     Table.Filtered:=True;
     
     if Table.FieldValues['NOM_FBR']<> Null then
     Val:=Table.FieldValues['NOM_FBR'] ;
          Table.Filtered:=false  ;
          Table.Locate('NOM_FBR',Val,[])  ;
     end;
     end;

  5. #5
    Membre très actif
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Par défaut
    Citation Envoyé par FOCUS77 Voir le message
    Bonsoir à tous

    voila je te propose un code.

    // DBGrid1.ReadOnly:=True ;
    //Form1.KeyPreview:=True ;

    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
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var Val:string;
    begin
    if Key in [65..122] then   // uniquement les touches alphabétiques.
     begin
     Table.Filtered:=false  ;
     Table.Filter:='NOM_FBR='+Quotedstr((Chr(Key)+'*'));
     Table.Filtered:=True;
     
     if Table.FieldValues['NOM_FBR']<> Null then
     Val:=Table.FieldValues['NOM_FBR'] ;
          Table.Filtered:=false  ;
          Table.Locate('NOM_FBR',Val,[])  ;
     end;
     end;
    Malheuresement votre code ne marche pas . et Merci pour l'aide

  6. #6
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Par défaut
    Bonjour heart100

    je l'ai essayé (avec Lazarus 1.6RC2) de 2 méthodes différentes et il marche très bien
    vérifiez si vous n'avez rien oubliez. merci.

    //Form1.KeyPreview:=True ;
    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
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    var Val:string;
    begin
    if Key in [65..122] then
     begin
     Table.Filtered:=false  ;
     Table.Filter:='NOM_FBR='+Quotedstr((Chr(Key)+'*'));
     Table.Filtered:=True;
     
     if Table.FieldValues['NOM_FBR']<> Null then
     Val:=Table.FieldValues['NOM_FBR'];
          Table.Filtered:=false  ;
          Table.Locate('NOM_FBR',Val,[])  ;
     end;
     end;
    //Form1.KeyPreview:=False ;
    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
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var Val:string;
    begin
    if Key in [65..122] then
     begin
     Table.Filtered:=false  ;
     Table.Filter:='NOM_FBR='+Quotedstr((Chr(Key)+'*'));
     Table.Filtered:=True;
     
     if Table.FieldValues['NOM_FBR']<> Null then
     Val:=Table.FieldValues['NOM_FBR'];
          Table.Filtered:=false  ;
          Table.Locate('NOM_FBR',Val,[])  ;
     end;
    end;

Discussions similaires

  1. [AC-2013] Trier un état sur un champs (autre que ordre alphabetique)
    Par Guillaume-h24 dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/06/2015, 20h23
  2. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  3. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  4. [VB6] Zone de liste modifiable basée sur un champ
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/11/2002, 13h41
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

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