AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TActionlist -> 2 Buttons -> Welcher wurde gedrückt ?
Thema durchsuchen
Ansicht
Themen-Optionen

TActionlist -> 2 Buttons -> Welcher wurde gedrückt ?

Ein Thema von HolgerCW · begonnen am 12. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
Seite 1 von 3  1 23      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

TActionlist -> 2 Buttons -> Welcher wurde gedrückt ?

  Alt 12. Mär 2008, 10:42
Hallo zusammen,

ich habe eine TActionlist, mit der ich zwei Buttons verbunden habe.

Wie kann ich nun in dem Execute-Ereignis herrausfinden, welcher Button gedrückt wurde ?

Gruss

Holger
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 10:44
Warum musst du dies überhaupt? Action(List) sind dafür da um definierte Handlungen (Actions) zentral zu definieren und verwalten und dies unabhängig der Position der Anzeige. Wenn du dies unterscheiden musst, dann ist die Action nicht gleich. Von daher zwei getrennte Actions anlegen und deren Handlung entsprechend behandeln.

Ansonsten: Delphi-Referenz durchsuchenTBasicAction.ActionComponent - aber wie gesagt, das klingt eher nach einem Designproblem...
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 10:53
Beim OnExecute wird der Sender mitgegeben.
Den kannst Du zu einem Button casten.
Dann kannst Du anhand dem Namen oder Caption oder sonst was herausfinden, welcher Button die Action ausgelöst hat.

Aber prinzipiell hat Muetze recht.
Eine Action sollte nur dann von mehreren Komponenten benutzt werden, wenn wirklich alles 100% gleich ist.
Sonst eben mehrere Actions verwenden
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 10:55
Zitat von RavenIV:
Beim OnExecute wird der Sender mitgegeben.
Den kannst Du zu einem Button casten.
Dann kannst Du anhand dem Namen oder Caption oder sonst was herausfinden, welcher Button die Action ausgelöst hat.
Nein, der Sender ist immer die TAction.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:16
Vielen dank schon mal.

Es geht darum, das ich zwei unterschiedliche PDF - Dateien mit den beiden Button öffnen möchte. Ich möchte mit der Actionliste die Berechtigung steuern. Das heisst enabled = FALSE/TRUE. Möchte dann halt in der Actionliste Enabled = FALSE für alle PDF-Buttons setzen. Möchte halt nicht jeden Button einzeln steuern müssen, da sie ja von der Funktion das selbe tuen, nur halt die PDF-Datein sind unterschiedlich, die geöffnet werden. Oder ist das ganz falsch gedacht ?

Gruss

Holger

P.S.: Kannst Du mir hier mal kurz Code posten, wie ich aus dem Object Sender einen Button caste ?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:17
OK.
Dann halt per ActionComponent.

Zitat von Delphi-Hilfe:
Mit ActionComponent kann die Client-Komponente bestimmt werden, die diese Aktion verursacht hat. In einer Ereignisbehandlungsroutine für OnExecute können Sie beispielsweise durch einen Lesezugriff auf ActionComponent feststellen, welche Benutzeraktion der Auslöser für die Aktion war.

Wenn der Benutzer auf ein Client-Steuerelement klickt, weist der betreffende Client der Eigenschaft ActionComponent einen Wert zu und ruft dann die Methode Execute der Aktion auf. Nach der Ausführung der Aktion wird die Eigenschaft wieder auf nil (Delphi) bzw. auf NULL (C++) gesetzt.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:19
... hast Du dafür mal ein kleines Code-Beispiel ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:24
Im onExecute-Events wird dir der Parameter Action übergeben, Action.ActionComponent referenziert dann den Auslöser
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#9

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:27
Vielleicht habe ich jetzt ein Brett vor dem Kopf, aber in dem OnExecute-Event wird doch nur der Sender übergeben ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: TActionlist -> 2 Buttons -> Welcher wurde gedrückt

  Alt 12. Mär 2008, 11:29
Zitat von HolgerCW:
... hast Du dafür mal ein kleines Code-Beispiel ?
Aber nur, weil Du so nett gefragt hast.
Sollte so funktionieren:
Delphi-Quellcode:
procedure TFoActionForm.AcButtonPressExecute(Sender: TObject);
begin
  if TBasicAction(AcButtonPress).ActionComponent = BuPDFNummerEins then
  begin
    MachWas;
  end
  else if TBasicAction(AcButtonPress).ActionComponent = BuPDFNummerZwei then
  begin
    MachWasAnderes;
  end;
end;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz