AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TAction, Shortcut Probleme

Ein Thema von haentschman · begonnen am 30. Mai 2013 · letzter Beitrag vom 30. Mai 2013
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.460 Beiträge
 
Delphi 12 Athens
 
#1

AW: TAction, Shortcut Probleme

  Alt 30. Mai 2013, 18:49
Danke für die ausführlichen Ausführungen
Zitat:
@haentschman
Baue für alle Aufgaben eine eigene Action, diese aber ohne Shortcut.

Für jeden Shortcut gibt es ebenfalls eine Action. In der Executemethode dieser Actions kannst Du dann über case ActivePageIndex... die jeweils dann benötigte Action aufrufen. Ggfls. auch geschachtelt, wenn auf einer Seite des PageControls ein TabSheet mit mehreren Seiten ist.
Das riecht nach einem Verständnisproblem meinersets. Dieser Vorschlag gefällt mir.

In der Zwischenzeit habe ich das mit den Frames ausprobiert. Jeder Frame hat seine eigene ActionList. Die Frames werden auf TabSheet positioniert. In diesem Falle werden gar keine Shortcuts ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.773 Beiträge
 
Delphi 12 Athens
 
#2

AW: TAction, Shortcut Probleme

  Alt 30. Mai 2013, 19:00
In der Zwischenzeit habe ich das mit den Frames ausprobiert. Jeder Frame hat seine eigene ActionList. Die Frames werden auf TabSheet positioniert. In diesem Falle werden gar keine Shortcuts ausgeführt.
Haben die Frames als Owner das Form?

Bei der Suche nach der geeigneten Action werden alle ActionLists durchsucht, die als Owner das Form haben oder sich irgendwie das Form als indirekten Owner haben. Wenn die Frames in der IDE gesetzt worden sind, sollte es funktionieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.460 Beiträge
 
Delphi 12 Athens
 
#3

AW: TAction, Shortcut Probleme

  Alt 30. Mai 2013, 19:05
Danke...

Owner: TabSheet
Parent: TabSheet

Ich schlaf nochmal drüber...

Delphi-Quellcode:
function TfmMain.CreatePrintTab: TAdvOfficePage;
var
  aTab: TAdvOfficePage;
  aFrame: TfrPrint;
begin
  aTab:= TAdvOfficePage.Create(nil);
  aTab.Name := 'tabPrint';
  aTab.ImageIndex:= 131;
  aTab.Caption:= 'Druckauftrag';
  aFrame:= TfrPrint.Create(aTab, FGUI.DBFramework, FGUI.Preferences.CurrentUser);
  FinishTab(aFrame, aTab);
  Result:= aTab;
end;
Delphi-Quellcode:
procedure TfmMain.FinishTab(aFrame: TfrBase; aTab: TAdvOfficePage);
begin
  aFrame.OnClose:= DoOnCloseTab;
  aFrame.Parent:= aTab;
  aFrame.Align:= alClient;
  aFrame.Show;
  pgrMainDetails.ActivePageIndex:= pgrMainDetails.AddAdvPage(aTab);
  aTab.Show;
end;

Geändert von haentschman (30. Mai 2013 um 19:08 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: TAction, Shortcut Probleme

  Alt 30. Mai 2013, 19:56
Zitat von haentschman:
Das riecht nach einem Verständnisproblem meinersets.
Inwieweit?

Die Actionlisten haben ein Attribut State.
Die Delphi 7-Hilfe schreibt dazu:
Zitat:
Die Eigenschaft State gibt an, ob die Aktionen in der Aktionsliste reagieren, wenn der Benutzer ein Client-Objekt auslöst.

Delphi-Syntax:

type TActionListState = (asNormal, asSuspended, asSuspendedEnabled);
property State: TActionListState;

C++ Syntax:

enum TActionListState {asNormal, asSuspended, asSuspendedEnabled};
__property bool State = {read=FState, write=SetState, default=asNormal};

Beschreibung

Mit State können Sie eine Aktionsliste aktivieren oder deaktivieren. Die folgenden Werte sind für State zulässig:

Wert Bedeutung

asNormal Aktionen führen ihre normalen Reaktionen aus, wenn sie von Client-Objekten oder Direktbefehlen ausgelöst werden.
asSuspended Die Aktionen in der Aktionsliste reagieren nicht, wenn sie von Client-Objekten ausgelöst werden. Die Eigenschaft Enabled aller Aktionen in der Liste bleibt unverändert.
asSuspendedEnabled Die Aktionen in der Aktionsliste reagieren nicht, wenn sie von Client-Objekten ausgelöst werden. Die Eigenschaft Enabled aller Aktionen in der Liste wird auf True gesetzt. Wird zum Entwurf von ActionBars verwendet.
Es muss also zur Laufzeit "nur" der Status für alle Aktionslisten auf asSuspended gesetzt werden und für die Aktionsliste(n) die aktive bleiben soll(en) auf asNormal.

Das dürfte den Aufwand weiter reduzieren.
Hab's gerade mal damit ausprobiert:
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
  Caption := 'Active Seite = ' + IntToStr(PageControl1.ActivePageIndex);
  frmTestmalwas1.ActionList1.State := asSuspended;
  frmTestmalwas2.ActionList1.State := asSuspended;
  frmTestmalwas3.ActionList1.State := asSuspended;
  case PageControl1.ActivePageIndex of
    0 : frmTestmalwas1.ActionList1.State := asNormal;
    1 : frmTestmalwas2.ActionList1.State := asNormal;
    2 : frmTestmalwas3.ActionList1.State := asNormal;
  end;
end;

// Alle Actions haben im OnExecute-Ereignis diese Routine zugewiesen.
procedure TfrmTestmalwas.Action1Execute(Sender: TObject);
begin
  ShowMessage(Format('%s %s %s',[ShortCutToText(TAction(Sender).Shortcut),
                                 TAction(Sender).Name,
                                 Self.Name]));
end;
Beim Betätigen der Shortcuts bekomme ich dann die Antwort aus dem entsprechenden Frame und von der entsprechenden Aktion.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz