Autor Téma: Změna velikosti formu za běhu  (Přečteno 496 krát)

(T)lama

  • Host
Změna velikosti formu za běhu
« kdy: 15-02-2006, 14:52:00 »
Potřeboval bych pomocí něčeho roztahovat formulář i když mám nastaveno BorderStyle na None. Jak to mám provést?

MartinCFM

  • Host
Změna velikosti formu za běhu
« Odpověď #1 kdy: 15-02-2006, 15:29:59 »
a co treba menit Width a Height??

(T)lama

  • Host
Změna velikosti formu za běhu
« Odpověď #2 kdy: 15-02-2006, 16:27:00 »
Špatně jste to pochopil. Já potřebuju aby to mohl uživatel měnit dle libosti, stejně jako u normálního okna když neni nastaveno BorderStyle na none.

Suprmen

  • Host
Změna velikosti formu za běhu
« Odpověď #3 kdy: 15-02-2006, 17:33:00 »
Umisti si do pravyho dolniho rohu nejakou komponentu(a zajisti aby tam byla i po zmene velikosti :) ) kterou to budes menit (musi mit udalost OnMouseDown,OnMouseMove a OnMouseUp) ,dal potrebujes globalni promenou pro pozici treba pos:TPoint; a move:Boolean;
 
Do OnMoseDown napises
  pos.X:=X;
  pos.Y:=Y;
  move:=True;

DO OnMouseMove
  if move then
  begin
    TForm1.Width:=TForm1.Width+(Y-pos.Y);
    TForm1.Heigth:=TForm1.Heigth+(X-pos.X);
    pos.X:=X;
    pos.Y:=Y;
  end;

Do OnMouseUp
  move:=False;

pisu to z hlavy a nevim jestli to je uplne spravne sorry nejsem profik ale nejak tak by to melo fungovat

MartinCFM

  • Host
Změna velikosti formu za běhu
« Odpověď #4 kdy: 15-02-2006, 17:36:00 »
v tom pripade takto:

Kód: [Vybrat]
type
  TForm1 = class(TForm)
    ...
  public
    { Public declarations }
    procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
  end;

...

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
const
  hWidth:Integer=5;
  sWidth:Integer=20;
var
  p:TPoint;
begin
  inherited;
  if (csDesigning in ComponentState) then Exit;
  p:=ScreenToClient(Point(Msg.Xpos,Msg.Ypos));
  if p.x  begin
     if p.Y     if Height-p.Y       Msg.Result:=HTLEFT;
  end else
  if Width-p.x  begin
     if p.Y     if Height-p.Y       Msg.Result:=HTRIGHT;
  end else
  if p.y  begin
     if p.X     if Width-p.X       Msg.Result:=HTTOP;
  end else
  if Height-p.Y  begin
     if p.X     if Width-p.X       Msg.Result:=HTBOTTOM;
  end;
end;