Cortar Form

17/02/2016

3

Bom dia pessoal, alguem saberia me dizer alguma forma de corta uma parte do form ??? ( seleciono uma parte do form com o mouse )
Responder

Post mais votado

18/02/2016

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg, xpman;

type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    x1, y1, x2, y2: Integer;
    ptnd: Boolean;
    AnchorX, AnchorY, CurX, CurY: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  vH: Byte = 10;
  vV: Byte = 30;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  x1 := x + vH;
  y1 := y + vV;
  ptnd := True;
  AnchorX := X;
  CurX := X;
  AnchorY := Y;
  CurY := Y;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  region1, region2: hrgn;
begin
  x2 := x + vH;
  y2 := y + vV;
  //if Shift = [ssCtrl] then
  begin
    region1 := CreateRectRgn(0, 0, Self.Width, Self.Height);
    region2 := CreateRectRgn(x1, y1, x2, y2);
    CombineRgn(region1, region1, region2, RGN_DIFF);
    SetWindowRgn(Handle, region1, True);
  end;
  if ptnd then
  begin
    ptnd := False;
    Canvas.Pen.Mode := pmNot;
    Canvas.Brush.Style := bsClear;
    Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
  end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  Caption := 'x1: ' + IntToStr(x1) + '; y1 ' + IntToStr(y1) + '; x2 ' + IntToStr(x2) + '; y2 ' + IntToStr(y2) + ';';
  if ptnd then
  begin
    Canvas.Pen.Mode := pmNot;
    Canvas.Pen.Width := 2;
    Canvas.Brush.Style := bsClear;
    Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
    CurX := X;
    CurY := Y;
    Canvas.Rectangle(AnchorX, AnchorY, CurX, CurY);
  end;
end;

end.
Responder

Mais Posts

17/02/2016

Raylan Zibel

Bom dia pessoal, alguem saberia me dizer alguma forma de corta uma parte do form ??? ( seleciono uma parte do form com o mouse )

Cortar tipo deixar um buraco no form ou cortar tipo capturar uma imagem da parte selecionada?
Responder

17/02/2016

Junior Santos

Furar o form, tipo furar o form no local que tiver uma imagem ou panel ...

Tentei assim mais nao corto o form aonde ta o panel.

procedure TForm1.Button1Click(Sender: TObject);
var
Region, Region2 : hrgn;
x1,x2,y1,y2 : integer;
begin
x1 := Panel1.Top;
x2 := Panel1.Left;
y1 := panel1.Width;
y2 := panel1.Height;
Form1.FormStyle:= fsStayOnTop;
Region := CreaterectRgn(0,0,width,height);
Region2 := CreaterectRgn(x1,x2,y1,y2);
CombineRgn(region, region, region2, RGN_DIFF);
SetWindowRgn(handle, region, true);
end;

OBS: O Corte que quero fazer é quadrado
Responder

17/02/2016

Junior Santos

ninguem ??? up
Responder

18/02/2016

Ricardo Araujo

Bom dia Junior, Não conseguir entender também poderia tirar um print do Formulário, e depois poderia circular o que esta querendo fazer, acho que assim será mais fácil a gente entender tudo bem!

Att:
rbbarreto@hotmail.com
Responder

18/02/2016

Junior Santos

opa, blz ja estou mandando.

EDT: Ja mandei no seu email.
Desde ja, Obrigado.
Responder

18/02/2016

Raylan Zibel

opa, blz ja estou mandando.

EDT: Ja mandei no seu email.
Desde ja, Obrigado.


[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-094229.png[/img]

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

Feito em Delphi 7.
Responder

18/02/2016

Junior Santos

opa, blz ja estou mandando.

EDT: Ja mandei no seu email.
Desde ja, Obrigado.


[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-094229.png[/img]

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

Feito em Delphi 7.


Opa eh tipo isso mesmo mais a diferença eh que queria furar o form podendo mexer noque esta atraz atraves do furo por isso tava usando aquela função la so o problema eh que nao tava furando no local que eu estava setando.
Responder

18/02/2016

Raylan Zibel

opa, blz ja estou mandando.

EDT: Ja mandei no seu email.
Desde ja, Obrigado.


[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-094229.png[/img]

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

Feito em Delphi 7.


Opa eh tipo isso mesmo mais a diferença eh que queria furar o form podendo mexer noque esta atraz atraves do furo por isso tava usando aquela função la so o problema eh que nao tava furando no local que eu estava setando.


Baixe o projeto e teste e valide se funciona como quer.

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0
Responder

18/02/2016

Junior Santos

opa, blz ja estou mandando.

EDT: Ja mandei no seu email.
Desde ja, Obrigado.


[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-094229.png[/img]

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

Feito em Delphi 7.


Opa eh tipo isso mesmo mais a diferença eh que queria furar o form podendo mexer noque esta atraz atraves do furo por isso tava usando aquela função la so o problema eh que nao tava furando no local que eu estava setando.


Baixe o projeto e teste e valide se funciona como quer.

https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0


Sim eu baixei ele e testei, como eu falei ele apenas mostra oque ta atraz, eu preciso interagir com oque esta atraz atraves desse burraco que no caso seria um buraco no formulario.

Exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWnd;
Region1, Region2: HRgn;
Rect: TRect;
begin
Wnd:=Application.MainForm.Handle;
GetWindowRect(Wnd,Rect);
Region1:=CreateRectRgn(0,0,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top);
Region2:=CreateRectRgn(10,30,150,120);
CombineRgn(Region1,Region1,Region2,RGN_DIFF);
SetWindowRgn(Wnd,Region1,True);
end;

No caso iria usa o mouse pra seta o local e tamanho ou ate mesmo um panel que colocarei em cima do local do tamanho desejado.
Responder

18/02/2016

Raylan Zibel

Teste agora: https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-113036.png[/img]
Responder

18/02/2016

Junior Santos

Teste agora: https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-113036.png[/img]


Putz Perfeitamente... cara obrigado salvo eu aqui... obrigado de verdade...

EDT: so uma pergunta, aonde o mouse ta selecionando ah como fazer a janelinha igual o windows tem ?
Responder

18/02/2016

Raylan Zibel

Teste agora: https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-113036.png[/img]


Putz Perfeitamente... cara obrigado salvo eu aqui... obrigado de verdade...

EDT: so uma pergunta, aonde o mouse ta selecionando ah como fazer a janelinha igual o windows tem ?


Perdão, não entendi exatamente o que precisa.
Responder

18/02/2016

Raylan Zibel

Voce quer que enquanto estiver selecionando a area o cursor desenhe o pontilhado na area?
Responder

18/02/2016

Junior Santos

Voce quer que enquanto estiver selecionando a area o cursor desenhe o pontilhado na area?


Isso mesmo.
Responder

18/02/2016

Raylan Zibel

Voce quer que enquanto estiver selecionando a area o cursor desenhe o pontilhado na area?


Isso mesmo.


Aqui: https://www.dropbox.com/s/a80fcxs0qzhxgnp/buraco%20no%20formulario.rar?dl=0

[img:descricao=print]http://arquivo.devmedia.com.br/forum/imagem/244662-20160218-133817.png[/img]
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira