![]() |
ActiveContrl in TFrame nutzen
Hallo Zusammen,
in habe ein DevExpress Grid und dazu eine Methode wie die Spalteneinstellungen in einer INI persistent schreibt. Die Methode funktioniert wenn das Grid auf einer normales Form ist. Es funktioniert nicht wenn das Grid auf ein TFrame platziert ist da ein Frame kein ActiveControl kennt. Das speichern der Grid-Einstellungen ist nicht lebenswichtig aber doch recht praktisch. Manchmal habe ich auf dem Frame ein TabPageControl mit mehreren Grids. Eine allgemein Gültige Methode wäre also von Vorteil. Die Methode ist übrigens in einer TActionList. Die Action wird in ein TcxBarPopupMenu eingebunden und das Meue wird dem Grid als PopupMenu verbunden. Bei Rechtsklick auf das Grid erscheint das PopupMenu und der Anwender wählt die action zum speichern aus.
Delphi-Quellcode:
Hat jemand eine Idee wie man das umbauen könnte?
procedure TfraAdressenAuswahl.acLayoutSpeichernExecute(Sender: TObject);
var AGridSite: TcxGridSite; AGrid: TcxGrid; AView: TcxCustomGridView; begin if (ActiveControl is TcxGridSite) then begin AGridSite := ActiveControl as TcxGridSite; AGrid := AGridSite.Parent as TcxGrid; AView := AGridSite.GridView; AView.PatternGridView.StoreToIniFile( dm1.LayoutIni, false, [] ); end; end; |
AW: ActiveContrl in TFrame nutzen
Spontan fallen mir da zwei Wege ein:
1. Die Action hat ein Property ActionComponent für die auslösende Komponente. Ich vermute in diesem Fall den Menüeintrag dahinter, von dem du dich dann in das PopupMenu und fort über dessen PopupComponent Property in das Grid hochhangeln kannst. 2. Wenn das Form das aktive ist, was zumindest aus der Beschreibung hervorgeht, kannst du Screen.ActiveControl abfragen. |
AW: ActiveContrl in TFrame nutzen
Hallo Uwe,
… ich bin so neidisch auf dein Wissen… Methode 2 hat auf Anhieb funktioniert. Tausend Dank Uwe. |
AW: ActiveContrl in TFrame nutzen
Jupp, bei PopupMenus das
Delphi-Quellcode:
,
DeinPopupMenu.PopupComponent
bzw.
Delphi-Quellcode:
((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent
oder eben das globale
Delphi-Quellcode:
Screen.ActiveControl
oder von der "richtigen" Form, also
Delphi-Quellcode:
.
GetParentForm(Self).ActiveControl
Zuweisung an Self.ActiveControl geht immer, aber beim Lesen geht es nur für die ActiveForm und das ist nur die TopLevel, also Jene, welche für Windows/Delphi wirklich eine Form und kein eingebettetes "Control" ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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