Autor Beitrag
zuse
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 06.12.04 10:02 
Hallo,

ich habe in einer ActionList den Einträgen Shortcuts zugewiesen. Diese
Actionlist habe ich teilweise mit dem MainMenu und dem PopupMenu verbunden.
Im MainMenu gibt es den Punkt Bearbeiten mit den üblichen
Unterpunkten(Kopieren,Löschen,...). Um diese Punkte dynamisch zu
aktivieren/deaktivieren fange ich das Event Bearbeiten1Click ab.

Wenn ich jetzt aber einen ShortCut benutze z.B. Strg+Entf für Löschen wird
immer Bearbeiten1Click ausgeführt, welches mir dann evtl. MainMenu.Löschen
deaktiviert. Danach wird dann ActionList.Löschen ebenfalls nicht mehr
ausgeführt. DIe Shortcuts sind alle in der ActionList definiert.

Also Shortcuts sollen immer ausgeführt werden. Das Problem ist, dass bei
Shortcuts immer Bearbeiten1Click vorher ausgeführt wird, was mir meine
MenuEinträge deaktiviert. Dann wird der Eintrag in der ActionList auch nicht
mehr ausgeführt.

Ich hoffe, ich hab das einigermaßen verständlich erklärt. Was kann ich denn
da nun machen?

mfg
zuse
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mo 06.12.04 10:18 
Was du da machen kannst ?

Am besten ein bissle Qeullcode schreiben... :) :)
Das ist es für uns einfacher dir zu helfen!
zuse Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 06.12.04 10:28 
Ok, also hier mal den Code für Löschen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
  TMainForm = class(TForm)
    Bearbeiten1: TMenuItem;
    MenuDelete: TMenuItem;
    ActDelete: TAction;
    PopDelete: TMenuItem;
    procedure Bearbeiten1Click(Sender: TObject);
    procedure ActDeleteExecute(Sender: TObject);
  end;

procedure TMainForm.Bearbeiten1Click(Sender: TObject);
begin
  // copy, delete, cut
  if ObjectVerwalter.SelectedObjects.Count > 0 then
  begin
    MenuDelete.Enabled := true;
  end
  else
  begin
    MenuDelete.Enabled:= false;
  end;
end;


Wie man sieht hab ich in der ActionList einen Eintrag ActDelete. Da wird auch der Shortcut definiert. Wenn ich im Menu auf Bearbeiten klicke wird in Bearbeiten1Click geprüft, ob delete aktiv sein soll oder nicht. Wenn ich jedoch den Shortcut benutze soll ActDeleteExecute immer ausgeführt werden, ohne zu prüfen. Das Problem ist, dass beim Shortcut trotzdem Bearbeiten1Click ausgeführt wird, obwohl ich da ja gar nicht drauf klicke?

mfg
zuse
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 06.12.04 10:34 
Dann darfst du deinem Button die Action nicht zuweisen.