Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизПодскажите пожалуйста! Как в DBgrid в title картинку вставить Найти похожие ветки
← →
Rosik (2004-04-10 22:32) [0]Как вставить какую нибудь картинку в заголовок DBGrida, в фиксированную область. Типа стрелочки (галочки) при фильтровании данных,
дабы показать юзеру что отсортировано именно по этому столбцу.
Если можно, без использовния всяких крутых компонентов. Может есть у кого идеи?
Спасибо.
← →
Rosik (2004-04-10 22:32) [0]Как вставить какую нибудь картинку в заголовок DBGrida, в фиксированную область. Типа стрелочки (галочки) при фильтровании данных,
дабы показать юзеру что отсортировано именно по этому столбцу.
Если можно, без использовния всяких крутых компонентов. Может есть у кого идеи?
Спасибо.
← →
Gott (2004-04-10 22:54) [1]Можно попробовать отлавливать событие перерисовки таблицы, и сначала рисовать картиночку в заголовке, а потом вызывать наследованную перерисовку, или попробовать найти событие перерисовки заголовка.
← →
Gott (2004-04-10 22:54) [1]Можно попробовать отлавливать событие перерисовки таблицы, и сначала рисовать картиночку в заголовке, а потом вызывать наследованную перерисовку, или попробовать найти событие перерисовки заголовка.
← →
Rosik (2004-04-10 23:19) [2]т.е DafaultDrawing в false
Я думал, геморно. может есть что то проще или кусок у кого работающий. Писать надо. А как хранить картинку, вернее 2 картинки? Наверно моно использовать файл ресурсов, но как с ними работать я не знаю :)
+ надо чтоб при нажатии на Title он как кнопка нажимался.
Я нашел такой компонент PNG_DBGrid но он без исходников, не хотелось бы использовать, Уже у него залипон один нашел.
← →
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: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 он как кнопка нажимался.
тогда уж проще заголовок гриду заменить (на королевстве гдето видел описание как делается)
← →
sniknik © (2004-04-10 23:22) [4]> + надо чтоб при нажатии на Title он как кнопка нажимался.
тогда уж проще заголовок гриду заменить (на королевстве гдето видел описание как делается)
← →
Rosik (2004-04-10 23:24) [5]Я тоже видел, то это обкакали и сказали используй готовый компонент
← →
Rosik (2004-04-10 23:24) [5]Я тоже видел, то это обкакали и сказали используй готовый компонент
← →
sniknik © (2004-04-10 23:27) [6]лутше сделай сам (а то вот попадеш в такое место как я работать, запрешены все сторонние компоненты (почти, но согласовывать заколебешся), что делать будеш?)
← →
sniknik © (2004-04-10 23:27) [6]лутше сделай сам (а то вот попадеш в такое место как я работать, запрешены все сторонние компоненты (почти, но согласовывать заколебешся), что делать будеш?)
← →
Rosik (2004-04-10 23:44) [7]нда, спасение утопающего дело его собственное ... :)
разбираться времени мало, все равно спасибо
← →
Rosik (2004-04-10 23:44) [7]нда, спасение утопающего дело его собственное ... :)
разбираться времени мало, все равно спасибо
← →
Rosik (2004-04-11 00:25) [8]THeaderControl панацея!!!!
← →
Rosik (2004-04-11 00:25) [8]THeaderControl панацея!!!!
← →
atruhin © (2004-04-11 09:29) [9]В (3) sniknik предложил самое простое решение. Ничего сложного 10 строк кода в DrawCell. Изображения храни в ImageList. Всё просто.
Где-то была статья работа с DBGrid или что-то подобное (помоему на королевстве делфи) там всё это с примерами.
← →
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 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: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; - это в моей проге переменная , она тебе не нужна, выкинь нафиг...А то я когда постил, и вырезал все лишнее, то про это забыл...
← →
SergP © (2004-04-11 13:58) [12]Вот блин,
var
order:string; - это в моей проге переменная , она тебе не нужна, выкинь нафиг...А то я когда постил, и вырезал все лишнее, то про это забыл...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.03 c