Stringgrid

Тема в разделе "Delphi - FAQ", создана пользователем orsson, 11 дек 2005.

Статус темы:
Закрыта.
  1. orsson

    orsson Гость

    Помогите с закраской ячеек. При клике на ячейку, она должна закраситься....
     
  2. DZX

    DZX Гость

    В событии OnDrawCell :

    (Sender as TStringGrid).Canvas.Brush.Color:=clGreen;
    (Sender as TStringGrid).Canvas.FillRect(Rect);

    Ну допустим пусть будет зеленым.

    Отслеживай активную и крась ;)
     
  3. zubr

    zubr Гость

    1. Создать массив или список в котором запоминать координаты ячеек (Col, Row)
    2. В событии OnSelectCell заносить эти координаты в массив и вызывать метод Invalidate для перерисовки ячеек.
    3. В событии OnDrawCell отрисовывать нужные ячейки из массива.

    Если нужно поменять цвет фона выделенной строки то можешь воспользоваться моим компонентом. Это расширенный StringGrid, дополнительные возможности: можно менять цвета разделительных линий, шрифт фиксированных ячеек, а таже шрифт выделенной строки, цвет выделенной строки, расположение текста в ячейках (слева, справа, по центру). Компонент в присоединенном файле.
     

    Вложения:

  4. orsson

    orsson Гость

    На сколько я понял, это только выделяет ячейку черным цветом. Мне так не надо...

    Что бы стало понятее что мне надо: я делаю составлялку японских кроссвордов и при клике на ячейку (я так понимаю надо использовать OnClick) она должна закраситься в черный цвет. Причём, я должен видеть что закрасил.
     
  5. orsson

    orsson Гость

    Предидущий пост был DZX'у.
     
  6. DZX

    DZX Гость

    Ладненько, подготовлю небольшой демонстрационный кусочек по работе с StringGrid.
     
  7. mike.dld

    mike.dld Гость

    Я такое делал, но чтобы можно было не только кликать, но и перемещать мышь с зажатой клавишей.
    Если тебе нужно только нажатие, то всё довольно просто (SG = твой StringGrid):
    1. объявляем двумерный массив A (динамический, если размеры сетки заранее неизвестны) размером [0..SG.RowCount-1,0..SG.RowCount-1] с элементами типа Boolean
    2. в SG.OnMouseDown пишем код, получающий координаты ячейки под курсором мыши (например,
    Код (Text):
    pt := SG.ScreenToClient(Mouse.CursorPos);
    pt := TPoint(SG.MouseCoord(pt.X,pt.Y));
    ) и присваиваем элементу массива с полученными индексами обратное значение (
    Код (Text):
    A[pt.X,pt.Y] := not A[pt.X,pt.Y];
    ); главное - не забыть проверить, что pt.X или pt.Y равно -1 (т.е. курсор не находится с области какой-либо ячейки). Ну и, собственно, SG.Invalidate;
    3. SG.DefaultDrawing = false
    4. в SG.OnDrawCell пишем
    Код (Text):
     with (Sender as TStringGrid).Canvas do begin
     if A[ACol,ARow] = true then
      Brush.Color := clBlack
     else
      Brush.Color := clWhite;
     FillRect(Rect);
    end;
     
  8. Guest_Anton_*

    Guest_Anton_* Гость

    Как заполнить матрицу stringgrid из файла ?
     
  9. Guest

    Guest Гость

    Пож-ста отправте на asorok@mail.ru
     
  10. Guest_Anton_*

    Guest_Anton_* Гость

    на asorok@mail.ru
     
Загрузка...
Похожие Темы - Stringgrid
  1. GrabbeR
    Ответов:
    1
    Просмотров:
    1.153
  2. radivill
    Ответов:
    0
    Просмотров:
    1.278
  3. Smokey
    Ответов:
    1
    Просмотров:
    1.529
  4. aank10
    Ответов:
    3
    Просмотров:
    1.973
  5. Ягодка
    Ответов:
    1
    Просмотров:
    2.347
Статус темы:
Закрыта.

Поделиться этой страницей