AGB  ·  Datenschutz  ·  Impressum  







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

Eigener OnExit - wie?

Ein Thema von HeikoAdams · begonnen am 27. Apr 2010 · letzter Beitrag vom 27. Apr 2010
Antwort Antwort
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#1

Eigener OnExit - wie?

  Alt 27. Apr 2010, 08:46
Hallo,
ich versuche grade mit TD in einem Ahnen-Fenster einen eigenen OnExit-Event zu schreiben, den ich dann in den Erben nutzen kann.
Den Event habe ich wie folgt deklariert:
Delphi-Quellcode:
type
  TChildFormNoReg = class(TChildFormNoData)
  ...
    procedure CheckFieldIsRequired(Sender: TObject);
  ...
Komischerweise wird der Event aber nicht in der Auswahlliste des Objektinspektors für T(DB)Edits angezeigt.
Trage ich den Event von Hand im Objektinspektor beim OnExit ein, ist Sender komischerweise nil

Ideen, wie das Problem zu lösen ist??
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Eigener OnExit - wie?

  Alt 27. Apr 2010, 11:23
Delphi-Quellcode:
type
  TForm4 = class(TForm)
    DBEdit1: TDBEdit;
    procedure Wird_Angezeigt(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Wird_Nicht_Angezeigt_1(Sender: TObject);
  public
    { Public-Deklarationen }
    procedure Wird_Nicht_Angezeigt_2(Sender: TObject);
  end;
Es werden nur Prozeduren vor "private" in der Liste zur Auswahl angezeigt. Die Anderen kann man natürlich trotzdem per Hand zuweisen.
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Eigener OnExit - wie?

  Alt 27. Apr 2010, 12:27
Meine Prozedur ist vor "private" deklariert und wird in den Erben trotzdem nicht in der Auswahlliste angezeigt
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#4

Re: Eigener OnExit - wie?

  Alt 27. Apr 2010, 23:42
Vielleicht gehts ja so: http://www.delphipraxis.net/internal...t.php?t=112420

So hab ich (allerdings in Delphi 2006) ein OnAfterCreate und ein OnAfterShow implementiert. Die Sieht man aber nicht im Objektinspektor dazu muß man das Ganze in eine neue Komponente gießen.

Was da nicht steht: WM_AFTERSHOW ist eine eigene Konstante mit WM_USER + 1; Zu WM_USER halt deinen eigenen Offset draufrechnen, da die Nummer eindeutig sein muß. Ich hab z.B.: 300 und 301 genommen.

Im Grunde setzt du mit PostMessage eine Programmweite "Nachricht" ab, die sich in die Systemnachrichten einreiht:

Delphi-Quellcode:
interface
type
  Txyz = class(...)
  public
    property OnAfterShow : TNotifyEvent read FOnAfterShow write FOnAfterShow;
  end;

const
  WM_AFTERSHOW = WM_USER + 300;

implementation

procedure Txyz.WndProc(var Msg: TMessage);
begin
  case Msg.Msg of
    WM_AFTERSHOW:
      begin
        if assigned(FOnAfterShow) then
          FOnAfterShow(Self); // hier wird die zugewiesene Funktion ausgeführt
      end;
  end;
  inherited;
end;
Das geht natürlich auch für alle möglichen anderen Events.
  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 05: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