Bonjour,
tout est dans la question.
J'ai un StrinGrid alClient sur un panel. Quelqu'un peut il m'expliquer comment 'resizer' les colonnes et les ligne quand quand on maximize le formulaire (donc le panel)?
D'avance merci
codial
Bonjour,
tout est dans la question.
J'ai un StrinGrid alClient sur un panel. Quelqu'un peut il m'expliquer comment 'resizer' les colonnes et les ligne quand quand on maximize le formulaire (donc le panel)?
D'avance merci
codial
"resizer" les colonnes en largeur
et pour la hauteur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 stinggrid.colwidths[colonne]:=largeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 stinggrid.RowHeights[ligne]:=Hauteur;
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
Bonjour,
merci pour la réponse, mais ça je connais! Je me suis mal expliquer....Non, en fait il faut que la largeur et la hauteur des colonnes et les lignes s'adaptent en fonction des dimensions du formulaire. Si j'agrandi le form les colonnes s'agrandissent et vis versa.
cordialement, codia
A toi de les calculer dans l'événement OnResize de la fiche.
Bonjour Andnotor,
j'esaie justement de les caculer dans l'événement OnResize de la fiche mais je n'y arrive pas. Tu as une idée comment faire ???
Cordialement,codial.
pour l'idée: considère que les largeurs de tes colonnes sont proportionnelles à la largeur de la fiche par exemple.
au démarrage de l'appli ou en dur, tu enregistre les différents coefficients de proportionnalité de la largeur de tes colonnes par rapport à celle de ta fiche, puis à chaque redimensionnement, eh bien tu fais juste une multiplication pour avoir la largeur de chacune de tes colonnes.
Merci evarisnea pour ta répose mais je n'y arrive pas.
Déja, comment faire pour récupérer
Ensuite
Code : Sélectionner tout - Visualiser dans une fenêtre à part enregistre les différents coefficients de proportionnalité de la largeur de tes colonnes par rapport à celle de ta fiche
J'ai testé la 2eme suggestion mais je n'y arrive.
Code : Sélectionner tout - Visualiser dans une fenêtre à part puis à chaque redimensionnement, eh bien tu fais juste une multiplication pour avoir la largeur de chacune de tes colonnes
Aurait tu sous la main un code d'exemple???
D'avance merci, codial
ça ressemble à quelque chose comme ceci :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private { Déclarations privées } FCoefCol1, FCoefCol2 , FCoefCol3 , FCoefCol4 , FCoefCol5 :Single; public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin //calcul des coefficients FCoefCol1 := StringGrid1.ColWidths[0] / self.Width; FCoefCol2 := StringGrid1.ColWidths[1] / self.Width; FCoefCol3 := StringGrid1.ColWidths[2] / self.Width; FCoefCol4 := StringGrid1.ColWidths[3] / self.Width; FCoefCol5 := StringGrid1.ColWidths[4] / self.Width; end; procedure TForm1.FormResize(Sender: TObject); begin //redimensionnement de la grille StringGrid1.ColWidths[0] := Trunc(FCoefCol1 * self.Width); StringGrid1.ColWidths[1] := Trunc(FCoefCol2 * self.Width); StringGrid1.ColWidths[2] := Trunc(FCoefCol3 * self.Width); StringGrid1.ColWidths[3] := Trunc(FCoefCol4 * self.Width); StringGrid1.ColWidths[4] := Trunc(FCoefCol5 * self.Width); end; end.
Bonjour evarisnea,
merci pour cette solution qui fonctionne!
Cependant:
1-Les grilles ne remplissent pas tout le stringgrid ce qui laisse un vide à droite.
2-Quand je diminue le form, il y a des grilles qui n'apparaissent plus au lieu de diminuer pour être toutes visibles.
3- Pour la hauteur des grilles, même principe ?
Je te remercie pour tes réponses.
Cordialement, codial
PS: C'est la première fois que j'utilise ce composant.
ça a toujours été ainsi avec les grilles. si tu veux éviter cela, tu doit t'arranger à ce que les colonnes soient assez larges pour occuper toute la largeur de la grille (quoique tu devras forcément laisser un petit espace à la droite du stringgrid pour la barre de redimensionnement verticale). tu peux le faire par calcul (en même temps que tu calcules les coefficients) ou à la conception.
j'ai pas bien compris là. normalement, si tu diminue trop ta form, la grille devient tellement petite qu'elle est invisible non ? si tu ne veux pas cela tu doit éviter que la grille ne soit trop réduite, dans l'évènement OnResize ou plus simplement en définissant la propriété Constraints.
oui
même le dbgrid tu n'as jamais utilisé? en général toutes les grilles ont ce comportement, et on s'y habitue
Bonjour evarisnea,
merci pour ses réponses détaillée
Effectivement je suis bête, je n'est pas fait cette comparaison. Si, bien sur, que j'utilise régulièrement le DBGrid mais la gestion d'un Stringrid est plus complexe à mon avis;;; mais comme je l'ai dit c'est la première fois que j'utilise ce composant.Cependant:
1-Les grilles ne remplissent pas tout le stringgrid ce qui laisse un vide à droite
En fait dans une appli j'ai intégré un calendier avec des listbox.Mais le problème est que je ne peux afficher que ligne par ligne et seulement une partie de l'enregistrement. Aussi, j'essaie de le reprendre en essayant d'y intégrer Tmemo qui apparaitrait quand je clique sur une cellule. C'est pour ça que je me suis oriente vers un stringgrid, mais pas facile !!!!!
Ce que je voulais dire c'est que quand je diminue le form, mes 7 cellules devrait apparaître, même en petites mais il y en a qui disparaissent, par exemple le form réduit me laisse juste une cellule. Mais cet aspect n'est pas contraigant en soi car effectivement j'utiliserais la propriété Constraints.2-Quand je diminue le form, il y a des grilles qui n'apparaissent plus au lieu de diminuer pour être toutes visibles
Encore une question si tu veux bien: Pourrait tu m'expliquer comment faire apparaître mon Tmemo sur la cellule sélectionnée?
Cordialment, codial
Bonjour evarisnea,
merci pour tes réponses et ton temps !
Bien cordialement, codial
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager