AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?
Thema durchsuchen
Ansicht
Themen-Optionen

Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?

Ein Thema von mael · begonnen am 27. Dez 2020 · letzter Beitrag vom 29. Dez 2020
Antwort Antwort
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#1

Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?

  Alt 27. Dez 2020, 18:07
Hallo,

.NET bietet ContainerControl.ActiveControl, aber Delphi scheint das nur für TForm zu bieten.

Ich würde gerne herausfinden welches Kind-Steuerelement wieder aktiviert werden würde, wenn dessen Container akiviert wird.

Gibt es da eine WinAPI-Möglichkeit oder VCL internes?

Mein bisheriger Ansatz würde CM_FOCUSCHANGED verwenden, aber dann hat man eventuell "stale references" wenn ein Steuerelement wieder gelöscht wurde. Wenn ich nicht der Owner dieses Steuerelements bin, werde ich ja nicht vom Entferenen des Steuerelements benachrichtigt.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael (27. Dez 2020 um 18:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?

  Alt 27. Dez 2020, 23:42
FindNextControl ?

Bei einer Form z.B. Self.FindNextControl(Self.ActiveControl, ...)
oder statt ActiveControl z.B. ein Panel, bei welchem die Suche beginnen soll.


Mit Form.ActiveControl muß man nur aufpassen, wenn man mit MDI-Childs arbeitet, oder mit anderen eingebetteten Forms, weil dort ActiveControl nur bei der obersten Form nutzbar ist und für alle Unterforms gilt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#3

AW: Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?

  Alt 29. Dez 2020, 22:44
Danke. Das Win32-Äquivalent scheint wohl SetWindowPos bzw. das Ändern des Z-Orders zu sein:
http://www.devx.com/tips/Tip/27741

Es wird aber anscheinend nicht das zuletzt aktivierte Kindfenster des Containers gespeichert (oder die Z-Order entsprechend angepasst). Beim VCL-Code den du empfohlen hast, auch nicht, TabOrder bleibt fest, und es scheint sonst keine interne Liste zu geben.

GetNextDlgTabItem ist auch noch interessant:
https://docs.microsoft.com/de-de/win...ectedfrom=MSDN

https://stackoverflow.com/questions/...-edit-controls

Daher muss ich das wohl mit Window-Hooks machen.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael (29. Dez 2020 um 22:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#4

AW: Analogon für .NET-Eigenschaft ContainerControl.ActiveControl?

  Alt 29. Dez 2020, 22:58
Wobei der folgende Link einen interessanten Kommentar hat:

https://stackoverflow.com/questions/...-edit-controls

Zitat:
This kind of processing can be easily added to an application :- Add a call to IsDialogMessage() in your message loop - all the controls have to have the WS_TABSTOP style.

The parent window might have to be of the dialog class as the dialog window class stores state allowing it to (for example) restore focus to the correct control when activation is lost and restored.
Delphi hat sowas auch wenn Fensterhandle neu erstellt werden, und verwendet dann intern GetRecreateChildren. Leider macht es das nur auf der TCustomForm-Ebene, und nicht pro Container/Parentfenster.

Da ich dockable Panels habe, sollten die ihr eigenes ActiveControl haben, was sie leider nicht tun. Also doch Hooking...
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  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 02:43 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