2014-05-13

translation

← Older revision

Revision as of 09:55, 13 May 2014

(13 intermediate revisions by one user not shown)

Line 22:

Line 22:

 

# Im Objekt-Inspektor, ändern Sie die Name-Eigenschaft von MenuItem1 zu etwas besser geeignetem. Sagen wir, dies ist das Menü Datei (engl. File), also ändern Sie den Namen, indem Sie '''mnuFile''' eingeben und mit Enter bestätigen.

 

# Im Objekt-Inspektor, ändern Sie die Name-Eigenschaft von MenuItem1 zu etwas besser geeignetem. Sagen wir, dies ist das Menü Datei (engl. File), also ändern Sie den Namen, indem Sie '''mnuFile''' eingeben und mit Enter bestätigen.

 

# Wir wollen eine bessere Beschriftung als "New Item1". Gehen Sie auf die Caption-Eigenschaft, und geben Sie '''&Datei''' ein und drücken Sie Enter. Das Und-Zeichen '''&''' vor dem Namen ist ein ''Beschleuniger'', der mit dem Drücken der Taste [Alt] und dem unterstrichenem Symbol das Öffnen eines Menüs ermöglicht. Die Beschriftung für das Menü ändert sich zu '''<u>D</u>atei'''.

 

# Wir wollen eine bessere Beschriftung als "New Item1". Gehen Sie auf die Caption-Eigenschaft, und geben Sie '''&Datei''' ein und drücken Sie Enter. Das Und-Zeichen '''&''' vor dem Namen ist ein ''Beschleuniger'', der mit dem Drücken der Taste [Alt] und dem unterstrichenem Symbol das Öffnen eines Menüs ermöglicht. Die Beschriftung für das Menü ändert sich zu '''<u>D</u>atei'''.



# Jetzt wollen wir noch weitere Top-Level-
Menüs
erstellen. Gehen Sie zurück zu dem Menü-Editor-Fenster. Klicken Sie mit der rechten Maustaste auf <u>D</u>atei. Ein Popup-Menü erscheint. Klicken Sie auf ''Neuen Eintrag einfügen (dahinter)''. Ein neues Menü, genannt ''New Item2'' erscheint. Wie in den letzten beiden Positionen erläutert, ändern Sie im Objektinspektor den Namen zu '''mnuHelp''' und die Bezeichnung (Caption) zu '''&Hilfe'''.

+

# Jetzt wollen wir noch weitere Top-Level-
Menüeinträge
erstellen. Gehen Sie zurück zu dem Menü-Editor-Fenster. Klicken Sie mit der rechten Maustaste auf <u>D</u>atei. Ein Popup-Menü erscheint. Klicken Sie auf ''Neuen Eintrag einfügen (dahinter)''. Ein neues Menü, genannt ''New Item2'' erscheint. Wie in den letzten beiden Positionen erläutert, ändern Sie im Objektinspektor den Namen zu '''mnuHelp''' und die Bezeichnung (Caption) zu '''&Hilfe'''.

 

# Jetzt wollen wir noch ein Untermenü (engl. Submenu) erstellen. Dazu rechtsklicken Sie auf <u>D</u>atei und wählen '''Erzeuge Untermenü'''. Das Menü Datei hat jetzt ein Untermenü (an dem Pfeil zu erkennen) bezeichnet als ''New Item3''.

 

# Jetzt wollen wir noch ein Untermenü (engl. Submenu) erstellen. Dazu rechtsklicken Sie auf <u>D</u>atei und wählen '''Erzeuge Untermenü'''. Das Menü Datei hat jetzt ein Untermenü (an dem Pfeil zu erkennen) bezeichnet als ''New Item3''.



