TMainMenu/fr

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)

Un TMainMenu tmainmenu.png est un composant non visuel de l'onglet Standard de la palette de composants quii fournit un menu principal à une fiche.

Description

Le menu principal apparaît tout au dessus des fenêtres que le concepteur de fiche peut personnaliser en choisissant divers articles de menu.

Pour voir l'éditeur de menu, cliquez droit sur l'icône du menu principal de votre fiche.

Conventions

Il est courant de nommer les objets menus avec le préfixe mnu ou menu et le nom du menu. Les sous-menus prolongent ceci en préfixant avec le menu dans lequel ils sont visibles p.ex. le sous-menu Couper dans le menu Edition est généralement appelé mnuEditCut ou menuEditCut. C'est mnémonique et facile à retenir, si six mois vous devez apportez une modification, vous saurez où la porter. Remarquez que cela est une convention, non une obligation, mais cela rendra sans doute plus aisée les modifications à venir ou le compréhension si vous devez relire le code bien plus tard. Ceci est aussi valable pour une autre personne qui devrait assurer la maintenance du programme que vous avez écrit.

Commençons donc.

Création de menu

  1. Sélectionnez TMainMenu depuis la palette des composants et placez el composant sur votre fiche en cliquant sur le composant TMainMenu, puis sur la fiche, le composant apparaît sous la forme d'un carré avec la représentation d'un menu surgissant (drop-down) et le nom en dessous qui est par défaut MainMenu1.
  2. Si vous n'aimez pas le nom MainMenu1, modifiez la propriété Name dans l'inspecteur d'objet en quelque chose de plus approprié. Changeons-le en XMenu. Tapez XMenu. dans la zone à droite de la propriété Name et pressez Entrée. Le nom du composant change.
  3. Cliquez droit sur XMenu, un menu popup apparaîtra. Pour l'instant, ce que nous voulons est la première option, Editeur de menu. Cliquez dessus.
  4. L'éditeur de menu s'ouvrira avec un article de menu déjà créé avec un intitulé "New Item1". Ce sera un article de menu de niveau supérieur, similaire au menus "File Edit View Help" que vous avez déjà pu voir avant. Vous voulez probablement le modifier, cliquez donc dessus et allez sur l'inspecteur d'objet.
  5. Dans l'inspecteur d'objet, modifiez la propriété Name de MenuItem1 en quelque chose de plus parlant. Par exemple prenez mnuFile et tapez Entrée.
  6. Nous voulons un meilleur intitulé que New Item1, allons donc vers la propriété Caption et tapons &File et pressons Enter. L'esperluette (ampersand) & devant le nom est un accélérateur, qui vous permet d'ouvrir le menu en pressant Alt + la lettre soulignée. L'intitulé du menu devient File. C'est à partir de ce point que vous créez des menus de niveau supérieur supplémentaires.
  7. Allez sur la fenêtre de l'éditeur de menu. Cliquez sur File, ensuite cliquez-droit sur lui. Un menu popup apparaîtra. Cliquez sur Insérer un nouvel article après et un nouveau menu appelé New item2 apparaîtra. comme expliqué pour les deux derniers articles de menu, changez son nom en mnuHelp et son intitulé en &Help dans l'inspecteur d'objet.
  8. Faisons un article de menu sous File. Cliquez-droit sur lui puis cliquez sur Créer un sous-menu. Le menu Fichier a une flèche sur lui et un sous-menu appelé New Item2 apparaît.
  9. Modifiez-le en quelque en rapport avec ce qu'il fait, disons Open. Allez sur l'inspecteur d'objet, modifiez la propriété Name en mnuFileOpen, puis l'intitulé en &Open.
  10. Nous avons besoin d'un autre article de menu de niveau supérieur entre File et Help. Vous pouvez soit cliquer-droit sur File puis sur Insérer un nouvel article (après) soit cliquer sur Help puis sur Insérer un nouvel article (avant).
  11. Changez la propriété Name de cet article de menu en mnuEdit dans l'inspecteur d'objet ainsi que sa propriété Caption en &Edit.
  12. Continuez ainsi pour toutes les entrées de menu dont vous avez besoin

Maintenant vous avez obtenu un menu qui s'affiche à l'exécution et permet à l'utilisateur de cliquer dans les menus. Cela ne fera absolument rien. Pour que cela fasse quelque chose, vous devez ajouter des gestionnaire d'événements pour chaque menu ou sous-menu qui réagiront lors du clic. Généralement, le menu de niveau supérieur ne réagissent pas, les sous-menu si. Vous avez deux choix sur la manière dont un menu réagit ; vous pouvez insérer des gestionnaires d'événement dans le menu ou vous pouvez utiliser un composant TActionList. La principale raison pour laquelle utiliser un TActionList est que si vous définissez des opération dans le menu vous pourrez aussi en bénéficier dans une barre d'outils avec les boutons correspondants aux entrées de menu. Plutôt qu'écrire deux routines pour gérer les fonctions New et Open, vous pouvez utiliser un TActionList pour le menu et la barre d'outils à la fois. Faire cela sera expliqué ici. Pendant ce temps, j'expliquerai comment gérer un menu pour cliquer en utilisant un événement dans l'Explorateur d'objets.

Faire que le menu courant fasse quelque chose

  1. Revenez à la fenêtre de l'éditeur de menu, cliquez sur le sous-menu Open sous File. Allez à l'inspecteur d'objet, cliquez sur l'onglet Evénements. Le seul événement que vous avez réellement besoin de changer est OnClick, lequel est blanc. Si vous aviez un gestionnaire d'événement existant, vous pourrez l'utiliser mais comme vous ne le pouvez pas, vous pouvez demander à Lazarus de le créer pour vous. Sur la droite se trouve un bouton avec trois points. Cliquez dessus et une nouvelle procédure est créée dans votre code et la vue passe dans l'éditeur de code. Cela ressemblera à cela :
