Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

"приклеивание" окна к краям экрана   Найти похожие ветки 

 
Aotd ©   (2003-10-05 18:59) [0]

Для "приклеивания" окна к краям экрана использую процедуру:
procedure WMExitSizeMove(var Msg:TMessage);message WM_ExitSizeMove;
...
procedure TForm1.WMExitSizeMove;
const a=20;
var WorkArea:TRect;
begin
   inherited;
   SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
   if left<=a then left:=0;
   if top<=a then top:=0;
   if left>=screen.width-width-a then left:=screen.width-width;
   if top>=screen.height-height-a then top:=screen.height-height;
   if Abs(Left-WorkArea.Left)<=a then Left:=WorkArea.Left;
   if Abs(Top-WorkArea.Top)<=a then Top:=WorkArea.Top;
   if Abs(Left+Width-WorkArea.Right)<=a then Left:=WorkArea.Right-Width;
   if Abs(Top+Height-WorkArea.Bottom)<=a then Top:=WorkArea.Bottom-Height;
   Invalidate;
end;
При адаптации под KOL она приобрела следующий вид:
procedure WMExitSizeMove(var Msg:TMessage);message WM_ExitSizeMove end;
...
Procedure TFMain.WMExitSizeMove;
const a=20;
var WorkArea:TRect;
begin
   inherited;
   SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
   if FMain.Form.left<=a then FMain.Form.left:=0;
   if FMain.Form.top<=a then FMain.Form.top:=0;
   if FMain.Form.left>=KOL.ScreenWidth-FMain.Form.width-a then FMain.Form.left:=KOL.ScreenWidth-FMain.Form.width;
   if FMain.Form.top>=KOL.ScreenHeight-FMain.Form.height-a then FMain.Form.top:=KOL.ScreenHeight-FMain.Form.height;
   if Abs(FMain.Form.Left-WorkArea.Left)<=a then FMain.Form.Left:=WorkArea.Left;
   if Abs(FMain.Form.Top-WorkArea.Top)<=a then FMain.Form.Top:=WorkArea.Top;
   if Abs(FMain.Form.Left+FMain.Form.Width-WorkArea.Right)<=a then FMain.Form.Left:=WorkArea.Right-FMain.Form.Width;
   if Abs(FMain.Form.Top+FMain.Form.Height-WorkArea.Bottom)<=a then FMain.Form.Top:=WorkArea.Bottom-FMain.Form.Height;
   FMain.Form.Invalidate;
end;
Но отказывается выполнять свое предназначение... Не подскажете в чем дело? С KOL я знаком 3-й день, посему прошу не судить меня слишком стро


 
Gandalf ©   (2003-10-05 21:05) [1]


> procedure WMExitSizeMove(var Msg:TMessage);message WM_ExitSizeMove
> end;
> ...
> Procedure TFMain.WMExitSizeMove;
> const a=20;
> var WorkArea:TRect;


Что то мне это не нравится, в KOL обработка событий идет через OnMessage...

http://kol.mastak.ru/FAQ.htm#1


 
Boguslaw   (2003-10-06 20:23) [2]

Try this:

function TForm1.KOLFormMessage(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
const a=20;
var WorkArea:TRect;
begin
Result := false;
if Msg.message = WM_EXITSIZEMOVE then begin
  SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
  with Form^ do begin
  if left<=a then left:=0;
  if top<=a then top:=0;
  if left>= KOL.ScreenWidth-width-a then left:=KOL.ScreenWidth-width;
  if top>= KOL.ScreenHeight -height-a then top:= KOL.ScreenHeight-height;
  if Abs(Left-WorkArea.Left)<=a then Left:=WorkArea.Left;
  if Abs(Top-WorkArea.Top)<=a then Top:=WorkArea.Top;
  if Abs(Left+Form.Width-WorkArea.Right)<=a then Left:=WorkArea.Right-Width;
  if Abs(Top+Height-WorkArea.Bottom)<=a then Top:=WorkArea.Bottom-Height;
  Invalidate;
  Result := true;
  end;
end;

Just a 5 minute solution , but it works for me ;-)
You should fix one problem here (if You want) - it ignores desktop toolbar.


 
Aotd ©   (2003-10-08 11:34) [3]

Всем спасибо, разобрался ;)


 
SerB   (2003-10-09 05:33) [4]

Вроде все нормально с кодом но (D7, KOL_MCK) не хочет работать


 
SerB   (2003-10-09 05:43) [5]

Опять поспешил, все работает нормально, забыл "подключить" функцию к свойству KOLForm OnMessage в инспекторе объектов :(



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1081941527
Volodya_
2004-04-14 15:18
2004.05.02
Консоль


14-1081781692
Undert
2004-04-12 18:54
2004.05.02
SSL сертификат


1-1082205529
Максим
2004-04-17 16:38
2004.05.02
Как сделать Zoom=100% в PrintPriview?


3-1081249521
Leech
2004-04-06 15:05
2004.05.02
Oracle... что в имени твоем....


1-1081848128
V-A-V
2004-04-13 13:22
2004.05.02
ZIP архивирование