J'ai un composant personnalisé de type TSpeedButton qui a deux propriétés supplémentaires définies :
CommentHeading: string;
CommentText: string;
J'ai défini CommentHeading au moment de la conception.
Lorsque vous appuyez sur le bouton de vitesse, un mémo s'affiche avec, en dessous, un bouton permettant de sauvegarder son contenu. La procédure qui gère cela :
procedure CustomSpeedButton1Click(Sender: TObject);
begin
Receiver := CustomSpeedButton1.Name; // possibly used to save the memo text back to this speedbuttons property after comments are submitted
ViewComments(CustomSpeedButton1.CommentTitle,CustomSpeedButton1.CommentText);
end;
Et la procédure ViewComments elle-même :
procedure ViewComments(comment_caption:string; comment_text:string);
begin
label15.Hide; // label showing editing in progress, hidden until user begins typing
Button1.Enabled := false; // the button for saving the memo text, hidden until user begins typing
CommentsBox.Visible := true; // pop up the comment box at the bottom of the form
CommentsBox.Caption := 'Comments: ' + comment_caption;
CommentsMemo.Text := comment_text; // if there are existing comments assign them to memo
end;
Le contenu du mémo doit être attribué à la propriété CommentText du SpeedButton personnalisé.
Ce que je pensais initialement, c'est que je pourrais passer le nom du composant à une variable lorsque le bouton rapide personnalisé est pressé et ensuite récupérer ce nom lorsque le bouton d'enregistrement du mémo est pressé et l'utiliser pour affecter le texte du mémo à la propriété CommentText du bouton rapide. Mais j'ai réalisé que pour faire cela, je devrais utiliser une sorte d'instruction cas..of qui vérifie chaque nom de SpeedButton possible et ensuite assigner la valeur du mémo à ses propriétés et cela semble ridiculement fastidieux.
Existe-t-il un moyen plus simple d'affecter le texte du mémo au bouton rapide qui a ouvert le mémo au départ ?