Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Формы в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-1147500946
Leshiy
2006-05-13 10:15
2006.07.16
Значение параметра xml документа


15-1150436654
Ega23
2006-06-16 09:44
2006.07.16
С Днём рождения! 16 июня


10-1121943189
sarcin
2005-07-21 14:53
2006.07.16
JavaScript Events на IntraWeb


2-1151569501
learner
2006-06-29 12:25
2006.07.16
Управление VCL из нити


2-1151605595
resuS
2006-06-29 22:26
2006.07.16
Что такое StdIn?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский