Avatar billede easysoft_studios Nybegynder
13. maj 2001 - 00:38 Der er 4 kommentarer og
1 løsning

Resize Form

Her en en rigtig svær en (jeg giver sgu gerne flere point hvis det bliver nødvendigt!)


Jeg har en form uden nogen borders, og så ved de fleste godt at man ikke sådan kan resize denne. Men er der nogen som ved hvordan, ved fx at trække i et TPanel, ændre formens størrelse, på sammen måde som med alle andre vinduer?
Avatar billede makse Nybegynder
13. maj 2001 - 01:21 #1
Løsningen kan du finde på http://www.delphicorner.f9.co.uk/tips/forms/forms2.htm
Jeg har selv brugt den engang. Og den virker udemærket.
Avatar billede abpdk Nybegynder
13. maj 2001 - 04:03 #2
Er er et ret primitivt eksempel uden nogen særlige API kald eller lign.
Grunden til at det fylder så meget er at der er taget hensyn til om man trækker i bunden, højre eller begge kanter.

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if ((x > form1.clientwidth-5) and (y > form1.clientheight-5)) then
    but:=1
  else if (x > form1.clientwidth-5) then
    but:=2
  else if (y > form1.clientheight-5) then
    but:=3;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ((x > form1.clientwidth-5) and (y > form1.clientheight-5)) then
    form1.cursor:=crSizeNWSE
  else if (x > form1.clientwidth-5) then
    form1.cursor:=crSizeWE
  else if (y > form1.clientheight-5) then
    form1.cursor:=crSizeNS
  else form1.cursor:=crDefault;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  but:=0;
end;

procedure TForm1.Idle(Sender: TObject; var Done: Boolean);
var
  p: TPoint;
begin
  done:=false;

  GetCursorPos(p);
  case but of
    1: begin
        form1.width:=p.x-form1.left;
        form1.height:=p.y-form1.top;
      end;
    2: form1.width:=p.x-form1.left;
    3: form1.height:=p.y-form1.top;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnIdle:=Idle;
end;

MVH
abpdk
Avatar billede abpdk Nybegynder
13. maj 2001 - 04:31 #3
Det var godt nok er svar...
Avatar billede easysoft_studios Nybegynder
13. maj 2001 - 13:29 #4
Den side som makse henviste til, var ikke lige til at overskue på en søndag, så jeg giver pointene til abpdk.

Mange tak til jer begge to anyway! :-)
Avatar billede makse Nybegynder
13. maj 2001 - 13:31 #5
CTRL C - CTRL V så kører det. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester