Времени мало, поэтому сделал не много. Здесь я приложил проект - там форма и класс запусай класс.
Несколько пояснений. Вот new() этого класса:
PHP код:
void new(str _formName)
{
Args arg = new Args();
FormRun formRun;
;
colCount = 0;
formName = _formName;
// Столбцы нужно удалять в том же порядке, в каком они и создавались
this.addColumn("int");
this.addColumn("int");
// ...
this.createInit(formName);
arg.name(formName);
formRun = ClassFactory.FormRunClass(arg);
formRun.init();
formRun.Run();
formRun.wait();
this.deleteColumn("int");
this.deleteColumn("int");
// ...
this.deleteInit(formName);
}
Что делает этот метод: в него передается имя формы.
Вот здесь:
PHP код:
this.addColumn("int");
в таблицу на форме добавляются столбцы переданного типа.
P.S. 1. Реализованно только для int, но это легко расширяется.
1а. Класс ищет именно таблицу с именем Table и именно в корне design. В будущем расширяемо.
2. В addColumn происходит перекрытие textChange() для добавляемого столбца.
3. Как я понимаю именно это ты имел в виду здесь :
Цитата:
Давай сделаем так (пока не знаю, какие проблемы возникнут - еще не посмотрел): пусть столбцы добавляются динамически, но добавление регулирет программист (скажем, какой-то метод вызывает).
Затем форма запускается. После закрытия формы все, что в ней насоздавали подчищаем.
За всем этим делом лучше всего наблюдать так: открыть в отдельном окне форму, развернуть ветвь ее методов и контролов в Table и запустить класс. При этом форма откроется, а в АОТ'е будет видно, что в таблице создались контролы, а в форме соответствующие обработчики событий. После закрытия формы, в АОТ'е видно, что все созданное удалилось. Поиграйся(поскролируй) Table и ты увидишь, что для каждого столбца работает свой обработчик событий.
Итог: мы напускаем класс на форму с Table, класс генерит в этом табле кучу всего, запускает форму, после ее закрытия все подчищяет за собой.
Вроде как работает, но это пугает меня - самомодифицирующийся код никогда не отличался надежностью, легкостью сопровождения и отладки
В общем посмотри проект и скажи что думаешь.