Главная страница
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.013 c
1-77868
AndrewVolkov
2003-07-13 18:28
2003.07.24
Com port - ReadFile???


1-77944
roadstar
2003-07-10 18:11
2003.07.24
Расшарить папку


3-77773
mihmax
2003-06-19 16:00
2003.07.24
BDE не видит MS SQL


7-78169
Xeon
2003-05-16 07:43
2003.07.24
Каталоги (папки, директории)


7-78161
Deus
2003-05-15 14:26
2003.07.24
Wipe файла...