Ver Mensaje Individual
  #2  
Antiguo 24-12-2018
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Prueba de esta forma que te explico. Reescribe la función virtual WndProc del formulario que re verá como ShowModal.
En esta función vamos a interceptar los mensajes WM_SYSCOMMAND de forma que controlemos SW_MINIMIZE, SW_RESTORE y SC_CLOSE. Con ello obligaremos a la ventana principal de nuestra app a reaccionar momo nos interesa.



Lo siguiente es como quedaría un archivo de cabecera del formulario ShowModal
Código PHP:
//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:    // IDE-managed Components
private:
  
void __fastcall WndProc(TMessagemsg);
public:        
// User declarations
  
__fastcall TForm2(TComponentOwner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif 

Ahora te muestro la función WndProc
Código PHP:
void __fastcall TForm2::WndProc(TMessagemsg)
{
  if(
msg.Msg == WM_SYSCOMMAND){
    if(
msg.WParam == SC_MINIMIZE)
      
ShowWindow(Application->MainForm->HandleSW_MINIMIZE);
    
    if(
msg.WParam == SC_RESTORE || msg.WParam == SC_CLOSE){
      
ShowWindow(Application->MainForm->HandleSW_RESTORE);
      
SetWindowPos(HandleApplication->MainForm->Handle0,0,0,0SWP_NOSIZE SWP_NOREPOSITION);
    }
  }

  
TForm::WndProc(msg);


Espero que te ayude.


Saludos.
Responder Con Cita