Главная страница
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.038 c
15-1149952790
Змей:)
2006-06-10 19:19
2006.07.16
Кто знает как сделать воздушного змея?


15-1150485086
X9
2006-06-16 23:11
2006.07.16
Гигабитная сеть


15-1150721661
Crazy monkey
2006-06-19 16:54
2006.07.16
Старая вещчица, но смешеая.


3-1147433430
Bless
2006-05-12 15:30
2006.07.16
дабавить поле в dataset на клиенте


15-1149507664
Зм1й
2006-06-05 15:41
2006.07.16
Earthworm Jim 2 под Sega Mega Drive 2