link7344 link7345 link7346 link7347 link7348 link7349 link7350 link7351 link7352 link7353 link7354 link7355 link7356 link7357 link7358 link7359 link7360 link7361 link7362 link7363 link7364 link7365 link7366 link7367 link7368 link7369 link7370 link7371 link7372 link7373 link7374 link7375 link7376 link7377 link7378 link7379 link7380 link7381 link7382 link7383 link7384 link7385 link7386 link7387 link7388 link7389 link7390 link7391 link7392 link7393 link7394 link7395 link7396 link7397 link7398 link7399 link7400 link7401 link7402 link7403 link7404 link7405 link7406 link7407 link7408 link7409 link7410 link7411 link7412 link7413 link7414 link7415 link7416 link7417 link7418 link7419 link7420 link7421 link7422 link7423 link7424 link7425 link7426 link7427 link7428 link7429 link7430 link7431 link7432 link7433 link7434 link7435 link7436 link7437 link7438 link7439 link7440 link7441 link7442 link7443 link7444 link7445 link7446 link7447 link7448 link7449 link7450 link7451 link7452 link7453 link7454 link7455 link7456 link7457 link7458 link7459 link7460 link7461 link7462 link7463 link7464 link7465 link7466 link7467 link7468 link7469 link7470 link7471 link7472 link7473 link7474 link7475 link7476 link7477 link7478 link7479 link7480 link7481 link7482 link7483 link7484 link7485 link7486 link7487

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