Главная страница
    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.017 c
2-1151467285
Freze_Kati
2006-06-28 08:01
2006.07.16
Как вставить часть французского текста?


2-1151152802
b.o.n.d.007
2006-06-24 16:40
2006.07.16
Я не могу понять, почему Делфи не считает куски формулы?


15-1150154457
Модемщик
2006-06-13 03:20
2006.07.16
Почему модемный доступ настолько дороже выделенки?


10-1121850324
serjufa
2005-07-20 13:05
2006.07.16
повернуть ячейку со словом на 45 .


15-1150371338
dimodim-Furyz
2006-06-15 15:35
2006.07.16
Сименсы и пачи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский