Главная страница
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.028 c
1-1145424924
ZSergey
2006-04-19 09:35
2006.05.28
Как избавиться от библиотеки-паразита qtinft70.dll ...


2-1147356863
Близнец
2006-05-11 18:14
2006.05.28
SearchRec.Attr=faDirectory


15-1146549885
sapsi
2006-05-02 10:04
2006.05.28
Профсоюз работников ИТ


15-1146634114
fast2
2006-05-03 09:28
2006.05.28
Как избавится от постоянно всплывающих окон?


3-1144435179
maxfiles
2006-04-07 22:39
2006.05.28
как узнать ключевое ли поле