# Ändern Sie die Bezeichnung zu etwas Sinnvollem, z.B. "Öffnen". Gehen Sie in den Objektinspektor und ändern Sie diesem Menüeintrag die Eigenschaft Name zu '''mnuFileOpen''' und Caption zu '''&
Open
'''.  

+

# Ändern Sie die Bezeichnung zu etwas Sinnvollem, z.B. "Öffnen". Gehen Sie in den Objektinspektor und ändern Sie diesem Menüeintrag die Eigenschaft Name zu '''mnuFileOpen''' und Caption zu '''
Ö
&
ffnen
'''.  

 

# Nun benötigen wir noch ein Top-Level-Menü zwischen '''<u>D</u>atei''' und '''<u>H</u>ilfe'''. Sie können entweder auf '''<u>D</u>atei''' rechtsklicken und '''Neuen Eintrag einfügen (dahinter)''' wählen oder auf '''<u>H</u>ilfe''' rechtsklicken und '''Neuen Eintrag einfügen (davor)''' wählen.

 

# Nun benötigen wir noch ein Top-Level-Menü zwischen '''<u>D</u>atei''' und '''<u>H</u>ilfe'''. Sie können entweder auf '''<u>D</u>atei''' rechtsklicken und '''Neuen Eintrag einfügen (dahinter)''' wählen oder auf '''<u>H</u>ilfe''' rechtsklicken und '''Neuen Eintrag einfügen (davor)''' wählen.

 

# Ändern Sie dessen Bezeichnung (Caption) zu '''&Bearbeiten''' (engl. Edit) und Name zu '''mnuEdit'''.

 

# Ändern Sie dessen Bezeichnung (Caption) zu '''&Bearbeiten''' (engl. Edit) und Name zu '''mnuEdit'''.

 

# Verfahren Sie so weiter mit jedem Menü oder Untermenü, welche Sie benötigen.

 

# Verfahren Sie so weiter mit jedem Menü oder Untermenü, welche Sie benötigen.

 

 



Ihr nun so erstelltes Menü wird zur Laufzeit angezeigt und ermöglicht dem Nutzer auf die einzelnen Menüs zu klicken. Allerdings wird bei einem Klick noch nicht wirklich was geschehen. Damit Sie Menüpunkte haben, die etwas tun, müssen Sie jedem Menü
und
Untermenü ein [http://de.wikipedia.org/wiki/Ereignis_%28Programmierung%29 Ereignis] (engl. Event) zuweisen,
das
auf dessen Klicken reagiert. Im Normalfall benötigen Top-Level-Menüs keine [[Event_order/de| Ereignisbehandlungsroutinen]] (engl. listener, observer, event handler), sie dienen zumeist nur der besseren Übersicht und Sortierung, reagieren werden die Untermenüs.<br>  

+

Ihr nun so erstelltes Menü wird zur Laufzeit angezeigt und ermöglicht dem Nutzer auf die einzelnen Menüs zu klicken. Allerdings wird bei einem Klick noch nicht wirklich was geschehen. Damit Sie Menüpunkte haben, die etwas tun, müssen Sie jedem Menü
bzw.
Untermenü ein [http://de.wikipedia.org/wiki/Ereignis_%28Programmierung%29 Ereignis] (engl. Event) zuweisen,
welches dann
auf dessen Klicken reagiert. Im Normalfall benötigen Top-Level-Menüs keine [[Event_order/de| Ereignisbehandlungsroutinen]] (engl. listener, observer, event handler), sie dienen zumeist nur der besseren Übersicht und Sortierung, reagieren werden die Untermenüs.<br>  

 

 

 

Sie haben zwei Möglichkeiten, in den Menüs zu reagieren:  

 

Sie haben zwei Möglichkeiten, in den Menüs zu reagieren:  

Line 35:

Line 35:

 

* Sie können ein [[TActionList/de|TActionList]] Komponente verwenden.<br>

 

* Sie können ein [[TActionList/de|TActionList]] Komponente verwenden.<br>

 

 



Der Hauptgrund für den Einsatz einer TActionList ist, wenn Sie planen, eine Symbolleiste mit Symbolen, die den Menüeinträgen entsprechen, in Ihrer Anwendung zu erstellen. Als Beispiel, Sie haben in dem Menü "Datei", die Untermenüs "Neu", "Öffnen", "Speichern", "Speichern unter" , "Beenden" , etc. und fügen eine Symbolleiste mit den Schaltflächensymbolen (engl. Icons) Neu, Öffnen, Speichern und Speichern hinzu, können Sie mittels der TActionList die verschiedenen Events den jeweiligen Menüeinträgen und Symbolen zuordnen und sparen sich somit das Schreiben von zwei Routinen. Das Untermenü "Neu" verwendet dann die gleiche Procedur wie das Symbol "Neu". Wie eine TActionList verwendet wird, wird in [[TActionList/de|TActionList]] näher (z.Zt. dieser Übersetzung
noch nicht erstellt --[[User:Michl|Michl]] 09:57,
13 May 2014
(CEST
)) erklärt.<br>

+

Der Hauptgrund für den Einsatz einer TActionList ist, wenn Sie planen, eine Symbolleiste mit Symbolen, die den Menüeinträgen entsprechen, in Ihrer Anwendung zu erstellen. Als Beispiel, Sie haben in dem Menü "Datei", die Untermenüs "Neu", "Öffnen", "Speichern", "Speichern unter" , "Beenden" , etc. und fügen eine Symbolleiste mit den Schaltflächensymbolen (engl. Icons) Neu, Öffnen, Speichern und Speichern hinzu, können Sie mittels der TActionList die verschiedenen Events den jeweiligen Menüeinträgen und Symbolen zuordnen und sparen sich somit das Schreiben von zwei Routinen. Das Untermenü "Neu" verwendet dann die gleiche Procedur wie das Symbol "Neu". Wie eine TActionList verwendet wird, wird in [[TActionList/de|TActionList]] näher (z.Zt. dieser Übersetzung
(
13 May 2014)
noch nicht erstellt
) erklärt.<br>

 

 



Für die Zwischenzeit , werde ich erklären
, wie
man ein Menü , klicken
Sie
behandeln
mit
einer Veranstaltung in der< Objekt-Explorer
.

+

Nachfolgend wird erklärt
, wie Sie
die Ereignisse von Menüklicks
mit
Hilfe des Objektinspektors bearbeiten
.

 

 



Now
,
all this will get you is a menu that displays at run time and will allow the user to click on the menus. It won
'
t actually do anything
.
To have the menu items do something
,
you have to add
''
events
''
for each menu or submenu that is to react to being clicked upon
.
Usually
,
top-level menus don
'
t react
,
the submenus do
.
You have two choices on how to have the menu react; you can insert the events into the menu
,
or you can use a TActionList component
.
The main reason for using a TActionList is if you plan to have
an
icon toolbar
,
say that you have a set of menus with "File" then New, Open, Save, Save As, Quit, etc
.
as submenus, and you
'
re going to have a toolbar with New, Open, Save and Save As as buttons as well
.
Rather than writing two routines to handle the New and Open functions, you use a TActionList for both the Menu and the toolbar
.
How to do that using a TActionList will be explained there
.
For the mean time, I
'
ll explain how to handle a menu click using an event
in
the Object Explorer
.

+

==Machen
,
dass das Menü tatsächlich etwas tut==

 

+

 

 

+

* Gehen Sie zurück zu dem Menü-Editor und wählen Sie auf das
'
''Ö<u>f</u>fnen''' Untermenü von '''<u>D</u>atei''' mit einem Klick an
.
Gehen Sie nun auf die Objekt-Inspektor-Fenster
,
und wählen Sie den Reiter
''
'Ereignisse'
''.
Die einzigste Ereigniss
,
die Sie wirklich ändern wollen, ist ''OnClick'
',
das aktuell noch leer ist
.
Wenn Sie schon einen vorhandenen Eventhandler benutzen wollen
,
können Sie diesen verwenden und entsprechend auswählen, ansonsten können Sie sich von Lazarus einen erstellen lassen
.
Auf der rechten Seite ist ein Button mit 3 Punkten. Klicken Sie diesen
an,
und ein neue Procedure (Ihr neu erstellter Eventhandler) wird im Code erstellt und die Ansicht wechselt zum Quelltexteditor
.
Ihre Procdure wird in etwa so aussehen:

 

