Forumunuz.Com

Forumunuz.Com (https://www.forumunuz.com/)
-   Webmaster Forum (https://www.forumunuz.com/webmaster-forum/)
-   -   Manyetik Form - Miknatis Form - Magnet Form (https://www.forumunuz.com/webmaster-forum/17402-manyetik-form-miknatis-form-magnet-form.html)

Kaf Dağı 27 Mart 2015 15:25

Manyetik Form - Miknatis Form - Magnet Form
 
Kod:

//----- manyetik form ozelligi -------------------------------------------------
//Tamami Ersin Kecis tarafindan kodlanmistir. (Upload Tarihi: 21.05.2010 14:55)
//FmUrunKarti yazan bolumlerin oldugu yerlere kendi formunuzun ismini yazin.
//formu standart basligindan tutup tasiyarak ekran kenarlarina yaklastiririn...
//procedure WMSyscommand(var msg: TWmSysCommand);message WM_SYSCOMMAND; -> private'e
var tasiniyor:boolean=false;//aslinda bunu da govdeden tasirken kullaniyordum...
  remsg:TWmSysCommand;
procedure TFmUrunKarti.WMSyscommand(var msg:TWmSysCommand);
const hassasiyet=30;//ekran kenarina olan mesafe, pixel bazinda!
var a:TAppBarData;
  r:TRect;//r <> a.RC
  boy,en,konum:integer;//konum = 0=>altta 1=>ustte 2=>sagda 3=> solda
  //gizli:boolean;//taskbar gizlenmis mi?
begin
//formu govdeden tasimak icin formun onmousedown event'ine:
//ReleaseCapture; FmUrunKarti.perform(WM_SYSCOMMAND,$F012,0);
 if(msg.CmdType and $FFF0)=SC_MOVE then
  begin
  if tasiniyor then exit;
  tasiniyor:=true;
  a.Hwnd:=FindWindow('Shell_TrayWnd',nil); //MSTaskSwWClass //ReBarWindow32
  if a.Hwnd=0then begin tasiniyor:=false;exit;end else GetWindowRect(a.Hwnd,r);
  a.cbSize:=SizeOf(TAppBarData);
  //gizli:=(SHAppBarMessage(ABM_GETSTATE,a)and ABS_AUTOHIDE)>0;//taskbar otm.gizlenmis mi?
  boy:=r.Bottom-r.Top-2;
  en :=r.Right-r.Left-2;
  konum:=0;//default: altta!
  if SHAppBarMessage(ABM_GETTASKBARPOS,a)>0then
    case a.uEdge of//otomatik tespit
    ABE_BOTTOM:konum:=0;
    ABE_TOP  :konum:=1;
    ABE_RIGHT :konum:=2;
    ABE_LEFT  :konum:=3;
    end
  else
    begin//manuel tespit :)
    if(r.Top>0)and(r.Left<0)and(en>Screen.Width)then konum:=0; //0.altta: T:994, L:  -2 En:1282
    if(r.Top<0)and(r.Left<0)and(en>Screen.Width)then konum:=1; //1.ustte: T: -2, L:  -2 En:1282
    if(r.Top<0)and(r.Left>0)and(en<Screen.Width)then konum:=2; //2.sagda: T: -2, L:1162 En: 118
    if(r.Top<0)and(r.Left<0)and(en<Screen.Width)then konum:=3; //3.solda: T: -2, L:  -2 En: 118
    end;
  case konum of
    0:begin//taskbar altta
      //form uste yakin ise uste yapistir:
      if FmUrunKarti.Top<=Hassasiyet then FmUrunKarti.Top:=0;
      //form alta yakin ise alta yapistir:
      //if gizli then ...
      if FmUrunKarti.Top>=(Screen.Height-FmUrunKarti.Height-Boy)-Hassasiyet then
          FmUrunKarti.Top:=Screen.Height-FmUrunKarti.Height-Boy;
      //form sola yakin ise sola yapistir:
      if FmUrunKarti.Left<=Hassasiyet then FmUrunKarti.Left:=0;
      //form saga yakin ise saga yapistir:
      if FmUrunKarti.Left>=(Screen.Width-FmUrunKarti.Width)-Hassasiyet then
          FmUrunKarti.Left:=Screen.Width-FmUrunKarti.Width;
      end;
    1:begin//taskbar ustte
      //form uste yakin ise uste yapistir:
      //if gizli then ...
      if FmUrunKarti.Top<=Boy+Hassasiyet then FmUrunKarti.Top:=Boy;
      //form alta yakin ise alta yapistir:
      if FmUrunKarti.Top>=(Screen.Height-FmUrunKarti.Height)-Hassasiyet then
          FmUrunKarti.Top:=Screen.Height-FmUrunKarti.Height;
      //form sola yakin ise sola yapistir:
      if FmUrunKarti.Left<=Hassasiyet then FmUrunKarti.Left:=0;
      //form saga yakin ise saga yapistir:
      if FmUrunKarti.Left>=(Screen.Width-FmUrunKarti.Width)-Hassasiyet then
          FmUrunKarti.Left:=Screen.Width-FmUrunKarti.Width;
      end;
    2:begin//taskbar sagda
      //form uste yakin ise uste yapistir:
      if FmUrunKarti.Top<=Hassasiyet then FmUrunKarti.Top:=0;
      //form alta yakin ise alta yapistir:
      if FmUrunKarti.Top>=(Screen.Height-FmUrunKarti.Height)-Hassasiyet then
          FmUrunKarti.Top:=Screen.Height-FmUrunKarti.Height;
      //form sola yakin ise sola yapistir:
      if FmUrunKarti.Left<=Hassasiyet then FmUrunKarti.Left:=0;
      //form saga yakin ise saga yapistir:
      //if gizli then ...
      if FmUrunKarti.Left>=(Screen.Width-FmUrunKarti.Width-En)-Hassasiyet then
          FmUrunKarti.Left:=Screen.Width-FmUrunKarti.Width-En;
      end;
    3:begin//taskbar solda
      //form uste yakin ise uste yapistir:
      if FmUrunKarti.Top<=Hassasiyet then FmUrunKarti.Top:=0;
      //form alta yakin ise alta yapistir:
      if FmUrunKarti.Top>=(Screen.Height-FmUrunKarti.Height)-Hassasiyet then
          FmUrunKarti.Top:=Screen.Height-FmUrunKarti.Height;
      //form sola yakin ise sola yapistir:
      //if gizli then ...
      if FmUrunKarti.Left<=En+Hassasiyet then FmUrunKarti.Left:=En;
      //form saga yakin ise saga yapistir:
      if FmUrunKarti.Left>=(Screen.Width-FmUrunKarti.Width)-Hassasiyet then
          FmUrunKarti.Left:=Screen.Width-FmUrunKarti.Width;
      end;
  end;
  WMSyscommand(msg);
  remsg:=msg;
  tasiniyor:=false;
  end;
 inherited;
Thread.Enabled:=True;//5ms
end;
procedure TFmUrunKarti.ThreadTimer(Sender: TObject);
begin//******* icin 5ms sonra
//eger standart form basligindan degilde govdeden tasinacaksa bu timer'a gerek yok.
WMSyscommand(remsg);
Thread.Enabled:=False;
end;
//----- manyetik form ozelligi -------------------------------------------------



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 02:53.

Powered by vBulletin® Version 3.8.9   Copyright ©2000 - 2026, vBulletin Solutions, Inc.

Site kurucuları: Damla ve Meltem