AGB  ·  Datenschutz  ·  Impressum  







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

Action Enabled, ToolButton dagegen nicht

Offene Frage von "Irrgärtner"
Ein Thema von Irrgärtner · begonnen am 25. Jun 2007 · letzter Beitrag vom 28. Jun 2007
Antwort Antwort
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#1

Action Enabled, ToolButton dagegen nicht

  Alt 25. Jun 2007, 16:42
Hallo,

ich habe ein Problem mit Toolbuttons, die an eine ActionList gebunden sind. Das Problem ist, daß die Enabled-Eigenschaft der Buttons nirgends im Programm verändert wird, und die Starteinstellung nicht so ist wie eingestellt im Designer (auch unter Berücksichtigung der Action). Die Enabled-Eigenschaften der Buttons und der Actions sind nicht synchron!

Nach Click auf einen (anfangs) deaktivierten Toolbutton (fälschlicherweise!) wird er aktiviert dargestellt. Die Action ist die ganze Zeit aktiviert! Wie kommt der Unterschied zustande?! Noch verrückter: der andere, richtigerweise deaktivierte Button, der erst nach dem Klick aktiviert werden soll (über die Action im Programmcode) wird gleichzeitig mitaktiviert! Jedoch nur optisch, nicht bezüglich der Eigenschaften!

Wie kann das sein? Habe ich etwas vergessen? Im Designer ist alles richtig eingestellt, Enabled, Action zugewiesen usw., OnExecute-Ereignis existiert.

Vielen Dank im voraus für einen Tipp, MfG
Irrgärtner
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Action Enabled, ToolButton dagegen nicht

  Alt 25. Jun 2007, 16:47
Moin Irrgärtner,

ich habe den Eindruck, als hättest Du da ein Problem in Deiner Programmstruktur.
Wenn Du Actions verwendest, solltest Du die Eigenschaft Enabled der Button überhaupt nicht verwenden, sondern nur die der zugewiesenen Action.
Damit hast Du dann jeweils alle Komponenten, denen die jeweilige Action zugewiesen ist, auf einen Schlag (de-)aktiviert.

[EDIT]
Meist verwende ich je Formular eine Prozedur, in der ich Enabled aller Komponenten, je nach Programmzustand einstelle, und die ich dann immer aufrufe, wenn sich eine Veränderung ergeben haben könnte.
Ich finde das übersichtlicher, als die Statusänderungen über die Unit zu verteilen, ausserdem habe ich eine zentrale Stelle, an der ich bei Änderungen einpflegen kann.
[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Action Enabled, ToolButton dagegen nicht

  Alt 25. Jun 2007, 16:55
Nee, eigentlch nicht!
Ich frage die Enabled-Eigenschaft der Buttons ja nur beim Debugging ab. Und dabei stellte sich eben heraus, daß sie unterschiedlcih ist zu der zugehörigen Action. Es ist einfach der Irrsinn! Mit normalen Buttons, an denen auch die Actions hängen, funktioniert alles. Die werden im richtigen Status dargestellt, und wenn ich im OnExecute-Ereignis einen anderen Button deaktiviere oder aktiviere, dann wird das auch dargestellt und auch die Funktion dahinter paßt.

Nur bei den Toolbuttons nicht! Ich sollte dazusagen, daß es sich um ein Formular handelt, daß zweifach abgeleitet ist, also um drei verschiedene Formulare in einer Linie. Vielleicht rührt das Problem ja auch daher. Ich mache schon den ganzen Tag damit herum...
Im Forum habe ich nichts dazu gefunden, aber vielleicht kennt jemand ja das Problem. Entweder wurde hier etwas vergessen, ohne das es zwar oft läuft, aber nicht immer, oder es handelt sich um einen Delphi-Bug.

Die zentrale Prozedur, an der die Enabled-Eigenschaften gesetzt werden, habe ich auch; aber darin liegt nicht alleine das Problem (auch, aber nicht nur). Wie kommt die Divergenz von Button und Action zustande? Warum wird ein Button aktiv, nachdem mit der Maus draufgeklickt wurde, ohne daß ein Ereignis ausgelöst worden wäre? Warum wird er zuerst deaktiviert dargestellt, obwohl er im Code nirgendwo deaktiviert wird?

MfG
Irrgärtner
  Mit Zitat antworten Zitat
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Action Enabled, ToolButton dagegen nicht

  Alt 26. Jun 2007, 10:50
Noch verrückter: wenn ich die Eigenschaften ausgeben lasse, dann ist zu Beginn sowohl der Toolbutton als auch die Action ENABLED, und trotzdem wird der Button disabled dargestellt! Sobald ich darauf klicke, werden wie gesagt beide aktiv dargestellt (obwohl es der zweite gar nicht ist!). Danach ist dann paradoxerweise die Enabled-Eigenschaft des Buttons auf einmal false!
Es tut sich aber nichts, obwohl die Eigenschaft enabled ist - beim normalen Button und über Tastatur geht es aber.

Mit ziemlicher Sicherheit ein Delphi-Bug.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Action Enabled, ToolButton dagegen nicht

  Alt 26. Jun 2007, 11:01
Hallo,

der beste Weg um diesen vermeintlichen Delphi-Bug zu verifizieren ist ein Demo-Projekt (Quelltext), welches du hier einstellst.

Freundliche Grüße
  Mit Zitat antworten Zitat
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Action Enabled, ToolButton dagegen nicht

  Alt 26. Jun 2007, 16:32
Das nachvollziehbar zu machen ist ziemlich schwer, da es in einem sehr umfangreichen Projekt auftritt (wie gesagt, drei voneinander abgeleitete Formulare, die wiederum von weiteren Basisformularen abgeleitet sind).

Ich bin aber inzwischen weitergekommen. Es hat nichts mit den Actions zu tun, sondern die Buttons werden an sich nicht richtig dargestellt - die Actions selbst passen. Auch ohne Action geht es nicht!

Ich weiß auch, woran es liegt: auf der Toolbar befinden sich weitere Toolbuttons. Die werden im FormCreate einer Oberklasse positioniert, und zwar mit .Left := 1000; eine andere sinnvolle Möglichkeit als die Left-Eigenschaft existiert ja nicht. Wenn man das auskommentiert, funktionieren die neu eingeführten Buttons! Allerdings gibt es dann Probleme mit den anderen (alten) Buttons, die teilweise nicht angezeigt werden, obwohl sie aktiv sein müßten. Auch die Positionierung in der unteren Klasse mit passenden Left-Werten (23,46,69 usw.) hilft nicht weiter. (auch Left =1,2,3 reicht nicht für die richtige Positionierung)

Es würde funktionieren, wenn ich auf unterster Ebene im Designer die Left-Eigenschaft einstelle und so die richtige Reihenfolge herstelle. Es wäre nicht tragisch, wenn ich das in jedem anderen Formulare im Projekt, die natürlich alle von denselben Basisformularen abgeleitet werden, auch machen müßte. Jedoch ist das für die Zukunft sehr unsicher. Kommt ein Button dazu, muß immer dran gedacht werden, alle Left-Eigenschaften zu ändern. Mit Left:=1000 (auch wenn das weit außerhalb der Breite der Toolbar ist), war das zumindest immer sichergestellt. Es sollte also auf Ebene der Basisklasse sichergestellt werden, daß bestimmte Toolbuttons immer rechts erscheinen.

Ich dachte daran, diese Toolbuttons in der Oberklasse zur Laufzeit zu erstellen, und zwar z.B. im Formshow, weil das erst nach dem FormCreate der abgeleiteten Klassen ausgeführt wird, wenn die neuen Buttons schon existieren. Die zuletzt erstellten Toolbuttons würden (hoffentlich) rechts hinzugefügt. Geht aber auch nicht. Delphi-Fehlermeldungen, Zugriffsverletzungen usw. waren die Folge.

Hat jemand noch Ideen, wie man prinzipiell vorgehen könnte? Den Buttons eine Tag-Eigenschaft geben, mit hohen Werten, und abhängig davon in abgeleiteten Formularen die Left-Eigenschaft dynamisch berechnen lassen (umpositionieren)?

Vielen Dank im voraus
Irrgärtner
  Mit Zitat antworten Zitat
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Action Enabled, ToolButton dagegen nicht

  Alt 27. Jun 2007, 14:31
Wie ich es auch mache, entweder spinnt die Funktion, oder die TToolButtons werden nicht in der richtigen Reihenfolge angezeigt.

Also nochmals: Toolbutton.Enabled = true , dennoch erscheint er ausgegraut. Verrückt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Action Enabled, ToolButton dagegen nicht

  Alt 27. Jun 2007, 14:50
Zitat von Irrgärtner:
Ich sollte dazusagen, daß es sich um ein Formular handelt, daß zweifach abgeleitet ist, also um drei verschiedene Formulare in einer Linie.
Warum zweimal abgeleitet ?
Hast du schon daran gedacht, Frames zu verwenden, um deiner Anwendung ein einheitliches Look & Feel zu geben?
Wir verwenden z.B. einen Frame mit OK, Abbrechen und Hilfe Button für "normale" Formulare und
einen weiteren Frame mit den gleichen Buttons + Navigator + Suche-Button für alle Formulare mit einem DBGrid.
Andreas
  Mit Zitat antworten Zitat
Irrgärtner

Registriert seit: 1. Jun 2007
13 Beiträge
 
Delphi 2006 Enterprise
 
#9

Ich finde keine Lösung

  Alt 28. Jun 2007, 17:00
Hallo,

so grundsätzliche Änderungen sind nicht mehr möglich, da es sich um eine sehr große Anwendung mit vielen (abgeleiteten) Formularen handelt. Gut, wenn es gar nicht anders geht, müßte man evtl. die Komponenten austauschen und das dann in allen Formularen ggf. nachziehen.

Ich habe versucht, das alles in einem neuen kleinen Projekt nachzubilden. Dort paßt aber (leider) alles. Inzwischen bin ich soweit, daß die Sortierung der Toolbuttons funktioniert; auch die Funktion paßt (vorbehaltlich; jedenfalls in dem abgeleiteten Formular, das bisher am meisten Probleme machte). Nur wird hartnäckig ein Toolbutton als aktiv angezeigt, der es de facte definitiv nicht ist! Hat wohl mit den Actions doch nicht so viel zu tun.

Ich weiß das, weil ich mir bei jedem FormActivate den Status ausgeben lasse. Es wird ja sonst nirgendwo mehr geschrieben, und danach erst recht nicht. Ergebnis: Action nicht enabled (richtig), Toolbutton nicht enabled (auch richtig), wird aber als aktiv angezeigt. Beim zweiten Aktivieren ist auf einmal der Toolbutton enabled (falsch!), die Action nach wie vor nicht enabled.

Es ist ja nicht nur, daß der Toolbutton auf rätselhafte Weise aktiviert wird, sondern daß zu Beginn die Darstellung nicht mit dem Status übereinstimmt!

Vielleicht hat ja jemand einmal ein gleiches Problem.

Viele Grüße
Irrgärtner
  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 11:19 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