AGB  ·  Datenschutz  ·  Impressum  







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

ActiveContrl in TFrame nutzen

Ein Thema von Kostas · begonnen am 4. Mai 2023 · letzter Beitrag vom 4. Mai 2023
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

ActiveContrl in TFrame nutzen

  Alt 4. Mai 2023, 12:45
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:
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;
Hat jemand eine Idee wie man das umbauen könnte?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: ActiveContrl in TFrame nutzen

  Alt 4. Mai 2023, 12:54
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: ActiveContrl in TFrame nutzen

  Alt 4. Mai 2023, 13:23
Hallo Uwe,

… ich bin so neidisch auf dein Wissen…

Methode 2 hat auf Anhieb funktioniert.

Tausend Dank Uwe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ActiveContrl in TFrame nutzen

  Alt 4. Mai 2023, 13:26
Jupp, bei PopupMenus das DeinPopupMenu.PopupComponent ,
bzw. ((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent

oder eben das globale Screen.ActiveControl

oder von der "richtigen" Form, also 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.
$2B or not $2B

Geändert von himitsu ( 4. Mai 2023 um 13:36 Uhr)
  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 21: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