![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Гость_Михаил |
|
|||
|
Unregistered |
Есть StringGrid размером 20х20. На форме видно 10х10. Рисую кусочки схемы в каждой ячейку (Canvas.MoveTj и LineTo). НО!!!
при прокрутку Грида нарисованное стирается. ВОПРОС: Как сделать, чтобы нарисованное изображение оставалось при прокрутке? Размеры ячеек, их количество менять НЕЛЬЗЯ. |
|||
|
||||
| Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 7 Всего: 12 |
Михаил, а вы где рисуете? Рисуйте в обработчике события OnDrawCell
--------------------
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
|
|||
|
||||
| Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 7 Всего: 12 |
а вот и пример, только, конечно про загрузку картинки в обработчике Фокс пошутил ;)
--------------------
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
не-е-е-е... картинка не пойдёт. Проясняю ситуацию: StringGrid должен представлять собой большую принципиальную электросхему, собираемую их "кирпичиков" - отдельных элементов, которые выбираются из меню и ставятся в определённую ячейку. Так вот, как только я начинаю её (схему, Грид) прокручивать, то, что было нарисовано уходит за край, а при обратной прокрутке стирается. А она нужна мне ЦЕЛИКОМ!!!! Ох! |
|||
|
||||
| Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 7 Всего: 12 |
не, не понятно!
Фоксик тебе пример привел, как рисовать в одной ячейки и чтобы оно не стиралось! так смотри что у тебя в какой ячейки и рисуй свои "кирпичики"! Все верно! --------------------
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Я же писал в первом сообщении-вопросе: я рисую LineTo, Ellipse и MoveTo !
а ячкйка выбирается (становится активной) щелчком мышки, по которому в ней И ДОЛЖЕН ПОЯВИТЬСЯ ФРАГМЕНТ СХЕМЫ. |
|||
|
||||
| ningen |
|
|||
|
Unregistered |
ты должен хранить в ячейке (например, в массиве Objects,
или в самом тексте Cells) информацию о том, какой элемент схемы в какой ячейке рисуется, и использовать эту информацию при рисовании ячейки. procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var bmpIdx: Integer; bmp: TBitmap; begin bmpIdx := (Sender as TStringGrid).Objects[ACol, ARow]; bmp := МассивЭлементовСхемыСозданныйЗаранее[bmpIdx]; (Sender as TStringGrid).Canvas.Draw(Rect.X, Rect.Y, bmp); end; |
|||
|
||||
| Александра |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.2.2005 Где: Москва Репутация: 7 Всего: 12 |
Какая разница как вы рисуете, вам просто НУЖНО рисовать в этом обработчике события и все!!!
--------------------
|
|||
|
||||
| ningen |
|
|||
|
Unregistered |
если рисуешь LineTo и тп,
сделай абстрактный объект TElem = class public procedure Draw(Canvas: TCanvas; Rect: TRect); virtual; abstract; end; от него напиши кучу наследников для разных элементов схемы. При клике на ячейку заноси в (Sender as TStringGrid).Objects[ACol, ARow] нужный объект (создай или возьми из пула), а при рисовании ячейки дай ему себя нарисовать:
Ну потом при закрытии не забудь уничтожить эти объекты |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |