Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Найти формы, которые частично перекрывают окно вашего приложения

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 

  You would have to iterate over all windows above yours in Z-order and 
  check for each window you find if it has the WS_EX_TOPMOST exstyle set 
  and is visible. 
  If it has, you have to get its window rectangle (GetWindowRect) and test 
  if that overlaps your window. 

  Example: 

}

 procedure TForm1.Button1Click(Sender: TObject);
 var
   wnd: HWND;

   function IsTopMost(wnd: HWND): Boolean;
   begin
     Result := (GetWindowLong(wnd, GWL_EXSTYLE) and WS_EX_TOPMOST) <> 0;
   end;

   procedure logWindowInfo(wnd: HWND);
   const
     visString: array[Boolean] of string = ('not ', '');
   var
     buffer: array[0..256] of Char;
     r:      TRect;
   begin
     if wnd = 0 then Exit;
     GetClassName(wnd, buffer, SizeOf(buffer));
     with Memo1.Lines do
     begin
       Add(Format(' Window of class %s ', [buffer]));
       GetWindowRect(wnd, r);
       Add(Format(' at (%d,%d):(%d,%d)', [r.Left, r.Top, r.Right, r.Bottom]));
       Add(Format(' Window is %svisible', [visString[IsWindowVisible(wnd)]]));
       Add(Format(' Window is %stopmost', [visString[IsTopmost(wnd)]]));
     end;
   end;

    begin
   Memo1.Clear;
   wnd := Handle;
   repeat
     wnd := GetNextWindow(wnd, GW_HWNDPREV);
     LogWindowInfo(wnd);
   until wnd = 0;
   Memo1.Lines.Add('End log.');
 end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay