[TPopupMenu][TRichEdit] : unité commune pour plusieurs frames
Bonjour à tous,
Delphi 7 Enterprise.
Je cherche à regrouper dans une unité unique et séparé différents événements déclenchés par un PopupMenu.
Ce popup menu j'aimerai l'intégrer ensuite dans différents modéles de frames de mon appli.
Dans mon unité commune, j'ai par exemple une procédure me permettant de changer la font de mon RichEdit
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| procedure TFCommon.SetFont_RE(sender:TObject);
var
popup: TPopupMenu;
component: TComponent;
frame:TComponent;
pc:integer;
begin
if Sender is TMenuItem then
begin
popup:= TMenuItem(Sender).GetParentComponent as TPopupMenu;
component:= popup.PopupComponent;
frame:=component.GetParentComponent;
for PC:=0 to frame.ComponentCount-1 do
begin
if (frame.Components[PC] is TRichEdit) then
if TRichEdit(frame.Components[PC]).Name=component.Name then
begin
ChangerLaFont_RE(TRichEdit(frame.Components[PC]));
exit;
end;
end;
end;
end; |
Dans une de mes frames (fichier unité différent), je place un richedit, et je spéficie la propriété PopupMenu, en allant rechercher le popupmenu de mon unité UCommon.
Ce qui ne marche pas dans la procédure SetFont_RE ci-dessus, c'est la boucle de recherche du composant Richedit dans ma frame.
Lorsque je fais un showmessage(component.name) il m'affiche correctement le nom du RichEdit de ma frame.
Lorsque je recherche le parent du richedit : j'obtiens bien le Panel de ma frame.
Ma question est donc : comment rendre générique la boucle suivante, pour que je puisse l'appeler depuis n'importe quelles frames ?
Code:
1 2 3 4 5 6 7 8 9
| for PC:=0 to frame.ComponentCount-1 do
begin
if (frame.Components[PC] is TRichEdit) then
if TRichEdit(frame.Components[PC]).Name=component.Name then
begin
ChangerLaFont_RE(TRichEdit(frame.Components[PC]));
exit;
end;
end; |
Merci de votre aide
@