Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
3-1079012189
Andriy Tysh
2004-03-11 16:36
2004.04.11
Help for DBVirtualTreeView or VirtualTreeView


1-1080234355
новичок_из_сыктывкара
2004-03-25 20:05
2004.04.11
Надо чтобы в TEdit можно было вводить только цифры, а если


1-1079965607
naiman_de
2004-03-22 17:26
2004.04.11
Как сделать так,чтобы приложение копировало само себя


1-1082128774
Руслан Гиричев
2004-04-16 19:19
2004.04.11
PageControl, как быть....


3-1081851727
CyBeR
2004-04-13 14:22
2004.04.11
Как вставить результат запроса Query в таблицу???.




   Наверх