Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять, всем надоевший, StringGrid...


Antonn ©   (2005-01-25 15:13:00) 

Здравствуйте, коллеги. Такая вот незадача(скорее идиотизм). Имеем 2 сабжа, у которых есть фиксированая строка. На одном можно выделить(поставить курсор) фиксированую ячейку, на другом нельзя. Свойства одинаковы. Как сделать недоступным для выделения фиксированые ячейки?


ЮЮ   (2005-01-26 04:46:00) [1]

>во время работы удалялись все строки, кроме fixed(шапки). После этого, ячейки шапки, хоть и были со свойством fixed, но активно притворялись "обычными" ячейками. В чем замут, так и не понятно.

После
 StringGrid1.RowCount := 1;
StringGrid1.FixedRows обнулится (StringGrid1.FixedRows должно быть строго меньше StringGrid1.RowCount) и его надо будет восстановить после "добавления" необходимого количества строк.


Antonn   (2005-01-25 16:13:00) [2]

В общем, почти разрешилась проблема. Оба компонента создавались копипастом от третьего. Но у одного из них(который с проблеммой) во время работы удалялись все строки, кроме fixed(шапки). После этого, ячейки шапки, хоть и были со свойством fixed, но активно притворялись "обычными" ячейками. В чем замут, так и не понятно. И как восстановить шапку тоже не ясно.


alless   (2005-01-25 15:53:00) [3]

Удали СтингГрид который тебе не нужен и поставь новый с таким именем


Separator   (2005-01-25 15:51:00) [4]

Удали первый Grid и скопируй на его место второй, поменяв название и подключив все события от первого


Neznaika   (2005-01-25 15:48:00) [5]

Не помню что нужно изменить...
Но вот в инспектор объектов я думаю надо точно повнимательней посмотреть...


Antonn   (2005-01-25 15:43:00) [6]

alless   (25.01.05 15:25) [1]

> OnDrawCell.

Ну это мы знаем. Раскрашиваем, выравниваем. У меня в другом проблема. Фиксирования строка - FixedRows=1, это шапка таблици. На одном StringGride эта шапка при прокрутке всегда видна и курсором на нее нельзя "тыкнуть"(нет выделения, как будто не на компоненте щелкнули), на другом StringGride фиксирования срока ведет себя как обычная(можно курсор поставить, при скроллинге перемещается). Какое св-во отвечает за "аппатичную" фиксированую строку? Теряюсь в догадках, в чем причина, уже перепробывал все что можно.


begin...end   (2005-01-25 15:32:00) [7]

> 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]);

Боже ж ты мой...


alless   (2005-01-25 15:25:00) [8]

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:00) [9]

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо