Одесса: 3°С (вода 8°С)
Киев: -1°С
Львов: -4°С

Тема: Дата создания MDI окна

Ответить в теме
Показано с 1 по 5 из 5
  1. Вверх #1
    sin-st
    гость

    По умолчанию Дата создания MDI окна

    Подскажите пожалуйста, можно ли как то получить (делфи) дату-время открытия окна. Это нужно что бы при закрытия приложения можно было все дочерние окна(каскады) закрывать строго в обратном порядке для корректного сохранения данных? Или надо вводить переменную в форму типа дата и по ней сортировать потом окна при закрытии.. Но форм много . Не хочется все менять.... Может винда хранить гдето автоматом дату-время...


  2. Вверх #2
    сделать можно конечно - модифицировать класс формы, т.е создать класс-наследник с нужными св-вами и методами.
    Но сама идея не корректна - если менялись данные в дочерних формах и пользователь их не сохранил - автоматом что-то сохранять не стоит.

  3. Вверх #3
    Частый гость Аватар для valheru
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    41
    Сообщений
    852
    Репутация
    55
    Цитата Сообщение от sin-st Посмотреть сообщение
    Подскажите пожалуйста, можно ли как то получить (делфи) дату-время открытия окна. Это нужно что бы при закрытия приложения можно было все дочерние окна(каскады) закрывать строго в обратном порядке для корректного сохранения данных?
    А почему для корректного сохранения данных нужно закрывать окна в определенном порядке?

    Цитата Сообщение от sin-st Посмотреть сообщение
    Может винда хранить гдето автоматом дату-время...
    Нет. В истории программирования это еще никому не было нужно.

  4. Вверх #4
    Бывалый
    Аватар для fatman
    Пол
    Мужской
    Возраст
    40
    Сообщений
    8,626
    Репутация
    1312
    зачем такие сложности?
    1. при создании окна пишешь MDiForm.Caption:='YourCaption ('+DateToStr(Now)+')';
    результат : в заголовке сидит дата создания
    2. При закрытии (идея состоит в создании массива с номерами дочерних окон записанных по возрастанию/убыванию)
    SetLength(MDI_Indexes,MainForm.MDIChildCount);
    CurDate:=Date(Now); // получение текущей даты для начала сортировки
    for i:=0 to MainForm.MDIChildCount-1 do
    begin
    TempDate:=StrToDate(Copy(MDIChildren[i].Caption, ')', Length(DateToStr(Now)));
    {
    тут сам напишешь алгоритм пузырьковой сортировки индексов "детей"
    }
    end;
    // после получения сортированного массива индексов делаешь такое
    For i:=0 to Length(MDI_Indexes)-1 do
    begin
    MainForm.MDIChildren[i].BringToFront; //закрываемая форма на передний план
    // далее необходимые действия перед закрытием окна
    MainForm.MDIChildren[i].Free; //убиваем ребенка аки Тарас Бульба
    end;

  5. Вверх #5
    Бывалый
    Аватар для fatman
    Пол
    Мужской
    Возраст
    40
    Сообщений
    8,626
    Репутация
    1312
    и даже еще проще.
    дети, создаваясь один за другим - индексируются.
    Соотвествено дите, созданное позже - получает больший индекс.
    для того, чтобы закрывать их в обратном порядке, тебе надо просто пустить цикл по
    For i:=MainForm.MDIChildCount-1 downto 0 do
    begin
    MainForm.MDIChildren[i].BringToFront;
    // действия перед закрытием формы
    MainForm.MDIChildren[i].Free;
    end


Ответить в теме

Похожие темы

  1. Динамическое создание компонентов в MDI приложении
    от intway070 в разделе Программирование
    Ответов: 8
    Последнее сообщение: 06.07.2006, 13:38

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения