![]() |
AW: Objekt, was zuvor den Fokus hatte ermitteln
Das schnüffelt mir eher nach einer statischen Klasse, die sich um solche Dinge kümmert. (Im Grunde eine Art Singleton.) Die verhält sich am Ende ähnlich wie eine globare Variable, ist aber neben OOP konform auch durch die Notwendigkeit der qualifizierteren Referenzierung sicherer zu verwenden als globale Variablen.
Delphi-Quellcode:
unit uGlobalControlManager;
interface type TGlobalControlManager = class private class var FLastActiveControl: TWinControl; public class procedure FocusChanged(var Message: TCMFocusChanged); class procedure FocusLastActiveControl; // Und weitere wie in Sir Rufos frmTemplate Klasse end; implementation class procedure TGlobalControlManager.FocusChanged(var Message: TCMFocusChanged); begin // Wie von Sir Rufo in seiner frmTemplate Klasse end; ... Und dann das in die Basisklasse von Sir Rufo einfuckeln:
Delphi-Quellcode:
Und auf gleiche Weise ließe sich eine Basisklasse für deine Frames zwischen schieben, die die gleichen Funktionen mit Weiterleitung auf die TGlolbalControlManager-Klasse implementiert, und schon kannst du diese Funktionalität überall nutzen, und es ist völlig egal in welcher Form oder in welchem Frame das zuzletzt fokussierte Control lag.
unit RofuForm;
uses ..., uGlobalControlManager; type TfrmTemplate = class(TForm) private procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED; protected procedure FocusLastControl; public end; implementation procedure TfrmTemplate.CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED; begin TGlobalControlManager.FocusChanged(Message); end; procedure TfrmTemplate.FocusLastControl; begin TGlobalControlManager.FocusLastControl; end; ... |
AW: Objekt, was zuvor den Fokus hatte ermitteln
Und was ist, wenn zwei Formulare deine statische Klasse verwenden?
Zitat:
Und "ja", ich bin ein Schlugkeisser. |
AW: Objekt, was zuvor den Fokus hatte ermitteln
Zitat:
Aber hast du da nicht noch den Meister bei deinem Titel vergessen? :mrgreen: |
AW: Objekt, was zuvor den Fokus hatte ermitteln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz