PDA

Ver la Versión Completa : Como mover una ventana sin bordes


SMTZ
05-07-2004, 19:40:20
Hola, ¿cómo puedo mover una ventana que no tiene bordes? En la web de trucomania he visto el siguiente truco pero el problema que tiene es que luego no se pueden mostrar los popus.


private
{ Private declarations }
//procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;


procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
Begin

inherited;
if Msg.Result = htClient then Msg.Result := htCaption;

End

roman
05-07-2004, 19:45:42
pero el problema que tiene es que luego no se pueden mostrar los popus.

¿A qué te refieres con esto?

// Saludos

SMTZ
05-07-2004, 19:57:33
Pues tengo una ventana que no tiene bordes y la quiero mover (normalmente las ventanas solo se pueden mover desde el titulo de la ventana pero si le he eliminado los bordes no existe el titulo). El caso es que encontre un truco que hace lo que quiero pero los menus en forma de popup no los muestra si implemento dicho truco.

Gracias por tu interes.

roman
05-07-2004, 20:15:54
Ya entiendo.

Prueba modificar el truco así:


procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;

if (Msg.Result = htClient) and (GetAsyncKeyState(VK_LBUTTON) <> 0) then
Msg.Result := htCaption;
end;


De esta forma sólo permites el movimiento si el click es con el botón izquierdo y dejas el derecho libre.

// Saludos

SMTZ
05-07-2004, 20:38:46
Muchisimas gracias, era justo lo que estaba buscando.


Saludos. :)

seduerey
06-07-2004, 10:08:05
y como se quitan los bordes de las ventanas/formularios??

andres1569
06-07-2004, 13:14:10
y como se quitan los bordes de las ventanas/formularios??
Form.BorderStyle := bsNone;

seduerey
07-07-2004, 10:05:26
:( vale, es sencillo.... la proxima vez creo que probaré antes de preguntar... respuestas asi me hacen quedar como un tonto (no por ti, sino por mi, claro)

sabroso
25-02-2017, 04:55:07
Ya entiendo.

Prueba modificar el truco así:


procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;

if (Msg.Result = htClient) and (GetAsyncKeyState(VK_LBUTTON) <> 0) then
Msg.Result := htCaption;
end;


De esta forma sólo permites el movimiento si el click es con el botón izquierdo y dejas el derecho libre.

// Saludos


Hola trate de implementar este codigo pero no funciona quizas le falta algo

Casimiro Notevi
25-02-2017, 15:24:39
Hola trate de implementar este codigo pero no funciona quizas le falta algo
Sí, puede que te falte algo.