Форум — Ответы ( К темам )
? | Новичок: TDrawGrid (21-11-2002 16:43:19) |
Привет ребята! Помогите пожалуйста новичку! Поставил CBuilfer, начал изучать его, до этого пользовался Borland C 3 версии. Захотел сделать несложный редактор карты для своей аркадки. Посмотрел , какие там существуют компоненты — для меня очень полезным оказался TDrawGrid. Он как раз позволяет расставлять спрайтики одинаковго размера. Почитал HELP — вообще не понял как с ним работать. Расскажите пожалуйста: как его создать правильно. как поместить в ячейку картинку или текст и получить оттуда Спасибо всем большое, кто поможет мне. | |
Владимир (21-11-2002 20:09:28) | |
Итак, начинаем читать help к Builder, но поскольку он тьфу...сволочь...английский, запускаем пиратский переводчик Promt XT, немного редактируем и вот что приблизительно получаем: TDrawGrid — таблица рисунков Используется для отображения в строках и столбцах нетекстовых данных. TDrawGrid отображает произвольные данные в табличном формате. Напишите OnDrawCell обработчик, чтобы заполнить ячейки сетки. >Напишите OnDrawCell обработчик, чтобы рисовать содержание всех ячеек в сетке. Рисуйте в ячейке, используя методы свойства Canvas. Параметр Rect указывает местоположение ячейки на холсте.Col и Row указывают столбец и индексы строки ячейки, которая должна быть перерисована. Параметр State указывает, имеет ли ячейка фокус ввода, выбрана ли ячейка, и является ли ячейка фиксированной. Если OnDrawCell обработчик не назначен, все ячейки в draw grid будут казаться пустыми. Если DefaultDrawing свойство — true, draw grid paints цвет фона ячейки перед OnDrawCell событием, и рисует прямоугольник вокруг выбранной ячейки после того, как OnDrawCell обработчик заканчивает рисовать содержание ячейки. Если DefaultDrawing свойство — false, OnDrawCell обработчик должен красить фон ячейки и обеспечивать всю визуальную индикацию относительно выбора и фокуса.. CellRect метод возвращает координаты экрана указанной ячейки, в то время как MouseToCell метод возвращает столбец и строку ячейки в указанных аппаратных координатах устройства. Свойство Selection указывает границы в настоящее время выбранных ячеек. TopRow свойство определяет, какая строка является в настоящее время наверху сетки. LeftCol свойство определяет первый видимый столбец слева. VisibleColCount и VisibleRowCount — номер столбцов и строк, видимых в сетке. Вы можете изменить ширину или высоту столбца или строки с ColWidths и RowHeights свойствами. Установите ширину линий координатной сетки с GridLineWidth свойством. Добавьте полосы прокрутки к сетке со свойством ScrollBars. Вы можете выбрать зафиксировать или нет прокрутку столбцов и строк с FixedCols и FixedRows свойствами. Установить цвет на зафиксированные столбцы и строки можно FixedColor свойством. Options, DefaultColWidth, и DefaultRowHeight свойства также затрагивают вид и поведение сетки. Если ячейки сетки содержат текстовые строки, лучше использовать TStringGrid. Если сетка отображает значения полей DataSet, используйте лучше TDBGrid. Смотрим прилагающийся пример: Следующий код использует bitmaps в image list component , чтобы рисовать содержание каждой ячейки в draw grid. It draws a focus rectangle around the cell that has focus void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, long Col, long Row, TRect &Rect, TGridDrawState State) { long index = Row * DrawGrid1->ColCount + Col; DrawGrid1->Canvas->Brush->Color = clBackground; DrawGrid1->Canvas->FillRect(Rect); ImageList1->Draw(DrawGrid1->Canvas,Rect.Left,Rect.Top,index); if (State.Contains(gdFocused)) DrawGrid1->Canvas->DrawFocusRect(Rect); } Кроме того, в библиотеке компонентов RXLib есть компонента TRxDrawGrid там к ней есть и русский help: Компонента TRxDrawGrid, являясь наследником TDrawGrid, наследует все свойства и методы этой компоненты, и имеет некоторые дополнительные возможности. Так, при редактировании текста в строке редактирования ячейки таблицы, событие OnSetEditText вызывается не при каждом изменении содержимого строки ввода, а только при выходе из режима редактирования. Во время заполнения текста в строке редактирования вызываются события OnAcceptEditKey и OnEditChange, позволяющие разрешить или запретить ввод определенных символов в строку редактирования. В 32-разрядной реализации компоненты Вы можете указать стиль строки редактирования для каждой ячейки (например, задав выпадающий список для редактора или определив событие на нажатие кнопки справа от строки редактора) с помощью события OnGetEditStyle. Кроме того, для доступа к строке редактирования в ячейке таблицы свойство InplaceEditor вынесено в секцию public, и имеется ряд дополнительных полезных событий. Компонента имеет дополнительные методы DrawStr, DrawMultiline, DrawPicture и DrawMasked для рисования в ячейках таблицы (grid) текста, картинок и "прозрачных" битовых изображений. и т.д. — русский help к RxLib здесь | |
Владимир (21-11-2002 21:34:18) | |
//--------------------------------------------------------------------------- // DrawGrid — от него произошел компонент StringGrid, // обладающий большими возможностями ! // компонент DrawGrid имеет канву Canvas, на которой различными методами // можно размещать изображения, в тч есть метод CellRect, который // возвращает область канвы, отведенную под заданную ячейку, он определен так // Windows::TRect __fastcall CellRect(int ACol, int ARow); в котором // ACol, ARow — индексы столбца и строки, начинающиеся с 0, на пересечении // которых расположена ячейка, те эта функция возвращпет область канвы, на // которой можно рисмовать изображение // поместить изображение можно например, так: void __fastcall TForm1::BitBtn1Click(TObject *Sender) { TImage* BitMap = new TImage(this); BitMap->Picture->LoadFromFile("c:\img.bmp"); DrawGrid1->Canvas->CopyRect(DrawGrid1->CellRect(2,3), BitMap->Canvas,Rect(0,0,BitMap->Height, BitMap->Width)); delete BitMap; } //--------------------------------------------------------------------------- // здесь мы из файла img.bmp считываем изображение и копируем его методом // CopyRect в ячейку (2,3) таблицы DrawGrid1 А вообще — купите книгу Архангельского А.Я. по C++Builder 5 или 6, там очень просто и ясно все изложено про очень многие компоненты, или купите у него Help на русском языке, тоже очень удобно. |