21.02.2003, 11:00 | #1 |
Moderator
|
Гибрид FormTableControl и FormDataSource
Цитата:
Изначально опубликованно Maxim Gorbunov
Почему бы не написать класс, который бы цеплялся к FormDataSource и FormTableControl (ну, соответственно во всех обработчиках событий вызывать методы класса), а в нем уже управлять заполнением таблицы? При высоких (здесь не спорю) трудозатратах на программирование получаем очевидное преимущество в виде достаточно гибкого (по крайней мере по сравнению с Grid) в настройке контрола для отображения данных. Сразу говорю, что сам такое делать не буду, ибо времени нет Идею отдаю бесплатно (да и не нова она). 1. Отображать содержимое FormDataSource 2. Отображать ResultSet Нас интересует первый пункт или второй ? Или оба сразу ? Тогда это наверное должны быть две разных задачи. Рассмотим оба варианта: 1. FormTableControl, отображающий содержимое FormDataSource. Какие мы преимущества получаем по сравнению с использованием стандартного грида ? Возможность очень гибкого обращения с каждой ячейкой. Вот пожалуй и все. Или я что-то не улавливаю ? Хотя, как я понял речь, речь шла именно об этом варианте. 2. FormTableControl, умеющий ResultSet, как результат выполнения Statement. В этом случае мы получаем возможность сделать то, что вообще не реализованно в Аксапте, а именно сделать ЛЮБОЙ запрос на SQL Server (с какими угодно наворотами, не поддерживаемыми Аксаптой) и полученный результат отобразить виде таблицы. Итак, сначала давай решим, какую из этих задач мы решаем. Вопрос второй - концептуальный - как все это реализовать. Если бы я программировал на обычном языке программирования, я бы сделал следующее: создал наследника от FormTableControl, добавил бы ему свойство типа FormDataSource и переписал бы методы отвечающие за его отображение и редактирование. Но Аксапта не обычный язык рограммирования, поэтому этот способ здеь не пойдет. Если наследника FormTableControl я создать еще могу: class dem_Table extends FormTableControl { } то поместить его как компонент на форму практически не возможно. Или кто-то знает такой способ ? Значит надо делать как-то по другому. Например, это должен быть отдельный класс, имеющий свойства типа FormTableControl и FormDataSource. Во всех обработчиках событий FormTableControl будут вызываться методы этого класса, которые, в свою очередь будут обращаться к FormDataSource. Не совсем изящная конструкция, но более удачного решения я пока не вижу. Может есть еще варианты ? |
|