Stringgrid красим ячейку текущей строки

Тема в разделе "Delphi - Компоненты", создана пользователем HarDir, 22 май 2010.

  1. HarDir

    HarDir Гость

    Как закрасить первую ячейку текущей строки? Т.е. необходимо реализовать нечто подобное как в MS Excel. Т.е. я перемещаюсь по полю с пом. мыши или стрелок а в этот момент слева от текущей ячейки самая первая ячейка меняет свой цвет. Как сменить цвет текущей ячейки я знаю,

    Код (Text):
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
    begin
    if (gdFocused in State) then
    begin
    StringGrid1.Canvas.Brush.Color := clBlack;
    StringGrid1.Canvas.Font.Color := clWhite;
    end
    end;
    а вот как это сделать с любой другой?

    [​IMG]
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    красит в синий цвет
    Код (Text):
    procedure TForm3.Button1Click(Sender: TObject);
    begin
    with stringgrid1 do
    begin
    Canvas.Brush.Color:=clblue;

    Canvas.FillRect(bounds(0,Selection.Top*(RowHeights[Selection.Top]+1),
    ColWidths[Selection.Top],RowHeights[Selection.Top]+1));

    Canvas.FillRect(bounds(selection.Left*(ColWidths[Selection.Top]+1),
    0,ColWidths[Selection.Top],RowHeights[Selection.Top]+1));
    end;
    end;
     
  3. HarDir

    HarDir Гость

    Dock1100 - нет, не то. Квадрат зарисовывает всё полностью, не исчезает после перехода на другую строку, и не рисует ниже, если строк около 100.
    Может кто знает, как сделать хотя бы выделение текущей строки путём изменения шрифта в текущей строке на жирный. мне и такой вариант прокатит. За наградой дело не встанет, я не сильно богат, но 1 WMZ за рабочий вариант кода гарантирую.
    Ещё раз перефразирую задачу:
    Имеется поле размером 50 на 200 клеток. Первый столбец содержит нумерацию, второй ФИО, а далее служ. информация. Если юзер находится, скажем в конце текущей строки, то ему довольно сложно соорентироваться кого он щас редактирует. Нужно как-то выделить редактируемую строку, чтобы пользователь, проследив глазами до второй колонки, смог понять, кого он сейчас редактирует.
    Для справки:
    Первые 3 колонки и Первые две строки фиксированы. Поле содержит маленькие клетки.
     
  4. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Что код доработать сложно?

    Добавлено:
    Код (Text):
    procedure TForm3.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    stringgrid1.Repaint;
    with stringgrid1 do
    begin
    Canvas.Brush.Color:=rgb(230,230,255);

    Canvas.FillRect(bounds(0,Selection.Top*(RowHeights[Selection.Top]+1),
    ColWidths[Selection.Top],RowHeights[Selection.Top]+1));
    canvas.TextOut(0,Selection.Top*(RowHeights[Selection.Top]+1),Cells[0,Selection.Top]);

    Canvas.FillRect(bounds(selection.Left*(ColWidths[Selection.Top]+1),
    0,ColWidths[Selection.Top],RowHeights[Selection.Top]+1));
    canvas.TextOut(selection.Left*(ColWidths[Selection.Top]+1),0,Cells[selection.Left,0]);
    end;
    end;
     
  5. HarDir

    HarDir Гость

    Короче сам придумал, Dock1100 навёл на некоторую идею, вроде прокатило:

    Код (Text):
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
    begin
    if (((Acol=0)and(Mrow=Arow))or(Acol=Mcol))and((Arow=Mrow)or((Arow=0)and(MCol=Acol))) then
    begin
    StringGrid1.Canvas.Brush.Color := clSkyBlue;
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[ACol, ARow]);
    end;
    end;
    Mcol и Mrow берутся от сюда:
    Код (Text):
    procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
    ARow: Integer; var CanSelect: Boolean);
    begin
    Mcol:=Acol;
    Mrow:=Arow;
    form1.StringGrid1.Repaint;
    end;
    Немного тормозит при перепрорисовке, но на пока прокатит.
     
Загрузка...
Похожие Темы - Stringgrid красим ячейку
  1. GrabbeR
    Ответов:
    1
    Просмотров:
    1.145
  2. radivill
    Ответов:
    0
    Просмотров:
    1.269
  3. Smokey
    Ответов:
    1
    Просмотров:
    1.529
  4. aank10
    Ответов:
    3
    Просмотров:
    1.969
  5. Ягодка
    Ответов:
    1
    Просмотров:
    2.338

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