Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

Подскажите Grid?   Найти похожие ветки 

 
jjiura   (2003-07-09 23:22) [0]

Нужна сетка,аналогичная stringGrid,но чтобы в ней можно было выделять другим цветом ячейки и цвет шрифта.
Можно ,конечно использовать и StringGrid но данный компонент неккоректно срабатывает с закраской,если начать пользоваться в нем встроенными scroolbar-ами (когда вся сетка сразу не помещается).Подскажите пожалуйста новый grid или что я делаю не верно.Если можно вышлите мне на ящик jiura@rambler.ru -а то программа валится!


 
Makhanev A.S. ©   (2003-07-10 00:04) [1]

На torry.net куча всего есть.
А можно про "некорректность" поподробнее?
Исходники поглядеть бы...


 
jjiura   (2003-07-10 00:28) [2]

StringGrid-это стандартный компонент Delphi ( во всяком случае 6 и 7 точно)-находится на вкладке Additional.Я пробовал закрашивать в ней ячейку через OnDrawCell.Пусть таблица имеет 100 строк и 100 колонок и через этот метод я закрашиваю 1 ячейку,тогда появяться ползунки таблицы.Если нажать на любой из них,то таблица переместиться и закрашенной станет уже неккоторая область.Вот в этом проблема.
Я делал по алгоритму с сайта исходники.ру:

1. StringGrid
=============
Для раскрашивания будем использовать событие "OnDrawCell". Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

Const //сдесь определяем Ваш цвет. Так же можно использовать
//цвета по умолчанию.
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);

begin

//Если ячейка получает фокус, то нам надо закрасить её другими цветами
if (gdFocused in State) then begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным

if ACol = 2 //Вторая колонка будет зелёной , другие - ячейки красными
then StringGrid1.Canvas.Brush.color := clPaleGreen
else StringGrid1.canvas.brush.Color := clPaleRed;

//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет.

If (ACol > 0) and (ARow>0) then
begin
//Закрашиваем бэкграунд
StringGrid1.canvas.fillRect(Rect);

//Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..
StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;



Если Вы захотите чтобы цвет ячеек менялся в зависимости от значения в них, то можно заменить 3 линии (if Acol = 2 ......) на что-нибуть вроде этого

if StringGrid1.Cells[ACol,ARow] = "highlight it"
then StringGrid1.Canvas.Brush.color := clPalered
else StringGrid1.canvas.brush.Color := clwhite;


 
Calm ©   (2003-07-10 09:10) [3]


> тогда появяться ползунки таблицы.Если нажать на любой из
> них,то таблица переместиться и закрашенной станет уже неккоторая
> область.Вот в этом проблема.

Неправильно написан обработчик OnDrawCell. Уверяю тебя, причина в этом.


 
Starkom ©   (2003-07-10 09:14) [4]

2 Юра: ты свой код OnDrawCell приведи. Не может там ничего глючить.


 
Makhanev A.S. ©   (2003-07-10 13:06) [5]


> Пусть таблица имеет 100 строк и 100 колонок и через этот
> метод я закрашиваю 1 ячейку,тогда появяться ползунки таблицы.Если
> нажать на любой из них,то таблица переместиться и закрашенной
> станет уже неккоторая область.Вот в этом проблема.

А можно другими словами, я что-то Вас совсем не понял.



Страницы: 1 вся ветка

Текущий архив: 2003.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
14-78137
Nikkk
2003-07-08 23:07
2003.07.24
Домашняя cеть в WinME


1-77924
Starkom
2003-07-10 09:19
2003.07.24
Хочу сделать хоткеи в Dll ке


14-78147
OldFrits
2003-07-07 16:30
2003.07.24
Технология доступа к базе данных


14-78094
lex7
2003-07-08 09:28
2003.07.24
C & Delphi


1-77947
Micke
2003-07-10 18:37
2003.07.24
Запуск нескольких копий приложения средствами Delphi