Автор темы
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
- Статус
- Закрыто для дальнейших ответов.
Автор темы
В событии OnDrawCell :
(Sender as TStringGrid).Canvas.Brush.Color:=clGreen;
(Sender as TStringGrid).Canvas.FillRect(Rect);
Ну допустим пусть будет зеленым.
Отслеживай активную и крась
(Sender as TStringGrid).Canvas.Brush.Color:=clGreen;
(Sender as TStringGrid).Canvas.FillRect(Rect);
Ну допустим пусть будет зеленым.
Отслеживай активную и крась
1. Создать массив или список в котором запоминать координаты ячеек (Col, Row)
2. В событии OnSelectCell заносить эти координаты в массив и вызывать метод Invalidate для перерисовки ячеек.
3. В событии OnDrawCell отрисовывать нужные ячейки из массива.
Если нужно поменять цвет фона выделенной строки то можешь воспользоваться моим компонентом. Это расширенный StringGrid, дополнительные возможности: можно менять цвета разделительных линий, шрифт фиксированных ячеек, а таже шрифт выделенной строки, цвет выделенной строки, расположение текста в ячейках (слева, справа, по центру). Компонент в присоединенном файле.
2. В событии OnSelectCell заносить эти координаты в массив и вызывать метод Invalidate для перерисовки ячеек.
3. В событии OnDrawCell отрисовывать нужные ячейки из массива.
Если нужно поменять цвет фона выделенной строки то можешь воспользоваться моим компонентом. Это расширенный StringGrid, дополнительные возможности: можно менять цвета разделительных линий, шрифт фиксированных ячеек, а таже шрифт выделенной строки, цвет выделенной строки, расположение текста в ячейках (слева, справа, по центру). Компонент в присоединенном файле.
Вложения
На сколько я понял, это только выделяет ячейку черным цветом. Мне так не надо...
Что бы стало понятее что мне надо: я делаю составлялку японских кроссвордов и при клике на ячейку (я так понимаю надо использовать OnClick) она должна закраситься в черный цвет. Причём, я должен видеть что закрасил.
Что бы стало понятее что мне надо: я делаю составлялку японских кроссвордов и при клике на ячейку (я так понимаю надо использовать OnClick) она должна закраситься в черный цвет. Причём, я должен видеть что закрасил.
Я такое делал, но чтобы можно было не только кликать, но и перемещать мышь с зажатой клавишей.
Если тебе нужно только нажатие, то всё довольно просто (SG = твой StringGrid):
1. объявляем двумерный массив A (динамический, если размеры сетки заранее неизвестны) размером [0..SG.RowCount-1,0..SG.RowCount-1] с элементами типа Boolean
2. в SG.OnMouseDown пишем код, получающий координаты ячейки под курсором мыши (например,
) и присваиваем элементу массива с полученными индексами обратное значение (
); главное - не забыть проверить, что pt.X или pt.Y равно -1 (т.е. курсор не находится с области какой-либо ячейки). Ну и, собственно, SG.Invalidate;
3. SG.DefaultDrawing = false
4. в SG.OnDrawCell пишем
Если тебе нужно только нажатие, то всё довольно просто (SG = твой StringGrid):
1. объявляем двумерный массив A (динамический, если размеры сетки заранее неизвестны) размером [0..SG.RowCount-1,0..SG.RowCount-1] с элементами типа Boolean
2. в SG.OnMouseDown пишем код, получающий координаты ячейки под курсором мыши (например,
Код:
pt := SG.ScreenToClient(Mouse.CursorPos);
pt := TPoint(SG.MouseCoord(pt.X,pt.Y));
Код:
A[pt.X,pt.Y] := not A[pt.X,pt.Y];
3. SG.DefaultDrawing = false
4. в SG.OnDrawCell пишем
Код:
with (Sender as TStringGrid).Canvas do begin
if A[ACol,ARow] = true then
Brush.Color := clBlack
else
Brush.Color := clWhite;
FillRect(Rect);
end;
- Статус
- Закрыто для дальнейших ответов.
Ещё по теме
4
Поделиться: