Editeur graphique en Delphi : utilisation des TShape
sebmime
Messages postés11Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention 8 septembre 2004
-
11 mai 2004 à 15:46
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 2009
-
12 mai 2004 à 09:54
Salut tout le monde,
j'ai besoin d'aide.
Je dois développer un éditeur de GRAFCET (succession d'étapes et de transitions) en DELPHI. C'est donc du dessin.
Pour les étapes (des rectangles), j'utilise des TShape. Il faut que j'affiche l'étape et son numéro. Mais je ne sais pas comment on peut écrire dans un TShape. Il me semble que ce n'est pas possible.
L'autre solution est d'ajouter un TLabel dans le TShape. Est-ce que quelqu'un sait faire çà.
J'espère avoir été clair.
Sinon si certains d'entre vous ont déjà fait des éditeurs graphiques, quelques exemples pourraient m'aider.
Merci
A voir également:
Editeur graphique en Delphi : utilisation des TShape
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 12 mai 2004 à 09:54
Salut,
Je pense que le plus simple est de créer un nouveau composant héritant de TShape (par ex TTextShape) de rendre visible les propriétés Caption et Font (héritées de TControl) et de surcharger la méthode Paint.
Ce qui donne :
unit TextShape;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls;
type
TTextShape = class(TShape)
private
protected
procedure Paint; override;
public
published
property Caption;
property Font;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Exemples', [TTextShape]);
end;
procedure TTextShape.Paint;
var
X, Y: Integer;
Rect : TRect;
Size : TSize;
begin
// Méthode hétitée de TShape
Inherited Paint;
With Canvas do
begin
// taille du texte
Size := TextExtent(Caption);
// Taille du controle
Rect := ClientRect;
// Centrage
X := (Rect.Right - Size.Cx) div 2;
Y := (Rect.Bottom - Size.Cy) div 2;
// Affichage du texte
TextOut(X,Y,Caption);
end;
end;