+

 

 

+

<syntaxhighlight>

 

+

procedure TfrmMain.mnuFileOpenClick(Sender: TObject);

 

+

begin

 

+

 

 

+

end;

 

+

</syntaxhighlight>

 

+

 

 

+

* Zwischen dem Anweisungen (Statements)
'
''begin''' und '''end''' können Sie nun die Anweisungen für den Menü-Eintrag-Klick ''Öffnen'' einfügen
.
<br>

 

+

<br>

 

+

 

 

+

In Ihrem Fall könnten Sie ein TOpenDialog-Steuerelement auf die Form einfügen und den Standard-Dialog für Ihre Zwecke nutzen:

 

+

* Legen Sie dafür ein [[TOpenDialog]]-Steuerelement (Komponentenpalette Dialogs) auf Ihrer Form ab (Name ''OpenDialog1'')
.
Nun ändern Sie Ihre Procedure zu:

 

+

<syntaxhighlight>

 

+

procedure TfrmMain
.
mnuFileOpenClick(Sender: TObject);

 

+

begin

 

+

  if OpenDialog1.Execute then          //nur wenn eine Datei gewählt wurde

 

+

    ShowMessage(OpenDialog1.Filename);  //den Namen (incl. Pfad) der gewählten Datei anzeigen

 

+

end;

 

+

</syntaxhighlight>

 

+

* Analog verfahren Sie mit anderen Menüeinträgen (für ein
'
''<u>S</u>peichern'''-Untermenü, können Sie ein [[TSaveDialog]]-Steuerelement nutzen) und wiederholen die Schritte von Wahl des Untermenüs bis Einfügen Ihres eigenen Codes
in
den jeweiligen Eventhandler
.

 

