Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
14-72512
ZiLot
2003-01-06 08:46
2003.01.23
InstallShield & BDE


1-72210
ArhangeJI
2003-01-14 12:42
2003.01.23
ComboBox как избавиться от двух символов в конце текста...


1-72232
W0land
2003-01-14 14:31
2003.01.23
WinXP+Delphi5 - проблема с отладчиком


3-72068
Step3
2002-12-27 14:10
2003.01.23
Обединие таблиц


3-72101
Виталий Панасенко
2002-12-29 16:05
2003.01.23
Поля типа




   Наверх