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

Вниз

Подскажите пожалуйста! Как в DBgrid в title картинку вставить   Найти похожие ветки 

 
Rosik   (2004-04-10 22:32) [0]

Как вставить какую нибудь картинку в заголовок DBGrida, в фиксированную область. Типа стрелочки (галочки) при фильтровании данных,
дабы показать юзеру что отсортировано именно по этому столбцу.

Если можно, без использовния всяких крутых компонентов. Может есть у кого идеи?
Спасибо.


 
Gott   (2004-04-10 22:54) [1]

Можно попробовать отлавливать событие перерисовки таблицы, и сначала рисовать картиночку в заголовке, а потом вызывать наследованную перерисовку, или попробовать найти событие перерисовки заголовка.


 
Rosik   (2004-04-10 23:19) [2]

т.е DafaultDrawing в false
Я думал, геморно. может есть что то проще или кусок у кого работающий. Писать надо. А как хранить картинку, вернее 2 картинки? Наверно моно использовать файл ресурсов, но как с ними работать я не знаю :)

+ надо чтоб при нажатии на Title он как кнопка нажимался.

Я нашел такой компонент PNG_DBGrid но он без исходников, не хотелось бы использовать, Уже у него залипон один нашел.


 
sniknik ©   (2004-04-10 23:21) [3]

переопределить в гриде функцию рисования
 TMyDBGrid = class(TDBGrid)
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
 end;
и рисовать в ней. использовать естественно уже TMyDBGrid вместо TDBGrid.


 
sniknik ©   (2004-04-10 23:22) [4]

> + надо чтоб при нажатии на Title он как кнопка нажимался.
тогда уж проще заголовок гриду заменить (на королевстве гдето видел описание как делается)


 
Rosik   (2004-04-10 23:24) [5]

Я тоже видел, то это обкакали и сказали используй готовый компонент


 
sniknik ©   (2004-04-10 23:27) [6]

лутше сделай сам (а то вот попадеш в такое место как я работать, запрешены все сторонние компоненты (почти, но согласовывать заколебешся), что делать будеш?)


 
Rosik   (2004-04-10 23:44) [7]

нда, спасение утопающего дело его собственное ... :)
разбираться времени мало, все равно спасибо


 
Rosik   (2004-04-11 00:25) [8]

THeaderControl панацея!!!!


 
atruhin ©   (2004-04-11 09:29) [9]

В (3) sniknik предложил самое простое решение. Ничего сложного 10 строк кода в DrawCell. Изображения храни в ImageList. Всё просто.
Где-то была статья работа с DBGrid или что-то подобное (помоему на королевстве делфи) там всё это с примерами.


 
SergP ©   (2004-04-11 12:10) [10]

А если в DBGrid отключить показ заголовков, а вместо них прилепить сверху несколько BitBtn? проблема будет если столбцы нужны не с фиксироваными, а с изменяющимися размерами...

>sniknik ©   (10.04.04 23:21)
>переопределить в гриде функцию рисования
> TMyDBGrid = class(TDBGrid)
>    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState:
>TGridDrawState); override;
> end;
>и рисовать в ней. использовать естественно уже TMyDBGrid вместо TDBGrid.

Немного неудобно тем что наверное объект класса TMyDBGrid придется создавать в Runtime.


 
SergP ©   (2004-04-11 13:51) [11]

Кстати:
Я вот только что попробовал делать так, чтобы не усложнять ничего:
var
 ...
 GridPicture:record
     image:byte;
     column:byte;
 end;
...

procedure TFormUsers.DBGrid1TitleClick(Column: TColumn);
var
 order:string;
begin
 GridPicture.column:=column.ID;
...
end;

...
procedure TFormUsers.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
...

if (rect.top<20) and (GridPicture.column=DataCol) then
ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,0, gridpicture.image );
end;

Т.е. при перерисовке таблицы, заодно и рисую картинку в заголовке,
правда чтобы рисунок не рисовался на одном и том же месте столько раз сколько записей отображается, я поставил это условие: rect.top<20 (на глаз)
В принципе работает нормально (Для DBGrid со размерами высот строк по умолчанию)


 
SergP ©   (2004-04-11 13:58) [12]

Вот блин,

var
order:string; - это в моей проге переменная , она тебе не нужна, выкинь нафиг...А то я когда постил, и вырезал все лишнее, то про это забыл...



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.052 c
6-1074180747
Mister_First
2004-01-15 18:32
2004.04.11
Передача файлов по сети без клиента и сервера


1-1082927765
Wi_Julia
2004-04-26 01:16
2004.04.11
StrToInt


14-1079425178
able
2004-03-16 11:19
2004.04.11
Люди, зацените сайт


11-1059059557
_Polymorphic_
2003-07-24 19:12
2004.04.11
KOLmdvXLGrid. Изменение размеров колонок.


1-1079950071
Leech
2004-03-22 13:07
2004.04.11
Delay во время выполнения либо ответ от rar...