Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Прочитать данные из другого дочернего окна

Delphi , Программа и Интерфейс , MDI приложения

Прочитать данные из другого дочернего окна

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

type
   TMDIChildForm = class(TForm)
     Edit1: TEdit;
   private
     { Private declarations }
     procedure ReadDataFromOtherMDIChildForm;
   end;

 var
   MDIChildForm: TMDIChildForm;

 implementation

 {$R *.DFM}

 uses
   MainForm;
   // Property FormStyle of this form is fsMDIForm 

procedure TMDIChildForm.ReadDataFromOtherMDIChildForm;
 var
   i: Integer;
   DataFromOtherForm: string;
 begin
   // Suppose you have created three different MDIChild forms of the same type, 
  // each with the following caption: "aaa", "bbb", "ccc". 
  // You are currently on form with caption "aaa" and want to read data 
  // contained on form with caption "ccc". 
  // You can find here the code, you have to use the "as" clause and 
  // properties MDIChildCount and MDIChildren: 

  // First you have to find where the form "ccc" is in memory; 
  for i := 0 to MDIForm.MDIChildCount - 1 do
   begin
     if (Pos('ccc', MDIForm.MDIChildren[i].Caption)  0) then
       Break;
   end;
   // Check to see if the form is the last on MDIChildren array and 
  // correct I variable 
  if (i = MDIChildCount) then Dec(i);
   // I variable contains the index of the form with caption 'ccc' 

  if (Pos('ccc', MDIForm.MDIChildren[i].Caption)  0) then
   begin
     // If the form with caption 'ccc' exists then you access data and show it 
    // The following line of code is very interesting, look at the "as" clause, 
    // if you have different types of MDIChild forms, you simply change 
    // the type of form after the "as" clause 
    // The data you want is contained on Edit1.Text 
    with (MDIForm.MDIChildren[I] as TMDIChildForm).Edit1 do
       DataFromOtherForm := Text;
     ShowMessage(DataFromOtherForm);
   end;
 end;

Программный код написан на языке Delphi для создания оконного приложения с использованием архитектуры Multiple Document Interface (MDI), которая позволяет иметь несколько открытыми окнами одновременно.

Основная цель этого кода - прочитать данные из другого дочернего окна MDI и отобразить их в сообщении. Работает следующим образом:

  1. Класс TMDIChildForm определен как наследник класса TForm, который является базовым классом для всех форм в Delphi.
  2. Процедура ReadDataFromOtherMDIChildForm объявлена как приватный метод внутри класса TMDIChildForm. Она будет использоваться для чтения данных из другого дочернего окна MDI.
  3. В разделе реализации процедура ReadDataFromOtherMDIChildForm реализована. Она не принимает параметров и не возвращает значения.
  4. Процедура использует цикл for для перебора всех дочерних окон MDI (то есть, всех окон, которые открыты в данный момент).
  5. Для каждого окна процедура проверяет, если заголовок формы совпадает со строкой "ccc" с помощью функции Pos, которая ищет первое вхождение указанной строки в другой строке.
  6. Если совпадение найдено, процедура выходит из цикла и устанавливает переменную i в индекс соответствующего окна.
  7. Затем процедура проверяет, если переменная i равна общему количеству дочерних окон MDI (MDIChildCount). Если это так, она уменьшает i на 1 для обеспечения корректности индекса.
  8. Используя оператор as, процедура кастует объект MDIChildren[i] в объект TMDIChildForm (предполагая, что все дочерние окна MDI типа TMDIChildForm). Это позволяет получить доступ к контроллу Edit1 на этой форме.
  9. Содержимое свойства Text контрола Edit1 сохраняется в переменной DataFromOtherForm как строка.
  10. Наконец, процедура отображает содержимое DataFromOtherForm в сообщении с помощью функции ShowMessage.

Код хорошо структурирован и легко понятен, но более эффективным и масштабируемым было бы хранение дочерних окон MDI в коллекции или списке, а не перебор всех форм каждый раз, когда данные нужно прочитать из другой формы.

В статье описывается способ чтения данных из другого дочернего окна в приложении на Delphi, используя свойство MDIChildren и оператор 'as' для доступа к элементам формы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: MDI приложения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:55:17/0.0033178329467773/0