alt text

Fiz esse form para aprender a desenvolver aplicativos sem o borderstyle do windows.

Utilizei esse código abaixo.


  1. procedure TfrmExemplo1.FormCreate(Sender: TObject);
  2. begin
  3. FFormBorderStyle := bsNone;
  4. end;

    Porem ele não pode ser arrastado ou movido na tela. Então criei um panel na parte superior e tentei de todas as formas utilizar algum recurso dragAndDrop, mas nada funcionou.

    Agradeço quem se dispor a responder.

perguntou Jan 30 '17 às 04:18

JosueSevahc's gravatar image

JosueSevahc
1121

alt text

Fiz esse código para ver se resolvia mas ainda não tive exito:

unit u_exemplo1;

{$mode objfpc}{$H+}

interface

uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;

type

{ TfrmExemplo1 } TfrmExemplo1 = class(TForm) btnFechar: TButton; edNome: TEdit; Label1: TLabel; Panel1: TPanel; procedure btnFecharClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer); procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private dx: integer; dy: integer; { private declarations } public { public declarations } end;

var frmExemplo1: TfrmExemplo1;

implementation

{$R *.lfm}

{ TfrmExemplo1 }

procedure TfrmExemplo1.btnFecharClick(Sender: TObject);
begin
Close;
end;

procedure TfrmExemplo1.FormCreate(Sender: TObject);
begin
FFormBorderStyle := bsNone;
end;

procedure TfrmExemplo1.FormDockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;

procedure TfrmExemplo1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
//frmExemplo1.ClientToScreen(x, y);
frmExemplo1.ClientHeight := x;
frmExemplo1.ClientWidth := y;
end;

procedure TfrmExemplo1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
dx := x;
dy := y;
frmExemplo1.BeginDrag(true);
end;

end;

end.

link permanente

respondeu Jan 30 '17 às 05:01

JosueSevahc's gravatar image

JosueSevahc
1121

Encontrei nesse site a solução:
http://lazplanet.blogspot.com.br/2013/06/dragging-form-by-its-body.html

Segue o Tutorial com os códigos:

1- Declare essas Váriaveis (de preferencia no private) :

private **mouseIsDown: Boolean; dx: integer; dy: integer;** { private declarations }

2- Eu utilizei o Panel para servir de cabeçalho e apenas clicando sobre ele é possivel mover o Form. Forem você pode escolher qualquer componente (Até mesmo o próprio Formulario) mas ai em qualquer lugar que clicar no formulario será possivel move-lo.

3- Crie o primeiro evento (OnMouseDown) para o componente escolhido como ''Ancora". e digite o código em negrito. (No meu caso frmExemplo1 é o Form, e pnPrincipal é o Panel).

procedure TfrmExemplo1.pnPrincipalMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
mouseIsDown := True;
dx := X;
dy := Y;
end;
end;

4- Digite o código em negrito no evento (OnMouseMove) do mesmo Componente.

procedure TfrmExemplo1.pnPrincipalMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if mouseIsDown then begin
SetBounds(frmExemplo1.Left + (X - dx), frmExemplo1.Top + (Y - dy), frmExemplo1.Width, frmExemplo1.Height);
end;
end;

5- E por fim esse ultimo código no evento (OnMouseUp), do mesmo componente.

procedure TfrmExemplo1.pnPrincipalMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
mouseIsDown := False;
end;

end.

Pronto, Só dar um F9 e executar seu aplicativo. Você pode inserir imagens e fazer esse mesmo processo com diversos componentes. Lembre de criar um componente que possa fechar a tela, se você for desativar a barra de titulo do windows.

Para remove-la, vá nas propriedades do form no Object Inspector e e na propriedade BorderStyle selecione bsNone.

link permanente

respondeu Jan 30 '17 às 06:18

JosueSevahc's gravatar image

JosueSevahc
1121

Sua resposta
mudar para preview

Siga esta pergunta

Por Email:

Uma vez que você entrar você poderá se inscrever para todas as atualizações aqui

Por RSS:

Respostas

Respostas e Comentários

Markdown Básico

  • *italico* ou __italico__
  • **negrito** or __negrito__
  • link:[texto](http://url.com/ "Qual é a sua dúvida?")
  • imagem?![alt texto](/path/img.jpg "Qual é a sua dúvida?")
  • lista numerada: 1. Foo 2. Bar
  • para adicionar uma quebra de linha basta adicionar dois espaços onde você gostaria que a nova linha estivesse.
  • tags HTML básicas também são suportadas

Tags

×2,149
×22
×8
×4
×3
×2
×1
×1
×1
×1
×1
×1

pergunta feita: Jan 30 '17 às 04:18

pergunta lida: 807 vezes

última alteração: Jan 30 '17 às 06:18