Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

аналог 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.066 c
11-1127473310
nester
2005-09-23 15:01
2006.05.28
Как в TKOLListView при LvsDetail сделать каждый item многострочны


2-1147152625
Неуч
2006-05-09 09:30
2006.05.28
ширина текстового поля в Tmemo


15-1146426863
expirez
2006-04-30 23:54
2006.05.28
Не могу разобраться с TextFile


1-1145450930
Alex_C
2006-04-19 16:48
2006.05.28
Почему прерывается выполнение Thread?


2-1147610891
Silver_Wolf
2006-05-14 16:48
2006.05.28
Запрет