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

 Delphi Discussion :

comment enlever la ligne vide de dbgrid quand la table et vide ?


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Points : 37
    Points
    37
    Par défaut comment enlever la ligne vide de dbgrid quand la table et vide ?
    c'est un peut bête mais je n'arrive pas a enlever la ligne vide dans la dbgrid quand la table et vide ?

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Tout bêtement je dirais un delete sans clause where
    Ou encore truncate
    En passant, je suis persuadé que ce sujet à déjà été abordé dans ce même forum et que google de donne la solution avec les mots "SQL + Vider Table"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par popo Voir le message
    Tout bêtement je dirais un delete sans clause where
    Ou encore truncate
    En passant, je suis persuadé que ce sujet à déjà été abordé dans ce même forum et que google de donne la solution avec les mots "SQL + Vider Table"
    mais c'est justement après un delete from matable que j'ai cette ligne vide dans le dbgrid ,c'est pas comment vidé une table mais comment enlever la ligne vide dans le dbgrid après avoir vidé la table ,,
    et oui j'ai cherche dans google et ici peut être j'ai pas utilisé les bons arguments mais j'ai pas trouver

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Peut être parce que la table affichée n'est pas en readonly ?
    a vrai dire je n'ai jamais fait attention a ça , utilisé smdbgrid pourrait être aussi une alternative (elle affiche <pas de données> si la table est vide)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 927
    Points
    3 927
    Par défaut
    Peut pas, Na !!

    Plus sérieusement, quand l'ensemble de données est ouvert est vide, la ligne vide est toujours affichée.

    Tentes de déconnecter la datasource du dbgrid ou de fermer l'ensemble de données, mais cela j'en suis plus trop sûr.

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 927
    Points
    3 927
    Par défaut
    L'explication vient sans doute de la possibilité d'auto-édition (propriété AutoEdit de la DataSource), en effet dans ce cas si tu veux insérer un nouvel enregistrement il faut bien avoir une ligne pour saisir.
    Ceci dit je n'encourage pas la saisie directe dans un DBGrid, c'est aps pratique pour contrôler les données.

    @++

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Points : 37
    Points
    37
    Par défaut
    non le DBGrid et on lecture seul dans mon application ,, et je crois quand ne peut pas enlevé cette ligne vide car même sans table juste on pause un DBGrid sur une forme i l y a cette ligne vide

    j'ai essayé avec les option de la DBGrid j'ai mis les dgRowline et dgCollines a false quand la table et vide elle a bien disparue mais celle du titre aussi !!

  8. #8
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 927
    Points
    3 927
    Par défaut
    Le DBGrid est plus fort que toi
    Je pense que tu vas devoir te résigner...

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par e-ric Voir le message
    Le DBGrid est plus fort que toi
    mais DBgrid est 'hackable' donc rien n'empêche de dessiner sur son canvas

    j'ai fais un test rapide et pas beau , reste a : définir le Rectangle [Edit] j'ai initialisé le rectangle reste à calculé la position du texte


    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
    22
    23
    24
    25
    26
     
    ...
    type THackDBGrid = class(TDBGrid);
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var Arect : TRect;
         TopCentre,LeftCentre : Integer;
    begin
    if DBGrid1.DataSource=nil then /// remplacable par un recordcount=0 ;)
      begin
        ARect.Top:=THackDbGrid(DBGrid1).DefaultRowHeight+THackDbGrid(DBGrid1).GridLineWidth;
        ARect.Left:=THackDbGrid(DBGrid1).ColWidths[0]+THackDbGrid(DBGrid1).GridLineWidth; //
        ARect.Right:=DBgrid1.Width;
        ARect.Bottom:=DBGrid1.Height;
        TopCentre:=20;
        LeftCentre:=40;
        THackDBGrid(DBGrid1).canvas.TextRect(ARect,TopCentre,leftCentre,'Vide');
      end;
    end;
    pour faire réapparaitre : DBGrid1.repaint
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 927
    Points
    3 927
    Par défaut
    Petite question : ton type THackDBGrid est juste là pour donner accès à des membres protégés, c'est ça ?

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    mais DBgrid est 'hackable' donc rien n'empêche de dessiner sur son canvas

    j'ai fais un test rapide et pas beau , reste a : définir le Rectangle [Edit] j'ai initialisé le rectangle reste à calculé la position du texte


    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
    22
    23
    24
    25
    26
     
    ...
    type THackDBGrid = class(TDBGrid);
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var Arect : TRect;
         TopCentre,LeftCentre : Integer;
    begin
    if DBGrid1.DataSource=nil then /// remplacable par un recordcount=0 ;)
      begin
        ARect.Top:=THackDbGrid(DBGrid1).DefaultRowHeight+THackDbGrid(DBGrid1).GridLineWidth;
        ARect.Left:=THackDbGrid(DBGrid1).ColWidths[0]+THackDbGrid(DBGrid1).GridLineWidth; //
        ARect.Right:=DBgrid1.Width;
        ARect.Bottom:=DBGrid1.Height;
        TopCentre:=20;
        LeftCentre:=40;
        THackDBGrid(DBGrid1).canvas.TextRect(ARect,TopCentre,leftCentre,'Vide');
      end;
    end;
    pour faire réapparaitre : DBGrid1.repaint
    la touche du maitre chapeau

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par e-ric Voir le message
    Petite question : ton type THackDBGrid est juste là pour donner accès à des membres protégés, c'est ça ?
    Absolument , du coup la DBGrid devient une stringgrid
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2009, 15h43
  2. Comment agrandir les lignes d'un DBGrid ?
    Par pepito62 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/04/2009, 13h42
  3. Réponses: 2
    Dernier message: 15/07/2008, 16h47
  4. Comment colorer les lignes d'un DBGrid ?
    Par k_boy dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/11/2007, 21h54
  5. Réponses: 0
    Dernier message: 24/07/2007, 00h03

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