Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос - Как узнать что TPanel.BringtoFront=True? [D6, XP]


vegarulez ©   (2007-12-05 18:30:00) 

Прив мастерам!
Сабж.


{RASkov}   (2007-12-06 23:45:00) [1]

> первая

*тобишь верхняя (оно же - топмост, BringtoFront=True)


{RASkov}   (2007-12-06 23:43:00) [2]

> [9, 10] vegarulez ©   (06.12.07 15:48)

if IsFrontControl(panel3, Panel2) then ShowMsg('Панэл3 первая на панели2:')


vegarulez   (2007-12-06 15:51:00) [3]

т.е.
TPanel1--->TPanel2--->Tpanel3
Вот Tpanel3 как раз и требуется отследить.... потому как в TPanel2 содержится несколько TPanel`ов типа Tpanel3...


vegarulez   (2007-12-06 15:48:00) [4]

А как быть если он -TPanel, дважды вложен в другие TPanel`ы?


{RASkov}   (2007-12-06 12:59:00) [5]

Вот так, вроде бы, более правильнее и красивее:
function IsFrontControl(Ctrl: TControl; AParent: TWinControl; const IgnoreOther: Boolean=False): Boolean;
var N: Integer;
begin
 with AParent do begin
  Result:=Controls[ControlCount-1]=Ctrl;
  if not IgnoreOther or Result then Exit;
  for N:=ControlCount-1 downto 0 do
   if Controls[N] is Ctrl.ClassType then begin
    Result:=Controls[N]=Ctrl;
    Break;
   end;
 end;
end;


{RASkov}   (2007-12-06 12:25:00) [6]

> [5] vegarulez ©   (06.12.07 07:18)

На вот попробуй это:
function ConrtrolIsFront(Ctrl: TControl; AParent: TWinControl; IgnoreOther: Boolean=False): Boolean;
var N: Integer;
begin
 if not IgnoreOther then Result:=AParent.Controls[AParent.ControlCount-1]=Ctrl
  else for N:=AParent.ControlCount-1 downto 0 do
   if AParent.Controls[N] is Ctrl.ClassType then begin
    Result:=AParent.Controls[N]=Ctrl;
    Break;
  end;
end;

Я в англицком не силен, поэтому названия могут не соответствовать и поэтому вот расшифровка:
Ctrl - проверяемый контрол
AParent - проверять на этом родителе
IgnoreOther - участвуют ли в проверки другие контролы, т.е. если выше самого верхнего контрола класса проверяемого, лежит контрол другого класса.... в общем думаю понятно:)
Может есть и стандартный какой-то способ, но я бегло пробегся по TControl.. заметил только SetZOrder...


ЮЮ   (2007-12-06 10:20:00) [7]

> что из всех других TPanel`ов этот Bringtofront, а остальные
> под ним расположены...


Выполнить BringtoFront и добиться желаемого.


vegarulez   (2007-12-06 07:18:00) [8]

Palladin ©   (05.12.07 19:03) [2]

А это как?

boa_kaa ©   (05.12.07 20:30) [4]

я не понял... поясни...


boa_kaa   (2007-12-05 20:30:00) [9]


> vegarulez ©   (05.12.07 19:56) [3]

Тебе в 2 русским по белому написали


vegarulez   (2007-12-05 19:56:00) [10]

Kolan ©   (05.12.07 18:49) [1]
я в курсе...
я имею ввиду, как определить, что из всех других TPanel`ов этот Bringtofront, а остальные под ним расположены...
как это определить?


Palladin   (2007-12-05 19:03:00) [11]

по ZOrder


Kolan   (2007-12-05 18:49:00) [12]

BringtoFront не может быть True, так как это метод, а не свойство.


Наверх

Титульная страница Поиск, карта сайта Написать письмо