Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Внизаналог DBGrid, наследник TGraphicControl Найти похожие ветки
← →
q-q (2006-05-11 16:02) [0]как сделать, или где взять аналог DBGrid, наследник TGraphicControl, со свойством Transparent (нужен прозрачный грид только для отбражения данных и навигации по ним)
← →
Sergey13 © (2006-05-11 16:13) [1]>нужен прозрачный грид
чем только люди не занимаются. 8-)
← →
Elen © (2006-05-11 16:28) [2]Поройся среди компонентов. Кажется что-то было в LMD да и QuantiumGrid можно наити в ИНете там кажется это предусмотренно
← →
q-q (2006-05-11 16:34) [3]LMD да и QuantiumGrid - платные
Грид нужен по необходимости, надо выводить поверх картинки данные в виде таблицы из БД
← →
Elen © (2006-05-11 16:59) [4]Есть бесплатные или с кряком компоненты в ИНете и тот-же LMD (Кстати появилась новая версия) и остальные. Ты просто плохо искал
← →
Loginov Dmitry © (2006-05-11 19:23) [5]q-q (11.05.06 16:34) [3]
Грид нужен по необходимости, надо выводить поверх картинки данные в виде таблицы из БД
Да и в обычном Гриде такое можно сотворить (при прорисовке ячеек копировать кусочек фона из TBitmap, а затем уж и сам текст рисовать)
← →
q-q (2006-05-12 13:51) [6]Loginov Dmitry © (11.05.06 19:23)
Да и в обычном Гриде такое можно сотворить (при прорисовке ячеек копировать кусочек фона из TBitmap ...
Делаю так
type
TDBGrid = class(DBGrids.TDBGrid)
private
FBmp: TBitmap;
protected
procedure Scroll(Distance: Integer); override;
procedure Paint; override;
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
constructor TDBGrid.Create(AOwner: TComponent);
begin
inherited;
FBmp := TBitmap.Create;
FBmp.LoadFromFile("maket.bmp");
ScrollBars := ssVertical;
end;
destructor TDBGrid.Destroy;
begin
FBmp.Free;
inherited;
end;
procedure TDBGrid.DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
var
Value: String;
R: TRect;
begin
FBmp.Canvas.Handle, Rect.Left, Rect.Top, SRCCOPY);
Windows.BitBlt(Canvas.Handle, Rect.Left, Rect.Top-1, Rect.Right, Rect.Bottom-1, FBmp.Canvas.Handle, Rect.Left, Rect.Top, SRCCOPY);
Canvas.Brush.Style := bsClear;
R := Rect;
Value := Column.Field.AsString;
DrawText(Canvas.Handle, PChar(Value), Length(Value), R, DT_LEFT or DT_VCENTER);
inherited;
end;
procedure TDBGrid.Paint;
var
DrawInfo: TGridDrawInfo;
begin
CalcDrawInfo(DrawInfo);
inherited;
with DrawInfo do
begin
{ Fill in area not occupied by cells }
if Horz.GridBoundary < Horz.GridExtent then
begin
Windows.BitBlt(Canvas.Handle, Horz.GridBoundary, -1, Horz.GridExtent, Vert.GridBoundary-1,
FBmp.Canvas.Handle, Horz.GridBoundary, 0, SRCCOPY);
end;
if Vert.GridBoundary < Vert.GridExtent then
begin
Windows.BitBlt(Canvas.Handle, 0, Vert.GridBoundary, Horz.GridExtent, Vert.GridExtent,
FBmp.Canvas.Handle, 0, Vert.GridBoundary, SRCCOPY);
end;
end;
end;
procedure TDBGrid.Scroll(Distance: Integer);
begin
inherited;
InvalidateRect(Handle, nil, False);
end;
Противно мерцает
← →
Игорь Шевченко © (2006-05-12 15:50) [7]Достаточно вдумчиво переписать метод Paint у Grid"а. Стандартный метод явно затирает всю область вне текста цветом самого грида.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.018 c