AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Was hat MainFormOnTaskbar mit csFreeNotification zu tun?
Thema durchsuchen
Ansicht
Themen-Optionen

Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

Ein Thema von baumina · begonnen am 16. Apr 2014 · letzter Beitrag vom 16. Apr 2014
Antwort Antwort
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#1

Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

  Alt 16. Apr 2014, 07:58
Ich habe ein Projekt in Delphi XE. Auf einem Formular liegt eine Eigenkomponente. Die Eigenkomponente sieht so aus:

Delphi-Quellcode:
  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;
....
Die Grid wird zur Entwurfszeit zugeordnet. Beim Ausführen des Projekts habe ich 2 verschiedene Verhaltensweisen:

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?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

  Alt 16. Apr 2014, 09:24
Weil in TCustomForm.CreateParams FreeNotification auf jeder Form aufgerufen wird, die nicht die Application.MainForm ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

  Alt 16. Apr 2014, 09:56
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

  Alt 16. Apr 2014, 10:56
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)

Geändert von baumina (16. Apr 2014 um 10:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Was hat MainFormOnTaskbar mit csFreeNotification zu tun?

  Alt 16. Apr 2014, 13:18
Vielleicht war auch ursprünglich csDestroying gemeint.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 12:21 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