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

Вниз

Формы в Delphi   Найти похожие ветки 

 
Вьюга   (2006-06-30 11:00) [0]

Есть такой код:

[CODE]
function FindActiveForm: String;
var I: Integer;
   Ch: TComponent;
begin
    Result := "frmDesktop";
    for I := 0 to (application.ComponentCount-1) do begin
    // поиск активной формы
       if (AnsiPos("frm", Application.Components[I].Name)<>0) then
       begin
          if (Application.Components[I] as TForm).FindComponent("sgList")<>nil
          then if ((Application.Components[I] as TForm).Parent=frmDesktop) then
          begin
               {Ch := frmDesktop.FindChildControl((Application.Components[I] as TForm).Name);
               if ((Ch as TForm).ClassType=TForm) then if ((Ch as TForm).Active)
               then }

               Result := (Application.Components[I] as TForm).Name;
          end;
       end;
    end;
end;
[CODE]
Так вот, если сначала открыть вТОРУЮ форму а потом ПЕРВУЮ то всё чётко. А если наоборот, то функция отдаёт имя ВТОРОЙ формы... В чём проблемка?


 
ЮЮ ©   (2006-06-30 11:15) [1]

Для чистоты эксперимента
 Result := "frmDesktop";
следует заменить на
 Result := "";

TScreen.ActiveForm чем не устроил?


 
pushkin42 ©   (2006-06-30 11:19) [2]

Тем что у всех форм парент frmDesktop. Типа фреймы.


 
pushkin42 ©   (2006-06-30 11:21) [3]

и если пишешь      Result := Screen.ActiveForm.Name; он вообще ничего не отдаёт.


 
ЮЮ ©   (2006-06-30 11:26) [4]

В приведенном коде нет проверки "активности", а лишь проверка наличия компонента с именем sgList. Естественно, будет возвращаться последняя в списке форма


 
pushkin42 ©   (2006-06-30 11:31) [5]

Подскажи тогда:)


 
ЮЮ ©   (2006-06-30 11:37) [6]

Result := Screen.ActiveForm.Name; он вообще ничего не отдаёт.

Ничего это как? У объектов созданных в runtime name обычно пустое. Анализируй ClassName или класс формы.


 
pushkin42 ©   (2006-06-30 11:42) [7]

они не рунтайм, обычные формы, только при onshow я их parent := frmDesktop.


 
ЮЮ ©   (2006-06-30 11:58) [8]


> Подскажи тогда:)


Попробовал создать такое "чудо". Так эти формы-фреймы вообще не получают фокуса ввода. Максимум что можно делать - двигать по главной форме.

Теперь ты подскажи - зачем тебе такие формы? :)


 
pushkin42 ©   (2006-06-30 12:05) [9]

Оно не мне а программеру который делал делал и бросил, а я теперь геморрой лечу...



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
2-1151608487
Ivolg
2006-06-29 23:14
2006.07.16
Форма


2-1151565058
lobach
2006-06-29 11:10
2006.07.16
Image...


2-1151392582
fast2
2006-06-27 11:16
2006.07.16
Как в StringGrid e сделать ширину столбцов разными?


15-1150228324
ReTer
2006-06-13 23:52
2006.07.16
DVD_RW привод читает только cd диски, а dvd перестали работать!


2-1151213766
prodeximus
2006-06-25 09:36
2006.07.16
Сортировка по полю