По существу вопроса: есть некая форма, содержащая в себе сегмент для источника данных и приемника данных. Оба сегмента устроены одинково: для каждого в объекте Frame находятся два RefEdit для выбора требуетмых диапазонов, CommandButton для открытия файла с данными, ComboBox для выбора книги, в которой RefEdit будут выбирать диапазоны. При инициализации формы имена открытых рабочих книг попадают в ComboBox'ы с тем, чтобы пользователь мог выбрать себе любую книгу, после чего он с помощью RefEdit отбирает нужные диапазоны; если открытых книг пользователю не хватило, то можно их окрыть, для чего и есть в каждом Frame соответствующие кнопки. При активированнии RefEdit автоматически должна активироваться книга, выбранная соответствующим ComboBox (вообще это сделано через Frame_Enter(), фокус передается на ComboBox).
Проблема состоит в том, что вся эта схема работает первые "десять кликов". Попробуйте беспорядочно и хаотично (проявите терпение) открывать файлы, выбирать диапазоны и т.п. Со временем Excel банально повиснет, а файлы перестанут открываться (пробовал на разных машинах, где-то держится дольше, где-то эффекты негативные быстрее проявляются).
Вопрос: почему? Что с кодом не так? В какую сторону копать? Я предполагаю, что с RefEdit'ами (это единственный динамический элемент) что-то не так, что-то вроде Stack Overflow, Buffer Overflow. Пока вижу такое решение: каким-то образом отследить либо заданное количество кликов по форме, либо заданное время, скопировать все значения всех элементов в форму-близнеца, форму-источник уничтожить, а потом - наоборот.
Мне понятно, что пользователь не будет просто так кликать, что выберет себе нужное и запустит расчеты, но червячок точит: а вдруг "запаса прочности" хватит только на 5 кликов??? И Марья Ивановна, увидев обрушение Excel, схватит себе несварение? Из-за меня...
Пробовал на Excel 2010, Win 7 64 бита; Excel 2010, Win 7 32 бита.
Заранее спасибо.