Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизПодскажите 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c