AGB  ·  Datenschutz  ·  Impressum  







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

Denksportaufgabe: Spaß mit Aktionen

Ein Thema von PeterPanino · begonnen am 27. Feb 2016 · letzter Beitrag vom 27. Feb 2016
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Denksportaufgabe: Spaß mit Aktionen

  Alt 27. Feb 2016, 18:52
Hallo Leute!

Ich habe heute am Samstag Nachmittag mal ein bisschen mit den eingebauten Aktionslisten herumgespielt. Ich habe in einem VCL-Forms-Projekt eine TActionList, 2 TEdit, eine TImageList und einen TButton auf die Form geworfen. Die Imageliste wurde mit der Aktionsliste verknüpft.

In der Aktionsliste habe ich zwei Standard-Aktionen eingefügt, eine Copy- und eine Paste-Aktion:

http://i.imgur.com/xxwguJb.png

Dann habe ich den Button mit der Copy-Aktion verbunden und das Programm gestartet.

Nach dem Start ist der Button natürlich disabled, weil es ja nichts zu kopieren gibt. Aber sobald ich in einem der Edit-Felder einen Text auswählte, war der Button automatisch enabled, was natürlich eine feine Sache ist, weil man dadurch keine Event-Handler selbst implementieren muss. ABER: Sobald ich auf den jetzt so genannten Copy-Button klicke, wird nicht etwa der im Edit-Feld ausgewählte Text in die Zwischenablage kopiert, sondern ganz einfach der Button disabled.

Ich schlussfolgere also mal gleich: Man sieht ja, dass beim Klicken auf den Button das Edit-Feld den Fokus verliert, somit die Auswahl im Edit-Feld aufgehoben und deshalb folgerichtig der Button deswegen disabled wird.

Also flugs in beiden Edit-Feldern die Eigenschaft HideSelection auf False gesetzt und das Ganze nochmals probiert. Aber denkste! Es funktioniert wieder nicht, obwohl die Auswahl im Edit-Feld trotz des Klickens auf den Button erhalten bleibt. Aber das ist wohl nur optisch vorgetäuscht, damit der Benutzer noch weiß, welchen Text er zuletzt ausgewählt hat.

Dem geneigten Leser bleibt noch überlassen, das Ganze analog mit der Paste-Aktion zu versuchen und dabei ebenso frustriert zu werden.

Wie kann man also die beiden Clipboard-Aktionen auf die dargelegte Weise zum Funktionieren bringen? Wer löst die Denksportaufgabe?
Miniaturansicht angehängter Grafiken
xxwgujb.png  
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Denksportaufgabe: Spaß mit Aktionen

  Alt 27. Feb 2016, 22:26
Die Cut/Copy/Paste Aktionen beziehen sich immer auf das derzeit aktive Control.

Welches Control ist aktiv, wenn du auf den Button klickst? Richtig, der Button.
Ist bei dem Button etwas ausgewählt? Nein, kann man auch gar nicht.

Also gibt es in der gegenwärtigen Situation kein Copy/Cut/Paste -> Aktion ist disabled.

Und wie lösen wir das Problemchen?

Wir nehmen einen Button, der nicht den Fokus erhält und damit zum aktiven Control wird: Delphi-Referenz durchsuchenTSpeedButton
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Denksportaufgabe: Spaß mit Aktionen

  Alt 27. Feb 2016, 22:53
Du hast meine Anerkennung!

Es ist immer wieder erstaunlich, wie logisches und folgerichtiges Denken (aber auch Wissen) in manchen Bereichen zur Lösung von Problemen (oder Problemchen) führen können!

Wünsche noch einen schönen Abend!

Geändert von PeterPanino (27. Feb 2016 um 23:35 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Denksportaufgabe: Spaß mit Aktionen

  Alt 27. Feb 2016, 23:09
Übrigens: Könnte man den TButton nicht irgendwie dazu bewegen, die Abfolge der Ereignisse zu verändern?

Man müsste ihn also irgendwie dazu bringen, vorher seine Aktion auszuführen und dann erst im Sinne der Windows Fensterhierarchie zum aktiven Control zu werden.

Wäre das möglich?
  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:58 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