Création de tableau

madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011 - 12 mai 2009 à 13:29
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011 - 13 mai 2009 à 17:15
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

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
12 mai 2009 à 13:52
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%" />
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
12 mai 2009 à 14:12
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
12 mai 2009 à 19:25
bonsoir,

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

cantador
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
12 mai 2009 à 22:20
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 mai 2009 à 08:15
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
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
13 mai 2009 à 08:24
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 ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 mai 2009 à 09:46
Oui, tout à fait
Mais que se passe t-il quand tu atteint le bas de l'écran ?

cantador
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
13 mai 2009 à 09:59
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...
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 mai 2009 à 17:03
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 mai 2009 à 17:05
et autre avantage qui n'est pas des moindres ta base pourrait être mise en réseau et donc partageable entre plusieurs utilisateurs.

cantador
0
madcap Messages postés 77 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 février 2011
13 mai 2009 à 17:15
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
0
Rejoignez-nous