Bonjour,
Quelqu'un connait-il une méthode pour écrire certains titres de colonnes verticalement (comme dans excel) pour gagner de la place en largeur lorsque de nombreuses colonnes ne doivent contenir qu'un ou deux caractères.
Merci.
Bonjour,
Quelqu'un connait-il une méthode pour écrire certains titres de colonnes verticalement (comme dans excel) pour gagner de la place en largeur lorsque de nombreuses colonnes ne doivent contenir qu'un ou deux caractères.
Merci.
Bonjour,
On peut choisir la hauteur de chaque ligne individuellement.
Pour écrire en vertical, le faire "à la mano" via le OnDrawCell.
Pour la hauteur j'ai trouvé, OnDrawCell je sais le lancer, mais ce qu'il faut écrire dedans c'est là que ça coince.Envoyé par Graffito
Je ne sais comment faire redessiner verticalement le texte.
Merci de bien vouloir m'aiguiller![]()
salut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if ((ARow > 0) and (ACol =0)) Then begin R := SG.CellRect(ACol,ARow); P.X := R.Left; P.Y := R.Top; // P := TDrawGrid(Sender).ClientToScreen(P); SG.canvas.TextOut(P.X,P.Y,Libel[ARow]); end;
@+ Phil
Code trouvé sur le net :
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 procedure AngleTextOut(CV: TCanvas; const sText: String; x, y, angle:integer); // angle en degré var LogFont: TLogFont; SaveFont: TFont; begin SaveFont := TFont.Create; SaveFont.Assign(CV.Font); GetObject(SaveFont.Handle, sizeof(TLogFont), @LogFont); with LogFont do begin; // valeur d'inclinaison en dixième de degré : lfEscapement := angle *10de 0 à 3600 lfPitchAndFamily := FIXED_PITCH or FF_DONTCARE; end; {with} CV.Font.Handle := CreateFontIndirect(LogFont); SetBkMode(CV.Handle, TRANSPARENT); CV.TextOut(x, y, sText); CV.Font.Assign(SaveFont); SaveFont.Free; end;
salut
j'avai pas tout compris![]()
voila ce qu'il faut faire
@+ Phil
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 procedure TForm1.DrawRotatedText(angle,X_,Y_:integer;Text_:string;Canvas_:TCanvas); var lf : TLogFont; tf : TFont; begin with Canvas_ do begin tf := TFont.Create; try tf.Assign(Font); GetObject(tf.Handle, sizeof(lf), @lf); lf.lfEscapement := angle*10; lf.lfOrientation := angle*10; tf.Handle := CreateFontIndirect(lf); Font.Assign(tf); TextOut(X_, Y_, Text_); lf.lfEscapement := 0; lf.lfOrientation := 0; tf.Handle := CreateFontIndirect(lf); Font.Assign(tf); finally tf.free; end; end; end; procedure TForm1.SGDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var P: tpoint; R: TRect; begin if ((ARow > 0) and (ACol =0)) Then begin (sender as TStringGrid).Canvas.Font.Name := 'Arial'; (sender as TStringGrid).Canvas.Font.Size := 8; (sender as TStringGrid).Canvas.Font.Style := [fsbold]; (sender as TStringGrid).Canvas.FillRect(Rect); (sender as TStringGrid).Font.Color := clBlue; R := SG.CellRect(ACol,ARow); P.X := R.Left+Trunc((R.Right-R.left)/2);; P.Y := R.Top+Trunc((R.Top-R.Bottom)/2); DrawRotatedText(270,P.X+10,P.Y,Libel[ARow],(sender as TStringGrid).Canvas) ; end; end;
Partager