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:
|
|
|
|