Création de tableau

Signaler
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011
-
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011
-
Bonjour à tous,

Je suis sur un projet en Delphi et j'ai besoin de vos lumières.

J'ai un tableau de type StringGrid qui contient différents éléments. J'ai un bouton + pour ajouter une ligne à ce tableau et l'utilisateur peut saisir des données. Lorsque l'utilisateur appuie sur ce bouton +, il faut également qu'un tableau soit créé plus bas. Ce tableau contiendra les détails de la ligne ajoutée dans le 1er tableau.

Comment est-ce que je peux faire au plus simple pour créer ces tableaux en appuyant sur le bouton + ? Il faut spécifier la localisation du tableau en pixel ? Est-ce qu'en jouant avec les panels je peux faire cela plus proprement ?

J'espère que j'ai été clair. Merci d'avance de votre aide.

11 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
procedure TFormX.ButtonPlusClick(Sender: TObject);
begin
  with StringGrid1 do
  begin
    // ajoute une ligne :
    RowCount := RowCount + 1;

    // Sélectionne la nouvelle ligne
    Row := RowCount-1;

    // Sélectionne la premiere cellule editable
    Col := FixedCols;
  end; 
end;


pour le reste, oui, tu peux utiliser un TPanel avec des TLabel ou TEdit, voir une TListBox ...

EditX.Text := StringGrid1.Cells[StringGrid1.Row, StringGrid1.Col]
LabelX.Caption := StringGrid1.Cells[StringGrid1.Row, StringGrid1.Col]

ListBox1.Items.Assign(StringGrid1.Rows[StringGrid1.Row];

<hr size="2" width="100%" />
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

Merci de ta réponse rapide.

Mais si je comprend bien ton code, là en appuyant sur le bouton, je vais juste ajouter une ligne à mon tableau.

Je crois que j'ai dut mal m'exprimer. En fait je veux qu'au clic sur le bouton, un nouveau tableau soit créé en-dessous du premier. Ce nouveau tableau contiendra des informations supplémentaires. C'est une sorte de sous-catégorie du tableau principal. Chaque ligne du tableau principal contient un tableau avec des détails supplémentaires.

Est-ce que je devrais créer mon propre composant qui contient un tableau et construire ce composant lors du clic sur le bouton + ?

Merci
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
bonsoir,

L'utilisation d'une arborescence semble plus adaptée.
style TreeView..

cantador
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

J'y ai pensé, mais ce n'est pas moi qui fait ce choix. Je dois faire cela avec des tableau, c'est les directives que j'ai...
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
ok, mais tu dois déjà avoir une idée précise pour la création du 2e SG
et si tu as besoin d'en créer un 3e tu le places où ?

sinon, tu peux créer dynamiquement un stringgrid en le mettant à un endroit bien précis.

cantador
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

Et bien je pensais placer à chaque fois une nouveau SG en dessous du précédent avec un truc comme 3 cm d'espace entre les 2...

Chaque fois qu'on clique sur + un nouveau SG est créé en-dessous du dernier... Vous voyez à quoi je veux arriver ?
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Oui, tout à fait
Mais que se passe t-il quand tu atteint le bas de l'écran ?

cantador
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

Et bien ma fenêtre elle est scrollable

Du coup on peut générer autant de tableau qu'on veut... Dans la même idée, le premier tableau qui est celui de référence reste tout le temps à l'écran. On pourrait avoir 2 "frames". L'une est statique et contient le premier SG et l'autre a une scrollbar et contient les tableaux qui sont généré à l'ajout d'une ligne dans le 1er tableau...

C'est pas une bonne idée ?
ça me semble plutôt agréable pour l'utilisateur de travailler ainsi...
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
Non, je ne pense pas que cela soit une bonne idée...

C'est plutôt lourd comme méthode.
Cela dit ce sont tes utilisateurs qui trancheront..

Moi, je créerai une bdd avec deux tables en relation père fils
peut importe les contrôles..
Ainsi lorsque je serai sur un enregistrement père, je verrai automatiquement ceux de la table fils qui sont associés.

et avantage plus besoin de créér des tonnes de tableaux et plus besoin
de scrollbars

cantador
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
et autre avantage qui n'est pas des moindres ta base pourrait être mise en réseau et donc partageable entre plusieurs utilisateurs.

cantador
Messages postés
77
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
22 février 2011

Ah mais elle sera mise en réseau. Je développe un module qui sera ajouté à un applicatif qui tourne avec plus de 250 utilisateurs.

Le schéma de base de données relationnel est déjà fait et oui j'ai les deux tables dont tu parles, plus encore d'autres tables.  Mais ça c'est une autre partie du projet.

Moi ce que je veux trouver maintenant c'est une solution efficace pour que l'utilisateur puisse remplir ces tables via des tabeaux avec les exigences que l'on m'a fixées. Et parmi ces exigence je dois mettre des tableaux qui sont éditables comme je l'ai expliqué dans les posts précédents.

Ajd j'ai trouvé une solution que je ne sais pas si elle est vraiment bien à vous de me le dire

Je pense créer un composant qui hérite de TFrame ou TPanel. Dans ce composant je met mon SG formaté comme je veux. J'y ajoute également 2 boutons (+ et -) pour ajouter et supprimer des lignes du tableau.
Ainsi quand je vais ajouter une ligne dans mon tableau père, j'ai juste à appeler mon composant et je le place où je veux sur la fenêtre...

Vous en pensez quoi