![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Como hacer que el usuario no mueva la form?
Pues la pmisma pregunta
como hacer que el usuario no mueva la form? |
|
#2
|
||||
|
||||
|
Dos opciones:
Código:
type
TForm1 = class(TForm)
private
procedure WMSysCommand(var Message: TWMSysCommand);
message WM_SYSCOMMAND;
end;
implementation
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType and $FFF0 = SC_MOVE
then Message.Result := 0
else inherited;
end;
Última edición por roman fecha: 16-11-2003 a las 20:34:08. |
|
#3
|
||||
|
||||
|
Otra posibilidad es capturando y tratando el mensaje
WM_WINDOWPOSCHANGING: Pon esta linea en la parte private de la declaración de tu form: Código:
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Quieto(var m: TWMWINDOWPOSCHANGED); message
WM_WINDOWPOSCHANGING ;
{ Y luego, en la implementation pon este procedimiento: }
procedure Tform1.Quieto(var m : TWMWINDOWPOSCHANGED);
begin
m.windowpos.x := 200; {X/posición izquierda}
m.windowpos.y := 100; {Y/posoción derecha}
end;
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#4
|
|||
|
|||
|
yo me inclino por la 1era de Román con la observación de Marcos. Las otras soluciones.... no me gustan
![]() |
|
#5
|
||||
|
||||
|
Hay otra forma que en realidad me gusta más. Funcionalmente es lo mismo pero tanto la de marcos como la mía dejan habilitado el menú "Mover" del cuadro de control de la ventana mientras que esta de plano lo quita.
Código:
procedure TForm1.FormCreate(Sender: TObject); begin DeleteMenu(GetSystemMenu(Handle, false), 1, MF_BYPOSITION); end; |
|
#6
|
||||
|
||||
|
Hola Román:
Acabo de hacer una prueba y finalmente me quedo con esta última opción, manteniendo como quedó dicho al usuario atado de pies y manos y si usara algún sistema de reconocimiento de voz amordazado. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#7
|
||||
|
||||
|
Claro que en realidad son demasiadas complicaciones para algo que puede resolverse mucho más fácil:
Código:
try
try
if User.Action = uaMoveForm then
User.Remove;
except
User.PunishHim;
end;
finally
User.Remove;
end;
Última edición por roman fecha: 16-11-2003 a las 21:11:06. |
|
#8
|
||||
|
||||
|
Cita:
Creo que es mejor así: Código:
DeleteMenu(GetSystemMenu(Handle, false), SC_MOVE, MF_BYCOMMAND); |
|
#9
|
||||
|
||||
|
Aquí va otra:
Código:
type
TyourForm = class(TForm)
private
{ Private declarations }
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TyourForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
with Message do
if Result = HTCAPTION then
Result := HTNOWHERE;
end;
__________________
Guía de Estilo de los Foros Cita:
|
|
#10
|
||||
|
||||
|
Cita:
Menú sistema->Mover (Creo que te hace falta tu café matutino )Por cierto, creo que a quien finalmente ataron las manos fue a quien originalmente hizo la pregunta. Eso o salió mal parado en el intento. // Saludos |
|
#11
|
||||
|
||||
|
Cierto, me lo tomaré en breve. En cuanto al demandante de la información parece ser que alguien lo dejo en Enabled:=False;
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
![]() |
|
|
|