![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли в DBGrid индикатор сделать другим цветом от Title? [D5, Paradox]
Art1 © (2002-04-15 19:18:00)Можно ли в DBGrid индикатор (слева полоска, указівающая на текущую запись) сделать другим цветом от Title?
sniknik (2002-04-17 11:50:00) [1]странно сегодня работает. было подозрение на Parent := Self;
я присваивал Form1, но и так тоже работает. а что же вчера не получалось? бред. ну ничего спишем все на собаку Била, или на Борланд валить? :-))
sniknik (2002-04-17 11:34:00) [2]ну вот именно так и не работает :-( почему и спрашиваю. при таком само создании вообще ничего не рисуется на форме. ладно буду разбиратся.
Lusha (2002-04-17 11:12:00) [3]>sniknik © (17.04.02 10:57)
Это всего лишь пример переопределения класса...
...а использовать его, например, можно следующим образом...
type
TForm1 = class(TForm)
Query1: TQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
private
FGrid : TIndicatorDBGrid;
public
{ Public declarations }
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
FGrid := TIndicatorDBGrid.Create(Self);
FGrid.Parent := Self;
FGrid.Align := alClient;
FGrid.DataSource := DataSource1;
end;
sniknik (2002-04-17 10:57:00) [4]Lusha © обьясните теперь мне про пример.
он у вас прям так и работает?
ну в смысле у меня заработал после того как сделал свой компонент от TDBGrid с вашей процедурой, и уже его положил на форму.
но у вас ничего подобного не написано, это само собой разумеющееся или он должен работать с таким поздним переопределением но у меня по какимто причинам отказывается?
Lusha (2002-04-17 10:37:00) [5]>Alx3 (17.04.02 10:02)
Могу. А зачем? У Вас проблемы с переводом?
Alx3 (2002-04-17 10:02:00) [6]Lusha © > Хороший примерчик ;o)) А можешь это-же самое изобразить на Билдере?
Lusha (2002-04-16 11:05:00) [7]>Art1 (16.04.02 10:15)
Да, пожалуйста... :)
В следующем примерчике индикатор - желтая ячейка...
type
TIndicatorDBGrid = class(TDBGrid)
protected
procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
end;
...
procedure TIndicatorDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var _Row, _Col : Integer;
begin
if csLoading in ComponentState then
begin
inherited DrawCell(ACol, ARow, ARect, AState);
Exit;
end;
_Col := ACol;
_Row := ARow;
if dgTitles in Options then dec(_Row);
if dgIndicator in Options then dec(_Col);
if (gdFixed in AState) and (_Col < 0) then
if Assigned(DataLink) and DataLink.Active and (DataLink.ActiveRecord = _Row) then
begin
Canvas.Brush.Color := clYellow;
Canvas.FillRect(ARect);
Exit;
end;
inherited DrawCell(ACol, ARow, ARect, AState);
end;
Art1 (2002-04-16 10:15:00) [8]Я ж говорил, что мне неужно поменять цвет индикатора (это столбец левее нулевого столбца в DBGrid). А предложенный вариант закрашивает нулевой столбец с данными.
Уважаемый Lusha.
Если Вы знаете как это реализовывается, то примерчих плизз.
Lusha (2002-04-16 09:27:00) [9]Можно...
Aleks1 (2002-04-16 03:09:00) [10]> sniknik © (15.04.02 19:47)
Ты про "Индикатор" или нет?
sniknik (2002-04-15 19:47:00) [11]всю полоску просто
procedure TForm1.FormShow(Sender: TObject);
const bol: boolean= true;
begin
if bol then begin
DBGrid1.Columns[0].Color:= clMedGray;
bol:= false;
end;
end;
если одну позицию то перерисовкой в DBGrid1 на onDBGrid1DrawColumnCell