procedure TfrmMain.mnuFileOpenClick(Sender: TObject);
begin

end;
  1. enre les instructions begin et le end, vous pouvez écrire le code pour gérer l'Opération Ouvrir du menu. Cela peut inclure de placer un contrôle TOpenDialog depuis l'onglet Dialogs sur votre fiche et de manipuler cette boîte de dialogue pour créer le dialogue standard Ouvrir. La même chose s'applique si vous avez un sous-menu Save ou Save as.
  2. Vous répétez ce qui précède au point où j'ai mentionné comment commencer à créer des menus et des sous-menus supplémentaires, et pour chacun sur lequel l'utilisateur peut cliquer, vous devez créer des gestionnaires pour chaque option de menu au besoin.

Menu avec case à cocher

Maintenant, vous voulez peut-être seulement une case à cocher, qui quand l'utilisateur clique dessus, bascule une coche. Voyons comment faire cela.

  1. Allez sur l'éditeur de menu, cliquez sur Edit
  2. Faites un article de menu sous Edit. Cliquez-droit dessus, ^puis cliquez sur Créer un sous-menu. Allez dans l'inspecteur d'objet, cliquez sur l'onglet Propriétés s'il n'est pas déjà sélectionné. Nommez-le mnuEditPreserve (propriété Name) et intitulez-le P&reserve case (propriété Caption), l'accélérateur est la lettre R précédé par une esperluette (ampersand), vous pouvez donc taper sur Alt + C.
  3. Sélectionnez l'onglet Evénements, choisissez la propriété OnClick et cliquez sur le bouton ... correspondant.
  4. Lazarus basculera dans la fenêtre de l'éditeur de code et créera le gestionnaire d'événement OnClick pour ce sous-menu.
  5. entre les instructions begin et end, une seule ligne suffit comme suit :
mnuEditPreserve.checked := not mnuEditPreserve.checked ;
  1. Cela basculera la valeur de cochée à non cochée. Pour pouvoir l'utiliser, faites juste référence à la propriété mnuEditPreserve.checked (ou quelque soit le nom du menu, avec la propriété 'Checked). Elle est utilisée comme toute autre valeur booléenne.

Séparateurs

Parfois, vous voulez un menu qui a une ligne séparant des entrées. Par exemple, un menu Edit pourrait avoir des sous-menus pour Cut, Copy et Paste, puis avoir une ligne de séparation avant le prochain sous-menu. Pour créer une telle ligne de séparation, ajoutez seulement un sous-menu et affectez à la propriété Caption le tiret simple (-).

Raccourcis

Si vous le désirez, vous pouvez affecter à un menu une combinaison spécifique de touches, faites comme suit :

  • Sélectionnez le menu dans l'éditeur de menu, qui sera muni du raccourci clavier.
  • Dans l'inspecteur d'objet, allez dans la propriété ShortCut et cliquez sur le bouton [...].
  • Il apparaîtra une fenêtre où vous pourrez sélectionner le raccourci voulu pour votre menu.
  • A l'exécution, le gestionnaire d'événement OnClick de votre menu est appelé avec ce raccourci, comme si vous aviez cliqué sur le menu.

Image en avant d'un menu

If you want to make your menu more visually appealing or establish an optical mapping of the menu entries to a possible toolbar, you can show images in front of the menus. The following steps are necessary:

  • Add a TImageList to your form. This is found on the component palette Common Controls. Choose that component TImageList and click on your Form. Now the ImageList named ImageList1 on the form was created. These ImageList will contain all symbols or images to be displayed before the menus.
  • Right click now on the ImageList1 and open you the ImageList Editor.
  • Add all the images, one after the other, you need for your menus, to the ImageList. Simply click the button Add and select as usual an appropriate image.
  • When you have added all of the required images in the ImageList, you confirm your selection with [OK] button and the ImageList Editor is closed.
  • Now, you have to select your MainMenu, and set the property Images in the Object Inspector to your ImageList. Simply select your ImageList ImageList1 in the adjacent combobox.
  • Now open the menu editor of your menu again and select the menu that you want to get a image.
  • Go in the Object Inspector to the property ImageIndex from your menu and select the image to display in the adjacent combobox.
  • In the Menu Editor, select the next menu and choose the corresponding image for it. And so on.

Problème : Sous-menus surgissant à gauche (Windows Vista, 7 and 10)

Si vous voyez le menu déroulant aligné à droite de votre élément de menu principal, et qu'un sous-menu s'ouvre vers la gauche, c'est parce que votre Windows est réglé sur Droitier' dans Paramètres du Tablet PC '. Ceci est fait pour l'utilisation d'une tablette et l'écriture/l'appui sur l'écran, les menus sont directement visibles. Si vous êtes droitier, vous voudrez les menus à gauche pour qu'ils ne soient pas sous votre main. Pour les opérations PC normaux, cela est réglé sur les gauchers par défaut.

Vous pouvez contrôler ceci en faisant ce qui suit :

  • Pressez sur al touche Win + R.
  • Collez dedans shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E} et pressez Enter.
  • Aller dans l'onglet Autre
  • Par défaut , ce devrait être Gaucher pour que les menus apparaissent sur la droite sinon ils apparaissent sur la gauche.
  • Remarque : La flèche d'un sous-menu apparaîtra toujours à droite du menu quel que soit ce paramètre.

Voir aussi


Composant LCL
Onglet de palette Composants
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TTreeFilterEdit • TShortPathEdit • TLvlGraphControl
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHttpDataProvider • TIpHtmlPanel