Nombre de lignes et de colonnes dans un TDbGrid

[Résolu]
Signaler
-
 Utilisateur anonyme -
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+
A voir également:

8 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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.

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
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
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

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 .
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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.

Je parle du nombre de lignes visibles dans le DBGrid

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+

Delphiprog,

Merci : c'est parfait