link6958 link6959 link6960 link6961 link6962 link6963 link6964 link6965 link6966 link6967 link6968 link6969 link6970 link6971 link6972 link6973 link6974 link6975 link6976 link6977 link6978 link6979 link6980 link6981 link6982 link6983 link6984 link6985 link6986 link6987 link6988 link6989 link6990 link6991 link6992 link6993 link6994 link6995 link6996 link6997 link6998 link6999 link7000 link7001 link7002 link7003 link7004 link7005 link7006 link7007 link7008 link7009 link7010 link7011 link7012 link7013 link7014 link7015 link7016 link7017 link7018 link7019 link7020 link7021 link7022 link7023 link7024 link7025 link7026 link7027 link7028 link7029 link7030 link7031 link7032 link7033 link7034 link7035 link7036 link7037 link7038 link7039 link7040 link7041 link7042 link7043 link7044 link7045 link7046 link7047 link7048 link7049 link7050 link7051 link7052 link7053 link7054 link7055 link7056 link7057 link7058 link7059 link7060 link7061 link7062 link7063 link7064 link7065 link7066 link7067 link7068 link7069 link7070 link7071 link7072 link7073 link7074 link7075 link7076 link7077 link7078 link7079 link7080 link7081 link7082 link7083 link7084 link7085 link7086 link7087 link7088 link7089 link7090 link7091 link7092 link7093 link7094 link7095 link7096 link7097 link7098 link7099

Форум — Ответы     (  К темам )
 ?  Новичок: 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 на русском языке, тоже очень удобно.