Changement du style du crayon

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation des crayons


La propriété Style d’un crayon permet de créer des lignes continues, pointillées ou à tirets.

La définition des propriétés d'un crayon est une opération qui se prête parfaitement au partage d'événements entre plusieurs contrôles. Pour déterminer le contrôle qui reçoit l'événement, il suffit de tester le paramètre Sender.

Pour créer un gestionnaire pour l'événement clic de chacun des six boutons de style de la barre d'outils d'un crayon, procédez comme suit :

  1. Sélectionnez les six boutons de style de crayon, choisissez Inspecteur d'objets > Evénements > Evénement OnClick et tapez SetPenStyle.dans la colonne des gestionnaires.L'éditeur de code génère un gestionnaire vide appelé SetPenStyle et l'attache à l'événement OnClick de chacun des six boutons.
  2. Remplissez le gestionnaire de l’événement Onclick en définissant le style du crayon selon la valeur du paramètre Sender qui désigne le contrôle ayant envoyé l’événement clic :
procedure TForm1.SetPenStyle(Sender: TObject);
begin
  with Canvas.Pen do
  begin
    if Sender = SolidPen then Style := psSolid
    else if Sender = DashPen then Style := psDash
    else if Sender = DotPen then Style := psDot
    else if Sender = DashDotPen then Style := psDashDot
    else if Sender = DashDotDotPen then Style := psDashDotDot
    else if Sender = ClearPen then Style := psClear;
  end;
end;
void __fastcall TForm1::SetPenStyle(TObject *Sender) {
	if (Sender == SolidPen)
		Canvas->Pen->Style = psSolid;
	else if (Sender == DashPen)
		Canvas->Pen->Style = psDash;
	else if (Sender == DotPen)
		Canvas->Pen->Style = psDot;
	else if (Sender == DashDotPen)
		Canvas->Pen->Style = psDashDot;
	else if (Sender == DashDotDotPen)
		Canvas->Pen->Style = psDashDotDot;
	else if (Sender == ClearPen)
		Canvas->Pen->Style = psClear;
}

Le code du gestionnaire d’événement ci-dessus peut être réduit en plaçant les constantes de style de pinceau dans les propriétés Tag des boutons de style de pinceau. L'événement de code ressemblerait à :

void __fastcall TForm1::SetPenStyle(TObject *Sender) {
    if (Sender->InheritsFrom(__classid(TSpeedButton)) Canvas->Pen->Style =
        (TPenStyle)((TSpeedButton*)Sender)->Tag;}

Voir aussi