Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   OnAfterShow mittels PostMessage (https://www.delphipraxis.net/94226-onaftershow-mittels-postmessage.html)

Luckie 18. Jun 2007 14:35


OnAfterShow mittels PostMessage
 
Ich habe ein OnAfterShow Ereignis mittels PostMessage implementiert, weil bestimmte Eigenschaften erst danach zur Verfügung stehen:
Delphi-Quellcode:
  public
  { Public declarations }
  procedure WndProc(var Msg: TMessage); override;

// ...;

procedure TfrmPreview.FormShow(Sender: TObject);
begin
  PostMessage(frmPreview.Handle, WM_MP_AFTERSHOW, 0, 0);
end;

// ...;

procedure TfrmPreview.WndProc(var Msg: TMessage);
begin
  case Msg.Msg of
    WM_MP_AFTERSHOW:
      begin
        //FirstTime := False;
        FFotoBook.PageParent := Self;
        FFotoBook.ScaleFactor := FFotoBook.CalcScaleFactor;
        PageID := 0;
        FFotoBook.DisplayMode := dmPreview;
        FFotoBook.Display(PageID);
        UpDateLabel;
      end;
  end;
  inherited;
end;
Ich bekomme aber nach dem Aufruf von PostMessage eine AccessViolation. Klick eich die Weg wird mein Formular angezeigt, allerdings ohne das gemacht zu haben, was in der WndProc steht, da kommt er erst gar nicht hin.

shmia 18. Jun 2007 15:08

Re: OnAfterShow mittels PostMessage
 
Delphi-Quellcode:
procedure TfrmPreview.FormShow(Sender: TObject);
begin
  PostMessage(frmPreview.Handle, WM_MP_AFTERSHOW, 0, 0); // FALSCH !!!
  //          ^^^^^^^^^^
  PostMessage(Handle, WM_MP_AFTERSHOW, 0, 0); // Richtig
  PostMessage(Self.Handle, WM_MP_AFTERSHOW, 0, 0); // Auch richtig
end;

Luckie 18. Jun 2007 15:25

Re: OnAfterShow mittels PostMessage
 
Ächtz. Dank dir. ;)


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