Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2008, 15:22   #1
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию Проблема с открытым массивом Edit'ов

На форме (D6) лежит панель, на которую положено много DBEdit'ов (больше 100).
Идея в том, чтобы всем окошкам присвоить определенную (единую) процедуру при переходе к следующему Edit'у.
При активации формы выполняется код:

Код:
  var 
     ConCm : TControl; 
     CnArr : Array of TLMDDBEdit; 
..........................................    
   CmCount := LMDSimplePanel1.ControlCount; 
   SetLength(CnArr,1); 
   iReal := 0; 
   For iCm := 0 to CmCount - 1 do begin 
      ConCm := LMDSimplePanel1.Controls[iCm]; 
      If (ConCm is TLMDDBEdit) then begin 
         CnArr[iReal] := (ConCm as TLMDDBEdit); 
         (CnArr[iReal] as TLMDDBEdit).OnExit := LMDDBEdit64.OnExit; 
         Inc(iReal); 
         SetLength(CnArr,iReal); 
         end; 
      end;
В массиве CnArr должны лежать все Edit'ы, и только они.

Но, - на самом деле после того, как форма активировась, только первый элемент массива (номер 0) содержит букет свойтв, соответствующих первому окну DBEdit! Остальные CnArr равны просто nil.
Почему?!
Tihon вне форума Ответить с цитированием
Старый 18.07.2008, 15:31   #2
White_angel
 
Регистрация: 15.07.2008
Сообщений: 7
По умолчанию

а зачем использовать много едитов если можно использовать таблицу StringGrid там можно вводить данные и считывать и не надо дохрена едитов и в масив лехче даные заносить.
White_angel вне форума Ответить с цитированием
Старый 18.07.2008, 15:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тут :
Цитата:
CnArr[iReal] := (ConCm as TLMDDBEdit);
(CnArr[iReal] as TLMDDBEdit).OnExit := LMDDBEdit64.OnExit;
переприводить типы не обязательно достаточно просто:
Код:
 CnArr[iReal] := ConCm;    
       CnArr[iReal].OnExit := LMDDBEdit64.OnExit;
А вообще пошагам пройдись, и увидиш где баг.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2008, 16:38   #4
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию

Цитата:
Сообщение от White_angel Посмотреть сообщение
а зачем использовать много едитов если можно использовать таблицу StringGrid там можно вводить данные и считывать и не надо дохрена едитов и в масив лехче даные заносить.
Видишь ли, это окно кадрового учета. StringGrid не подходит принципиально. Кадровичка в окошки вводит... Кроме едитов - ничего не подходит.
Tihon вне форума Ответить с цитированием
Старый 18.07.2008, 16:40   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Tihon
Стринггрид тоже можно раскрасить как Edit, просто возни с ним меньше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2008, 16:42   #6
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну тут :
переприводить типы не обязательно достаточно просто:
Код:
 CnArr[iReal] := ConCm;    
       CnArr[iReal].OnExit := LMDDBEdit64.OnExit;
Ты не заметил:
Код:
  var 
     ConCm : TControl; 
     CnArr : Array of TLMDDBEdit;
Они разных типов. Без переприведения не обойтись. На форме/на панели есть и Label's, и StatusBar, и прочие типы... Перебирать их можно только скопом, как контролы. А вот отфильтровав Edit'ы - можно с ними разговаривать.
Tihon вне форума Ответить с цитированием
Старый 18.07.2008, 17:07   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ты не заметил
Заметил, щаз Делфа не под рукой, но помоему должна прохавать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с массивом kommunist Паскаль, Turbo Pascal, PascalABC.NET 7 27.05.2010 19:00
проблема с массивом kommunist Помощь студентам 6 14.11.2007 18:36
проблема с динамическим массивом kommunist Помощь студентам 6 11.11.2007 21:18
проблема с массивом Lonix Общие вопросы Delphi 2 06.11.2007 23:56
проблема с массивом kommunist Помощь студентам 4 31.10.2007 17:11