Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.069 c
1-1082643041
hawkins
2004-04-22 18:10
2004.05.09
Подскажите, как у ListBox узнать ширину рамки?


14-1082109682
Voland2000
2004-04-16 14:01
2004.05.09
Nokia 8110-forever


1-1082385273
Bohdan
2004-04-19 18:34
2004.05.09
Прозрачная прорисовка компонентов типа TCheckBox, TRadioButton


4-1075545213
Шишкин Илья
2004-01-31 13:33
2004.05.09
Работа с иконками


14-1082362842
Padre
2004-04-19 12:20
2004.05.09
Как установить скорость COM порта = 5 бод ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский