Текущий архив: 2003.01.23;
Скачать: CL | DM;
Вниз
Взаимодействие компонентов Найти похожие ветки
← →
Валерыч (2003-01-05 03:23) [0]Уважаемые мастера. Прошу помочь разобраться с проектированием новых комопонентов (а может объектов). Задача такая:
- нужен объект / компонент / запись или что-то другое как элемент некой картинки со свойствами: номер цвета из палитры для основного цвета клетки, четыре номера цветов из палитры для границ клетки
- нужен массив таких элементов как картинка, скорее всего оформленный как компонент, потому как хочется иметь набор методов по обработке картинки
- нужет компонент, умеющий нарисовать эту картинку и воспринимающий изменения, происходящие с ней, т.е. получающий соответствующие уведомления, если я чего-то даже програмно меняю в любой точке (предполагал отталкиваться от DrawGrid). желательно, чтобы он имел свойство, ссылающееся на картинку.
Я новичок и не понимаю как правильно выбрать где использовать компоненты, а где объекты, как правильно передавать уведомления об изменении свойств точки (элемента) компоненту отрисовки.
Заранее спасибо.
← →
Валерыч (2003-01-05 07:47) [1]мастерааа...
← →
Валерыч (2003-01-08 04:18) [2]всех с прошедшими празниками. кто-нибудь уже в состоянии мыслиить?
← →
Валерыч (2003-01-09 05:45) [3]Ладно, попробую изменить вопрос.
Допустим я оформляю элемент как компонент с соответствующими свойствами, методами и событиями, среди которых есть OnChange
Затем я делаю компонент картинки, который имеет свое событие OnChange, при этом записывает в событие OnChange элемента свой обработчик, чтобы отлавливать изменения оного.
Далее я делаю компонент отображения, который должен ссылаться на компонент картинку и уметь перехватывать его OnChange. Но я хочу также оставить программеру (т.е. себе :))) возможность обрабатвыать паралельно данное событие. Значит я не имею права в компоненте отображения устанавливать обработчик OnChange картинки на свою процедуру, а должен сделать это как-то по другому. Вопрос КАК???
И еще. Для картинки как лучше выполнить хранилище элементов - динамический массив или какими-нибудь списками а ля в StringGride
← →
Думкин (2003-01-09 06:54) [4]Еще немного измени вопрос и тебе помогут.
> Для картинки как лучше выполнить хранилище элементов - динамический
> массив или какими-нибудь списками а ля в StringGride
Каких элементов - какое хранилище?
← →
Валерыч (2003-01-10 05:05) [5]Ладно, как говорится, осташиеся карты на стол. Хочу нарисовать жене небольшую прогу для вышивки крестом. Соответственно картинка - набор квадратиков, раскрашенных разными цветами из набора. Каждый такой квадратик - элемент картинки, который помимо основного цвета может быть ограничен каким-то дополнительным цветом с любой стороны (которых четыре). Картинка соответственно прямоугольная. Вот собственно и все.
← →
Думкин (2003-01-10 07:25) [6]1.Я с DrawGrid не работал - но там есть возможность отрисовки каждой клетки, поэтому вроде можно и через него.
У тебя видимо проблема в том откуда брать и где хранить инфу для отрисовки каждго квадратика?
2. Можно создать свое.
а)Создаешь класс с картинкой и нужными свойствами и чтобы реагировал на изменения - какие?
б)Создаешь класс контейнер. Элементы класса а) держать можно по разному - ты и сам прописал возможности.
С onChange проблем не должно быть, только надо пояснить про какой Change идет речь, и как он должен влиять на класс контейнер.
← →
Roma © (2003-01-10 15:46) [7]Лучше TStringGrid (TDrawGrid - его прямой предок). Все необходимые события у него есть. Информацию о ячейках (какую хочешь) можно хранить в свойстве Objects. Надо только спроектировать свой объект, описывающий отдельную ячейку...
Не надо выдумывать (и делать) велосипеды (новые компоненты) - "все уже украдено до нас"... ;)
← →
Валерыч (2003-01-13 09:16) [8]TStringGrid, конечно, очень хорошо, НО мне хотелось бы иметь возможность иметь картинку в чистом виде как компонент (объект) в программе, чтобы с ней манипулировать (изменять) без визуализации (например картинка за кадром). Т.е. компонент, который ее отображает на экране должен содержать ссылку на компонент самой картинки. Ну типа есть TStringList и TListBox.
По поводу событий на изменение: если я имею отдельный объект - картинку + компонент, который ее может отображать, то хочется иметь возможность реагировать компонентом отрисовки на изменение компонента картинки. Предположим я у картинки создаю событие OnChange, генерирующееся при любых изменениях оной. Первая мысль - компонент отображения цепляется к этому событию и реагирует. Тогда для программиста данное событие становится недоступно или потеряется связь с компонентом отображения. Т.е. картинка должна знать, отображает ли ее некий другой компонент, и, если отображает, уведомлять его при изменениях, оставляя программисту OnChange для своих нужд.
← →
Думкин (2003-01-13 09:25) [9]Надо из объекта при изменении послать сообщение об этом.
Осталось разобраться - кому и куда.
← →
KSergey © (2003-01-13 09:55) [10]Может посмотреть как это реализовано для DataSource/DBGrid и т.п.? Как-то же там реализована именно такая механика.
Страницы: 1 вся ветка
Текущий архив: 2003.01.23;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.016 c