![]() |
Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Ich habe ein Projekt in Delphi XE. Auf einem Formular liegt eine Eigenkomponente. Die Eigenkomponente sieht so aus:
Delphi-Quellcode:
Die Grid wird zur Entwurfszeit zugeordnet. Beim Ausführen des Projekts habe ich 2 verschiedene Verhaltensweisen:
TfmAutoSearch = class(TForm)
.... private lGrid : TMarkedDBGrid; OldKeyPress : TKeyPressEvent; procedure SetGrid(aGrid : TMarkedDBGrid); .... public property OldKeyPressed : TKeyPressEvent read OldKeyPress; published property Grid : TDBGrid read lGrid write SetGrid; ... end; ... procedure TfmAutoSearch.SetGrid(aGrid : TMarkedDBGrid); begin if ((lGrid <> nil) and not (csDesigning in ComponentState)) then begin lGrid.OnKeyPress := OldKeyPress; end; lGrid := aGrid; if ((lGrid <> nil) and not (csDesigning in ComponentState) and not (csFreeNotification in ComponentState)) then begin OldKeyPress := lGrid.OnKeyPress; lGrid.OnKeyPress := grdKeyPress; end; end; .... 1. Ist MainFormOnTaskbar = False, dann ist ComponentState im SetGrid []. 2. Ist MainFormOnTaskbar = True, dann ist ComponentState im SetGrid [csFreeNotification]. MainFormOnTaskbar wird dabei jeweils direkt im Projektquelltext nach dem Application.Initialize gesetzt. Hat da jemand eine Erklärung warum das so ist? |
AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Weil in TCustomForm.CreateParams FreeNotification auf jeder Form aufgerufen wird, die nicht die Application.MainForm ist.
|
AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Davon abgesehen frage ich mich was die Abfrage dieses Flags für einen Sinn hat. Was macht es denn für einen Unterschied für OnKeyPress, ob jemand anderes die Komponente auf Freigabe überwacht oder nicht?
Das sieht für mich so aus als hättest du den Sinn von csFreeNotification missverstanden. Das ist kein Zeichen dafür, dass da gerade etwas freigegeben wird. |
AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Die Komponente wurde von meinem Vorgänger für Delphi5 (oder evtl. sogar schon für Delphi2) entwickelt, ich weiß nicht was er mit der Abfrage auf FreeNotification bezwecken wollte, evtl. war das in vorherigen Delphi-Versionen erforderlich, oder es war schon immer falsch hatte aber keine Auswirkung, wer weiß. Auf jeden Fall hab ich es jetzt rausgenommen (immer diese Altlasten *jammer). Ich wollts nur verstehen, deswegen danke für die Erklärung.
|
AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Vielleicht war auch ursprünglich csDestroying gemeint.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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 by Thomas Breitkreuz