ya lo logre hacer , explico como
Tengo dos formas una TFMain y la segunda donde tengo el rectangulo como quiero mostrar los mensajes TMmensajes.
En la FormMain tengo un LayoutMain que ocupa toda la forma alClient y contiene todo los componentes de la forma , con el siguiente procedimiento llamo de forma modal a la segunda forma. con un create en TMmensajes un poco diferente .
Código Delphi
[-]
procedure TFMain.SpeedButton8Click(Sender: TObject);
var
dlg: TMmensajes;
begin
dlg := TMmensajes.Create(LayoutMain, nil,'ERROR', 'El Identificador de documento no es correcto','SI','ACEPTAR',false);
dlg.ShowModal(procedure(ModalResult: TModalResult)
begin
case ModalResult of
mrOk: ShowMessage('mrOK');
mrCancel: ShowMessage('MrCancel');
end;
end);
end;
Ahora en TMmensajes (segunda forma) puse un Timage alClient ocupando toda la forma y arriba de este puse un Rectangle que ocupa todo ese Timage , negro con opacidad 0.5 .
y arriba de todo esta el rectangulo con los label y botones para los dialogos.
este es el create de esa segunda forma
Código Delphi
[-]
constructor TMmensajes.Create( Layout1: TLayout;AOwner: TComponent;Titulo,Texto,TextoCancelar,TextoOk: string; Cancelar: boolean);
var b: TBitmap;
begin
inherited create(AOwner);
b := Layout1.MakeScreenshot; Image1.Bitmap.Assign((b));
b.DisposeOf;
lTitulo.text := Titulo;
LbTexto.text:=Texto;
rCancelar.Visible := Cancelar;
lCancelar.text:= TextoCancelar;
lAceptar.text:= TextoOk;
end;
En este create de la segunda forma le paso como parametro las caracteristicas del dialogo a mostrar y el Layout que contiene todo los componentes desde donde se realizo la llamada, entonces se hace una foto de ese Layout y se pone en el Timage de fondo , como arriba tiene un rectangulo negro opaco da el efecto oscuro y debajo realmente no esta la verdadera forma sino una imagen de ella.
No subo codigo porque jamas he podido subir codigo ni imagenes al foro, no se donde alojar codigo para comportirlo aqui y que perdure por los anos.
si alguien necesita mas aclaracion me lo comenta
saludos