Przesuwanie formy- tylko w określonym miejscu

0

Witam serdecznie!

Otóż chcę w swoim programie zastosować funkcję Border Style: bsNone ale przydało by mi się abym mógł przesuwać okno aplikacji na określonym obrazku.
Opiszę jak to ma wyglądać. Jest forma 800x600px, na samym jej górze jest obrazek który idzie na całej szerokości głównej formy. Forma główna ma styl obramowania bsNone.
I teraz chcę aby trzymając myszkę na tym obrazku można było przesuwać sobie programik- tylko na tym obrazku- nie na całej aplikacji.

Korzystałem z tego:
http://www.unit1.pl/77,txt
Ale tutaj autor opisał tylko jak zrobić aby przesuwanie było możliwe dla CAŁEJ formy, a ja chcę tylko dla określonego obrazka.

Myślę że mnie zrozumiecie- mam nadzieję że ktoś z Was jest w stanie mi pomóc. Za wszelką pomoc- SERDECZNIE DZIĘKUJĘ!

Pozdrawiam,
Enpeiks

0

Jeżeli dobrze zrozumiałem, co chcesz zrobić, to spójrz na mój post w tym temacie: http://4programmers.net/Forum/659352?h=#id659352

0

mie się wydaje, że robisz tak samo jak dla formy tylko zmieniasz uchwyt...
ale nie chcę już sprawdzać, bo późno i powyłączałem wszystko

0

Spróbuj tym:

Procedure Tform1.image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
      ReleaseCapture;
      form1.perform(WM_syscommand, $F012, 0);
end;

Są do tego jeszcze inne opcje, poczytaj na necie ;)

0

A nie prościej tak?

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
  private
    { Private declarations }
  protected
    procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
var
  p: TPoint;
begin
  p.X:= Msg.XPos;
  p.Y:= Msg.YPos;
  p:= ScreenToClient(p);
  if PtInRect(Image1.BoundsRect, p) then
    Msg.Result:= HTCAPTION
  else
    inherited;
end;


end.
0

Czy ja wiem ze tak prosto ;d

dla form1.perform(WM_syscommand, $F012, 0); Istnieje wiele możliwości, prócz przesuwania okna także np zmiana rozmiaru na rożne sposoby. Bodajże można zastosować to do kazdego komponentu (np Panel) ale nie jestem pewien, nie testowałem. Na formie działa elegancko.

Sposob dzialania zmienia się poprzez $F012

0

Okej, dziękuję serdecznie Wam wszystkim za udzielanie się w temacie. Zastosowałem się do podpowiedzi użytkownika simplex, który podał adres do swojego tematu (całkiem podobnego).
Póki co, kod który podał działa więc zatrzymam się na nim.

Jeszcze raz serdecznie dziękuję.
Temacik do zamknięcia.

Pozdrawiam,
Enpeiks

1 użytkowników online, w tym zalogowanych: 0, gości: 1