Hi, I came across a problem when using TApplicationProperties and waiting for OnDropFiles to be called.
In a normal Application Initialize, CreateForm, and Run, the OnDropFiles event is fired, but if something happens in between Initialize and Run (like multiple CreateForms with a couple of controls "badly" calling ProcessMessages, or something else causing messages being released), before AppRun sets up an event handler, the OnDropFiles event is not fired - likely because the kAEOpenDocuments message has been released way before. You can check this by creating a new application, put a TApplicationProperties on Form1, assign OnDropFiles to a procedure which just sets the forms caption to FileNames[0], and in the project source code: ... Application.Initialize; Application.CreateForm(TForm1, Form1); Application.ProcessMessages; Application.Run; You need to create a shortcut to the compiled application on your Mac Dock, and drag any file on to it - the application should execute, when it is not running, and give you the name of the file in Form1's caption. The OnDropFiles doesn't fire (that is, if the application wasn't running and was being executed), but comment out the ProcessMessage and the OnDropFiles works fine. This might be a normal behavior for ProcessMessages to release unhandled messages, but I wish ProcessMessages could skip if no global event handler is set, so it is unfortunate TApplicationProperties is not receiving these messages. I'm not using ProcessMessages in the creating process in my application, but some controls are doing this internally, making it impossible to get OnDropFiles fired. Any tips? I could create the MainForm first, and create the other forms in an event after Run, but why and how? MainForm's Show is call just before AppRun, so this wouldn't do... Any help would be much appreciated. Best regards, Normann -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
