Suppression de boutons de barres d'outils
Remonter à Utilisation d'objets natifs de l'EDI
Il n'y a pas de moyen simple de retirer un bouton d'une barre d'outils; vous devez envoyer le message CM_CONTROLCHANGE, le premier paramètre indique le contrôle à modifier et le second a la valeur zéro pour le retirer ou une valeur non nulle pour l'ajouter à la barre d'outils. Après avoir retiré les boutons de barre d'outils, le destructeur supprime l'action et l'élément de menu. La suppression de ces éléments les retire automatiquement des objets ActionList et MainMenu de l'EDI.
procedure remove_action (Action: TAction; ToolBar: TToolBar); var I: Integer; Btn: TToolButton; begin for I := ToolBar.ButtonCount - 1 downto 0 do begin Btn := ToolBar.Buttons[I]; if Btn.Action = Action then begin { Retirer "Btn" de "ToolBar" } ToolBar.Perform(CM_CONTROLCHANGE, WPARAM(Btn), 0); Btn.Free; end; end; end; destructor MyWizard.Destroy; var Services: INTAServices; Btn: TToolButton; begin Supports(BorlandIDEServices, INTAServices, Services); { Vérifier toutes les barres d'outils et retirer tous les boutons utilisant cette action. } remove_action(NewAction, Services.ToolBar[sCustomToolBar]); remove_action(NewAction, Services.ToolBar[sDesktopToolBar]); remove_action(NewAction, Services.ToolBar[sStandardToolBar]); remove_action(NewAction, Services.ToolBar[sDebugToolBar]); remove_action(NewAction, Services.ToolBar[sViewToolBar]); remove_action(NewAction, Services.ToolBar[sInternetToolBar]); NewItem.Free; NewAction.Free; end;
void __fastcall remove_action (TAction* action, TToolBar* toolbar) { for (int i = toolbar->ButtonCount; --i >= 0; ) { TToolButton* button = toolbar->Buttons[i]; if (button->Action == action) { // Retirer "button" de "toolbar". toolbar->Perform(CM_CONTROLCHANGE, WPARAM(button), 0); delete button; } } } __fastcall MyWizard::~MyWizard() { _di_INTAServices services; BorlandIDEServices->Supports(services); // Vérifier toutes les barres d'outils et retirer tous les boutons utilisant // cette action. remove_action(action, services->ToolBar[sCustomToolBar]); remove_action(action, services->ToolBar[sDesktopToolBar]); remove_action(action, services->ToolBar[sStandardToolBar]); remove_action(action, services->ToolBar[sDebugToolBar]); remove_action(action, services->ToolBar[sViewToolBar]); remove_action(action, services->ToolBar[sInternetToolBar]); delete menu_item; delete action; }