iskander Спасибо.
Но этот момент появляется если добавляю возможность перетаскивать форму за картинку MouseMove.
- Код: Выделить всё
- unit Unit1;
 
 {$mode objfpc}{$H+}
 
 interface
 
 uses
 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Windows;
 
 type
 
 { TForm1 }
 
 TForm1 = class(TForm)
 Button1: TButton;
 Image1: TImage;
 Image2: TImage;
 procedure Button1Click(Sender: TObject);
 procedure FormActivate(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure FormShow(Sender: TObject);
 procedure Image1Click(Sender: TObject);
 procedure Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
 );
 procedure TrayIcon1Click(Sender: TObject);
 private
 FShowing: Boolean;
 public
 
 end;
 
 var
 Form1: TForm1;
 XX,YY:integer;
 
 implementation
 
 {$R *.lfm}
 
 { TForm1 }
 
 procedure TForm1.Image1Click(Sender: TObject);
 begin
 Application.Minimize;
 end;
 
 procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
 begin
 if Shift=[ssLeft] then
 begin
 Left:=Left+(X-XX);
 Top:=Top+(Y-YY);
 end else
 begin
 XX:=X;
 YY:=Y;
 end;
 end;
 
 procedure TForm1.TrayIcon1Click(Sender: TObject);
 begin
 
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 close;
 end;
 
 procedure TForm1.FormActivate(Sender: TObject);
 begin
 
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 Caption:='';
 BorderIcons:=[];
 BorderStyle:= bsSingle;
 SetWindowLongPtr(Handle, GWL_STYLE, GetWindowLongPtr(Handle, GWL_STYLE) and not WS_DLGFRAME);
 end;
 
 procedure TForm1.FormShow(Sender: TObject);
 begin
 if FShowing then
 exit;
 FShowing := True;
 Width := Width - 4;
 Width := Width + 0;
 end;
 
 end.
 
 
 
Заметил еще один момент: при перетаскивании формы за картинку прибавляется высота формы снизу.
В обычном варианте форму за картинку можно перетаскивать без этих странностей. Но когда добавляю код который убирает шапку и позволяет нормально сворачивать и разворачивать форму, то появляются вот такие странные эффекты. Почему, непонятно.
Как это можно исправить? Подскажите пожалуйста.
Добавлено спустя 48 минут 9 секунд:высоту и ширину формы задал вот так, и теперь не увеличивается
- Код: Выделить всё
- procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
 begin
 if Shift=[ssLeft] then
 begin
 Left:=Left+(X-XX);
 Top:=Top+(Y-YY);
 end else
 begin
 XX:=X;
 YY:=Y;
 end;
 
 //задаем высоту и ширину формы чтобы не увеличивалась
 Form1.Height := 300;
 Form1.Width := 400;
 
 end;
С шириной картинки чтобы не мучиться, просто увеличил ширину картинки на 4, и теперь все так работает.
Вопрос с глюками по ширине и высоте формы решен с помощью костылей.
Если есть более удобный и правильный способ решить этот вопрос было бы хорошо.
Но в принципе и так все нормально работает теперь. )