+

 

 

+

==Check-box Menü==

 

+

 

 

+

- in Bearbeitung --[[User:Michl|Michl]] 11:55, 13 May 2014 (CEST)

 

 



==Making the menu actually do something==

 



# Go back to the Menu Editor window, click on the '''<u>O</u>pen''' submenu under '''<u>F</u>ile'''. Go to the Object Inspector window, click on the '''Events''' tab. The only event you really want to change is OnClick, which is blank. If you had an existing event handler, you could use it, but since you don't, you can get Lazarus to create it for you. On the right is a button with 3 dots. Click on it, and a new procedure is created in your code, and the view switches to the code window.  It will look similar to this.

 



#:'''procedure''' TfrmMain.mnuFileOpenClick(Sender: TObject);

 



#:'''begin'''<br/><br/>

 



#:'''end''';

 



# between tbe '''begin''' and '''end''' statements you would write the code for handling the Open action on the menu. This might include placing a ''TOpenDialog'' control from the Dialogs Tab on your form, and manipulating that dialog to create the standard 'Open' dialog. Same thing applies if you have a '''<u>S</u>ave''' or '''Save <u>a</u>s''' submenu.

 



# You repeat the above at the point where I mentioned how to start creating additional menus and submenus, and for each one that the user can click upon, you would create handlers for each menu option as needed.

 



==Check-box menu==

 

 

Now, maybe you just want a check-box menu, where when the user clicks on it, it turns a check mark on this box on or off. Let's discuss how to do that.

 

Now, maybe you just want a check-box menu, where when the user clicks on it, it turns a check mark on this box on or off. Let's discuss how to do that.

 

# Go to the Menu Editor window Click on '''<u>E</u>dit'''

 

# Go to the Menu Editor window Click on '''<u>E</u>dit'''

Show more