AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Actions und deren Captions und Bilder

Ein Thema von Der schöne Günther · begonnen am 7. Apr 2016 · letzter Beitrag vom 7. Apr 2016
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Actions und deren Captions und Bilder

  Alt 7. Apr 2016, 16:41
Wenn ich einer Komponente, z.B. einem TButton eine Action zuweise übernimmt er gleich deren Eigenschaften Caption und ImageIndex. Ich möchte das nicht.

Muss ich das jetzt immer so machen:

Delphi-Quellcode:
var
   oldImageList: TCustomImageList;
   oldImageIndex: Integer;
begin
   oldImageList := Button1.Images;
   oldImageIndex := Button1.ImageIndex;

   Button1.Action := Action1;
   Button1.Images := oldImageList;
   Button1.ImageIndex := oldImageIndex;
Oder gibt es irgendwo eine Eigenschaft wo ich das abstellen kann? Oder übersehe ich etwas dummes wenn ich einfach nur, speziell für einen Button, sage

Button1.OnClick := Action1.OnExecute;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Actions und deren Captions und Bilder

  Alt 7. Apr 2016, 17:03
Das geschilderte Verhalten ist so gewollt. Ist ein Control mit einer Action verknüpft, bestimmt der dabei verwendete ActionLink das Verhalten - unter anderem, daß das Control die Caption und den ImageIndex der Action übernimmt und diese im Regelfall auch aktuell hält. Verhindern kann man das Aktualisieren, wenn die jeweiligen Eigenschaften (Caption, ImageIndex) von denen der Action abweichen. Das geht aber nur solange gut, bis das vielleicht zufällig mal nicht der Fall ist und ab dann wieder eine Synchronisierung stattfindet.

Wenn du lediglich das Execute der Action verwenden willst und auf das Update verzichten kannst, dann ist eine simple Zuweisung auf das OnClick eine Lösung. Zu beachten ist nur, daß damit nur der aktuell dem Execute zugewiesene Event übergeben wird. Sollte das Execute später mal einem anderen Event zugewiesen werden, bekommt das OnClick nichts davon mit. In dem Fall wäre ein OnClick-Handler besser, der dann einfach Action.Execute aufruft.

Alternativ kannst du aber den TButton ableiten und das GetActionLinkClass überschreiben. Da gibst du dann eine angepasste ActionLink-Klasse zurück, die das gewünschte Verhalten implementiert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:46 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