Nombre de lignes et de colonnes dans un TDbGrid [Résolu]

- - Dernière réponse :  Utilisateur anonyme - 4 avril 2006 à 22:35
Salut à tous,

J'aimerai réaliser la procedure suivante :

Procedure
var
nc, nl : integer;
while nc<= nombre de colonnes dans table1 do
nl<=nombre de lignes dans table2 do

Evidemment je ne sais pas comment faire ?? si vous avez une petite idée elle est la bienvenue

Merci et a+
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
3
Merci
Ok, merci pour la précision.

Comme le composant TDbGrid ne nous permet pas d'accéder à certaines de ses informations soigneusement cachées, nous allons employer les grands moyens et le hacker.

Pour commencer, déclarons un "descendant" de TDbGrid:
type
  THackDbGrid =   class (TDbGrid)
  end;

Ainsi, nous aurons au moins accès aux propriétés protégées.
Bâtissons une fiche avec un TDbGrid (of course) et une case à cocher, juste pour vérifier que notre théorie est la bonne et ajoutons le code ci-dessous à la fiche :

procedure TForm1.CountDbGridLines;
var
  NL: integer;
begin
  //Transtypage du TDbGrid pour acc&#232;der aux
  //propri&#233;t&#233;s et m&#233;thodes prot&#233;g&#233;es
  with THackDbGrid(DbGrid1) do
  begin
    { On divise la hauteur de la grille par
    la hauteur de la ligne 1 }
    NL : = GetGridHeight div RowHeights[0];
    { Il faut aussi tenir compte de la pr&#233;sence
    de la barre de titres sinon le calcul serait
    fauss&#233; }
    if dgTitles in Options then
      dec(NL);
  end;

  Label1.Caption :=  Format('Nombre de lignes : %d', [NL]);
 end ;

Pour faciliter la manipulation, ajoutons un évènement déclencheur qui affichera/masquera la barre de titre du composant TDbGrid :

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    DbGrid1.Options : = DbGrid1.Options + [dgTitles]
  else
    DbGrid1.Options :=  DbGrid1.Options - [dgTitles];

  CountDbGridLines;
 end ;

C'est Ok ?
May Delphi be with you !

<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Delphiprog
0
Merci
Oh pardon

Procedure
var
nc, nl : integer;
BEGIN
while nc<= nombre de colonnes dans table1 do
WHILE nl<=nombre de lignes dans table2 do
END
Commenter la réponse de Utilisateur anonyme
Messages postés
1651
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
25 juillet 2014
0
Merci
salut,

je n'ai tout compris ce que tu veux faire:

si tu ne modifies pas tes variables nc et nl dans tes boucle tu n'en sortiras jamais.

Alors essayes t'être un peu plus explicite en précisant ce que tu fais dans ta boucle



@+

jlen
Commenter la réponse de jlen100
0
Merci
Oui Chef

Bon je me suis mal exprimé déjà : un gros mélange de pinceau (genre rouleau de peintre ).

Je parlais de paradox mais ca n'a rien à voir. Je voulais parler de DBGrid :

Procedure nombredelignedansunDBGrid ;
Var
I : integer ;
begin
I : =nombre de ligne (pour une colonne donnée) dans mon DBGrid; // C'est ici que je ne sais pas quoi faire Row est déclaré comme Privé : ).
end;

Pour etre plus clair je voudrais faire un genre de count comme pour une listbox avec les items.

Pour la colonne j'ai trouvé comme un grand .
Commenter la réponse de Utilisateur anonyme
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
0
Merci
Peux-tu préciser si tu recherches le nombre de lignes visibles dans le DbGrid ou bien le nombre total de lignes contenues dans l'ensemble de données, stp

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
0
Merci
Je parle du nombre de lignes visibles dans le DBGrid
Commenter la réponse de Utilisateur anonyme
0
Merci
Pour etre plus précis,


While nc<=DBGrid1.Columns.Count-1

Ca c'est pour mes colonnes je voudrais la meme chose mais pour les lignes.

Merci A+
Commenter la réponse de Utilisateur anonyme
0
Merci
Delphiprog,

Merci : c'est parfait
Commenter la réponse de Utilisateur anonyme

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.