Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Formcreate für Frame (https://www.delphipraxis.net/94385-formcreate-fuer-frame.html)

P4CM4N 20. Jun 2007 18:57


Formcreate für Frame
 
Hi,
gibt es ein Framecreate? D.h. sobald man das Frame öffnet wird eine bestimmt Prozedur ausgeführt. Bisher habe ich es mit dem Event Onclick aber da man da ja erst, wie der Name schon sagt klicken muss finde, ich das nicht so gut.

Thx

marabu 20. Jun 2007 19:52

Re: Formcreate für Frame
 
Hallo Pacman,

es gibt kein OnCreate() bei Frames. Du solltest einen Frame eher mit einem Panel vergleichen und nicht mit einer Form.

Grüße vom marabu

fLaSh11 20. Jun 2007 19:56

Re: Formcreate für Frame
 
Zitat:

Zitat von P4CM4N
sobald man das Frame öffnet

Dann suchst du eher das Ereignis OnShow! :thumb:

Nuclear-Ping 19. Jul 2007 12:58

Re: Formcreate für Frame
 
Stell mir auch grad die gleiche Frage, ob es da nicht was gibt.

Bisher mache ich es so, dass ich halt 'ne "InitializeFrame"-Funktion per Hand mache und die in den Public-Teil haue und halt aufrufe, nachdem der Frame erstellt wurde bzw. im OnCreate des Formulars, das den Frame beinhaltet.

@fLaSh11: Kann sein, dass ich dich falsch verstehe, aber Frames haben bei mir kein OnShow. :gruebel:

uligerhardt 19. Jul 2007 17:13

Re: Formcreate für Frame
 
Reicht's nicht enfach, den Konstruktor zu überschreiben?

Uli.

Hawkeye219 19. Jul 2007 17:45

Re: Formcreate für Frame
 
Hallo,

man könte auch noch die Methode Delphi-Referenz durchsuchenAfterConstruction überschreiben. Diese wird aufgerufen, nachderm der letzte Konstruktor des Frames aufgerufen wurde. Den Aufruf der geerbten Routine sollte man dabei nicht vergessen.

Gruß Hawkeye

Nuclear-Ping 19. Jul 2007 17:55

Re: Formcreate für Frame
 
Danke für die Tipps. Werd's bei Gelegenheit mal probieren.

LuckySpacy 25. Jul 2007 14:34

Re: Formcreate für Frame
 
Hi,
ich würde das Problem so lösen:

Delphi-Quellcode:
type
  TFrame2 = class(TFrame)
  private
    FOnShow: TNotifyEvent;
    procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
  public
  published
    property OnShow: TNotifyEvent read FOnShow write FOnShow;
  end;

implementation

{$R *.dfm}

{ TFrame2 }

procedure TFrame2.CMShowingChanged(var Message: TMessage);
begin
  inherited;
  if Showing then
    if Assigned(FOnShow) then
      FOnShow(Self);
end;
Somit dürfte man ein Frame um das Event OnShow erweitert haben.


Zweiter Teil (zusammenführung bitte durch den Verfasser der beiden Teile) (mit der Edit-Funktion)

Bin gerade dabei mich mit diesem Thema zu beschäftigen.
Wenn man darauf reagieren möchte, wann sich ein Frame Sichtbar oder Unsichtbar schaltet dann vielleicht so:

Delphi-Quellcode:
type
  TFrame2 = class(TFrame)
    Label1: TLabel;
    Edit1: TEdit;
  private
    FOnShow: TNotifyEvent;
    FOnVisible: TNotifyEvent;
    FOnVisibleChanged: TNotifyEvent;
    FOnHide: TNotifyEvent;
    procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
    procedure CMVISIBLECHANGED(var Message: TMessage); message CM_VISIBLECHANGED;
  public
  published
    property OnShow: TNotifyEvent read FOnShow write FOnShow;
    property OnVisible: TNotifyEvent read FOnVisible write FOnVisible;
    property OnHide: TNotifyEvent read FOnHide write FOnHide;
    property OnVisibleChanged: TNotifyEvent Read FOnVisibleChanged write FOnVisibleChanged;
  end;

implementation

{$R *.dfm}

{ TFrame2 }

procedure TFrame2.CMShowingChanged(var Message: TMessage);
begin
  inherited;
  if Showing then
    if Assigned(FOnShow) then
      FOnShow(Self);
end;

procedure TFrame2.CMVISIBLECHANGED(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnVisibleChanged) then
    FOnVisibleChanged(Self);
  if Visible then
  begin
    if Assigned(FOnVisible) then
      FOnVisible(Self);
  end
  else
  begin
    if Assigned(FOnHide) then
      FOnHide(Self);
  end;

end;
[edit=SirThornberry]Beide Ergüsse zusammengeführt - Mfg, SirThornberry[/edit]

SirThornberry 25. Jul 2007 15:25

Re: Formcreate für Frame
 
@LuckySpacy: Könntest du nächstes mal bitte http://www.delphipraxis.net/template.../icon_edit.gif verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 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