Gros problème de dessin

titidebute Messages postés 3 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 26 janvier 2003 - 25 janv. 2003 à 12:27
titidebute Messages postés 3 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 26 janvier 2003 - 26 janv. 2003 à 11:02
Je voudrais dessiner sur le canvas d'un TLabel mais qui a déjà une couleur de fond (je vais m'expliquer)...

monlabel (créer dynamiquement) -> monlabel.color:=clSkyBlue;

Je voudrais afficher une séléction par du dessus style diagonale :

With monlabel.canvas do begin
brush.style:=BsFDiagonal;
brush.color:=clRed;
pen.color:clRed;
rectangle(0,0,monlabel.Width,monlabel.Height);
end;

Même dans une fonction Form.Paint cela ne fonctionne pas sauf si on enlève la couleur de fond en faisant monlabel.transparent:=true;

J'ai voulu mettre un label par dessus pour n'utiliser ce label que pour son canvas mais même résultat, il faut mettre les 2 labels en transparent:=true; pour voir le résultat.

Pourriez-vous m'aider...
Merci d'avance (au moins d'avoir lu mon message) :)

SuperOlivPop et
titidebute un pote à superolivpop

5 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
25 janv. 2003 à 19:27
Après les changements, appeler la méthode Update :
  With MonLabel, canvas do begin
    color :=  clSkyBlue;
     Update; 
    brush.style: =BsFDiagonal;
    brush.color:= clRed;
    pen.color:=clRed;
    rectangle(0,0, Width, Height);
     Update; 
  end;

May Delphi be with you
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
26 janv. 2003 à 01:26
On peut aussi dériver une nouvelle classe de TLabel en ajoutant une propriété Selected :

Type
  TSelLabel= Class(TLabel)
  private
    FSelected:Boolean;
    Procedure SetSelected(Valeur:Boolean);
  protected
    procedure Paint; override;
  published
    Property Selected:Boolean Read FSelected Write SetSelected;
  End;

{ TSelLabel }

procedure TSelLabel.Paint;
begin
  inherited;
  If FSelected
  Then Begin
    Canvas.Brush.Style:=bsBDiagonal;
    Canvas.Brush.Color:=clRed;
    Canvas.Pen  .Color:=clRed;
    Canvas.Rectangle(Canvas.ClipRect);
  End;
end;

procedure TSelLabel.SetSelected(Valeur: Boolean);
begin
  If FSelected<>Valeur
  Then Begin
    FSelected:=Valeur;
    Invalidate;
  End;
end;


Si tu ne l'utilises qu'à l'exécution, il n'est pas nécessaire de l'enregistrer :
Var lab:TSelLabel;
procedure TForm1.Button1Click(Sender: TObject);
begin
  lab:=TSelLabel.Create(Self);
  lab.Parent:=Self;
  lab.Top:=0;
  lab.Left:=0;
  lab.Caption:='sqldksldjf';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  lab.Selected:=not lab.Selected;
end;


--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
titidebute Messages postés 3 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 26 janvier 2003
26 janv. 2003 à 08:57
Un GROS MERCI à tous ceux qui pris de leur temps pour m'aider, particulièrement : DelphiProg (qui à un super site), Nono40 (très bon site également) et aussi DelphiCool

titidebute un pote à superolivpop
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 janv. 2003 à 09:50
Nono40 propose une excellente solution dont il faut s'inspirer chaque fois que possible dès que l'on a un peu d'expérience avec Delphi.
Seulement voilà, titidebute n'était pas dans ce cas, alors on a fait simple.

May Delphi be with you
0

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

Posez votre question
titidebute Messages postés 3 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 26 janvier 2003
26 janv. 2003 à 11:02
Merci DelphiProg et Nono40

J'ai enfin compris :big)
0
Rejoignez-nous