Hola.
A ver si lo que buscas es algo así...
Form de la grilla:
Código Delphi
[-]
...
const
WM_AFTER_CREATE = WM_USER + 300;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure WmAfterCreate(var Msg: TMessage); message WM_AFTER_CREATE;
procedure WMMoving(var Msg: TMessage); message WM_MOVING;
procedure LocateForm2;
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
uses Unit2, Unit3;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.BorderStyle := bsToolWindow;
Form2.BorderIcons := [];
Form2.FormStyle := fsStayOnTop;
PostMessage(Self.Handle, WM_AFTER_CREATE, 0, 0);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Close;
end;
procedure TForm1.WmAfterCreate(var Msg: TMessage);
begin
Form2.Show;
LocateForm2;
end;
procedure TForm1.WMMoving(var Msg: TMessage);
begin
LocateForm2;
end;
procedure TForm1.LocateForm2;
begin
Form2.Left := Self.Left + Self.Width;
Form2.Top := Self.Top + Self.Height - Form2.Height;
end;
end.
Form de la imágen:
Código Delphi
[-]
...
type
TForm2 = class(TForm)
DBImage1: TDBImage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
public
end;
var
Form2: TForm2;
implementation {$R *.dfm}
uses Unit3 ;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TForm2.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType and $FFF0 = SC_MOVE then
Msg.Result := 0
else
inherited;
end;
end.
Saludos