![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос - Как узнать что 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, так как это метод, а не свойство.