Текущий архив: 2005.02.06;
Скачать: CL | DM;
Вниз
Опять, всем надоевший, StringGrid... Найти похожие ветки
← →
Antonn © (2005-01-25 15:13) [0]Здравствуйте, коллеги. Такая вот незадача(скорее идиотизм). Имеем 2 сабжа, у которых есть фиксированая строка. На одном можно выделить(поставить курсор) фиксированую ячейку, на другом нельзя. Свойства одинаковы. Как сделать недоступным для выделения фиксированые ячейки?
← →
alless (2005-01-25 15:25) [1]Kulba 2000:
Вам необходимо создать обработчик события OnDrawCell. Это легче чем вы думаете. Вот образец кода, который сделает вас счастливым:
procedure TForm.sgrDrawCells(Sender: TObject; Col, Row: Longint; Rect: TRect;
State: TGridDrawState);
var
ACol: longint absolute Col;
ARow: longint absolute Row;
Buf: array[byte] of char;
begin
if State = gdFixed then
Exit;
with sgrGrid do begin
Canvas.Font := Font;
Canvas.Font.Color := clWindowText;
Canvas.Brush.Color := clWindow;
Canvas.FillRect(Rect);
StrPCopy(Buf, Cells[ACol,ARow]);
DrawText(Canvas.Handle, Buf, -1, Rect,
DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_LEFT);
end;
end;
← →
alless (2005-01-25 15:25) [2]Kuliba 2000:
Вам необходимо создать обработчик события OnDrawCell. Это легче чем вы думаете. Вот образец кода, который сделает вас счастливым:
procedure TForm.sgrDrawCells(Sender: TObject; Col, Row: Longint; Rect: TRect;
State: TGridDrawState);
var
ACol: longint absolute Col;
ARow: longint absolute Row;
Buf: array[byte] of char;
begin
if State = gdFixed then
Exit;
with sgrGrid do begin
Canvas.Font := Font;
Canvas.Font.Color := clWindowText;
Canvas.Brush.Color := clWindow;
Canvas.FillRect(Rect);
StrPCopy(Buf, Cells[ACol,ARow]);
DrawText(Canvas.Handle, Buf, -1, Rect,
DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_LEFT);
end;
end;
← →
begin...end © (2005-01-25 15:32) [3]> Antonn © (25.01.05 15:13)
> Имеем 2 сабжа, у которых есть фиксированая строка.
Что есть "фиксированная строка"?
> [1] alless (25.01.05 15:25)
> ACol: longint absolute Col;
> ARow: longint absolute Row;
> Buf: array[byte] of char;
> StrPCopy(Buf, Cells[ACol,ARow]);
Боже ж ты мой...
← →
Antonn © (2005-01-25 15:43) [4]alless (25.01.05 15:25) [1]
> OnDrawCell.
Ну это мы знаем. Раскрашиваем, выравниваем. У меня в другом проблема. Фиксирования строка - FixedRows=1, это шапка таблици. На одном StringGride эта шапка при прокрутке всегда видна и курсором на нее нельзя "тыкнуть"(нет выделения, как будто не на компоненте щелкнули), на другом StringGride фиксирования срока ведет себя как обычная(можно курсор поставить, при скроллинге перемещается). Какое св-во отвечает за "аппатичную" фиксированую строку? Теряюсь в догадках, в чем причина, уже перепробывал все что можно.
← →
Neznaika © (2005-01-25 15:48) [5]Не помню что нужно изменить...
Но вот в инспектор объектов я думаю надо точно повнимательней посмотреть...
← →
Separator © (2005-01-25 15:51) [6]Удали первый Grid и скопируй на его место второй, поменяв название и подключив все события от первого
← →
alless (2005-01-25 15:53) [7]Удали СтингГрид который тебе не нужен и поставь новый с таким именем
← →
Antonn © (2005-01-25 16:13) [8]В общем, почти разрешилась проблема. Оба компонента создавались копипастом от третьего. Но у одного из них(который с проблеммой) во время работы удалялись все строки, кроме fixed(шапки). После этого, ячейки шапки, хоть и были со свойством fixed, но активно притворялись "обычными" ячейками. В чем замут, так и не понятно. И как восстановить шапку тоже не ясно.
← →
ЮЮ © (2005-01-26 04:46) [9]>во время работы удалялись все строки, кроме fixed(шапки). После этого, ячейки шапки, хоть и были со свойством fixed, но активно притворялись "обычными" ячейками. В чем замут, так и не понятно.
После
StringGrid1.RowCount := 1;
StringGrid1.FixedRows обнулится (StringGrid1.FixedRows должно быть строго меньше StringGrid1.RowCount) и его надо будет восстановить после "добавления" необходимого количества строк.
Страницы: 1 вся ветка
Текущий архив: 2005.02.06;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.03 c