Мастера, посоветуйте какой-нибуть Grid-компонент для Delphi (не для БД, а простой), который бы мог хранить в своих ячейках строки и предоставлял удобный интерфейс для доступа и разрисовки каждой ячейки.
Здравствуйте, solos, Вы писали:
S>Мастера, посоветуйте какой-нибуть Grid-компонент для Delphi (не для БД, а простой), который бы мог хранить в своих ячейках строки и предоставлял удобный интерфейс для доступа и разрисовки каждой ячейки.
TDrawGrid/TStringGrid
S>Или как это сделать на стандартных компонентах?
Свойства Canvas/Font у них есть, события OnDrawCell тоже есть.
Метод DrawCell тоже есть.
Ну и чтобы совсем через край, вот кусок кода примера с сайта Королевство Дельфи
3.Изменение цвета строк компонента TGrid в режиме run-time в зависимости от данных в текущей записи нaбора данных.
Примечание: В данном примере SF_TYPE — внутренняя константа, ValueDesigner — переменная типа RECORD, содержащая нужные цвета.
Обрабатывается событие TGrid.onDrawColumnCell:
//------------------------------------------------------------------------------Procedure TMainForm.GridBookDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
Begin// Изменение цвета фонта записиIF TDBGrid(Sender).DataSource.DataSet.FieldByName('OWNER_TYPE').AsInteger = SF_TYPE
Then TDBGrid(Sender).Canvas.Font.Color:=ValueDesigner.colorSimpleSF
Else TDBGrid(Sender).Canvas.Font.Color:=ValueDesigner.colorChildrenSF;
// Поправка для выделенной записи , иначе текст не будет автоматически подсвечен IF (gdSelected in State) AND TDBGrid(Sender).Focused
Then TDBGrid(Sender).Canvas.Font.Color:=clHighLightText;
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
// установка знака АКЦЕПТОВАНО в поле SignIF CompareText(Field.FieldName,'SIGN')=0
Then IF NOT TDBGrid(Sender).DataSource.DataSet.FieldByName('ACCEPT').IsNull
Then TDBGrid(Sender).Canvas.Draw(Rect.Left,Rect.Top,
AcceptBMP.Picture.Bitmap)
end;
//------------------------------------------------------------------------------
Вот как я пытаюсь поменять цвет фона одной ячейки, проверив ее содержимое:
procedure TMainForm.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
IF TStringGrid(Sender).Cells[2,2]='1'then
begin
TStringGrid(Sender).Canvas.Brush.Style:=bsSolid;
TStringGrid(Sender).Canvas.Brush.Color:=clRed;
end
else
TStringGrid(Sender).Canvas.Brush.Style:=bsClear;
end;
Здравствуйте, solos, Вы писали:
S>Мастера, посоветуйте какой-нибуть Grid-компонент для Delphi (не для БД, а простой), который бы мог хранить в своих ячейках строки и предоставлял удобный интерфейс для доступа и разрисовки каждой ячейки.
S>Или как это сделать на стандартных компонентах?
Тебе важно платные или бесплатные компоненты?
Если платные, то пойщи TAdvGrid компания TMS.
Если бесплатные, то можно поискать наследников TSortGrid
Re[3]: Grid
От:
Аноним
Дата:
18.02.04 11:20
Оценка:
Здравствуйте, solos, Вы писали:
S>Вот как я пытаюсь поменять цвет фона одной ячейки, проверив ее содержимое:
S>
А>>дык, а закрашивать-то кто будет?
S>А как?
да FillRect какой-нибудь у канваса TStringGrid-а или что-то в этом духе (не помню уже, давно не писал на Builder-е), благо TRect тебе в событие передается
Здравствуйте, solos, Вы писали:
S>Мастера, посоветуйте какой-нибуть Grid-компонент для Delphi (не для БД, а простой), который бы мог хранить в своих ячейках строки и предоставлял удобный интерфейс для доступа и разрисовки каждой ячейки.
S>Или как это сделать на стандартных компонентах?
Лично мне очень нравится QuantumTreeList от DeveloperExpress. С этой штукой забыл о существовании всевозможных стандартных и нестандартных гридов и списков. Раскрашивай, сортируй, ставь редакторы на ячейки практически на любой вкус. Не бесплатно: http://www.devexpress.com/products/vcl/ExQuantumTreeList/
Был такой компонент когда-то и от него производные.
Можно поискать их на www.torry.ru.
В принцепе это полностью переписанный TStringGrid, с новыми возвожностями,
задай поиск на Torry по гридам, может чего подойдет, там есть и бесплатные.
Здравствуйте, Andy_MAN, Вы писали:
A_M>Здравствуйте, Dimonka, Вы писали:
A_M>нестандартных гридов и списков. Раскрашивай, сортируй, ставь редакторы на ячейки практически на любой вкус. Не бесплатно:
A_M>А если бесплатно?
Ну это смотря в каком смысле "бесплатно". Если для частного пользования, то посмотри на ру-борде в варезнике, а если на фирме нет денег на нужный компонент, то значит он вам и не нужен.