C++Builder DBGrid

6 отговора 130 прегледа
#1

C++Builder DBGrid

Здравейте,
Имам следния проблем: В DBGrid контрола се опитвам да заменя
съдържанието на дадено поле което е от символен тип, с графично
изображение от ImageList.Това го правя в събитието OnDrawColumnCell()
на DBGrid контролата използвайки метода DBGrid->Canvas->Draw().
Как мога да направя така, че когато е фокусирано това поле и се
кликне с мишката в него или се натисне клавиша Enter да не се
показва истинската стойност на полето и то да не изпада в състояние на
редактиране, т.е. да не се показва курсор в него.
Другият момент е когато искам да използвам две изображения за
булево поле от таблица, които да се показват в DBGrid вмесо истинските
стоиности на полето.Това се прави отново в OnDrawColumnCell()
чрез метода DBGrid->Canvas->Draw() но вече се избират изображенията
от ImageList в зависимост от стойноста на полето true или false.
В събитието OnCellClick() на DBGrid контролата сменям стойността
на полето в таблицата и в зависимост от тази стойност в метода
OnDrawColumnCell() се изчертават изображенията.
Но когато клетката съответстваща на полето е във фокус и се кликне
с мишката в него или се натисне клавиша Enter се получава същото:
показва се истинската стойност на полето и клетката изпада в състояние
на редактиране, т.е. показва се курсора в нея.
Когато клетката не е във фокус изображенията се сменят и се изчертават
без никакъв проблем.
Ако някой може да помогнене моля нека изкаже мнение.
Благодаря.
ist.

ist@dir.bg
Отговор
в отговор на ist #2

Re: C++Builder DBGrid

set DefaultDrawing = false, презареди OnDrawColumnCell и си рисувай к'вото искаш когато искаш, а ако не искаш викаш inherited

Отговор
в отговор на lamer #3

Re: C++Builder DBGrid

Става въпрос за C++Builder а не за Delphi .В C++Builder за разлика от Delphi няма
inherited.

ist@dir.bg
Отговор
в отговор на ist #4

Re: C++Builder DBGrid

Има inherited :

typedef TCustomDBGrid inherited;


Има едно методче:

inherited::DefaultDrawColumnCell()


Има един параметър:

TGridDrawState State


Има и едно property

((TDBGrid*)Sender)->DataSource->DataSet->State

Отговор
в отговор на - #5

Re: C++Builder DBGrid

Ако може дайте примерен сорс.
Благодарности.
ist.

ist@dir.bg
Отговор
в отговор на ist #6

Re: C++Builder DBGrid

Е явно няма кой да помогне на човека!

Отговор
в отговор на cлyчaeн #7

Re: C++Builder DBGrid

Човека малко го примързява, ако питаш мен. С малко четене и експерименти нещото става, правил съм го на Delphi преди много години...

Отговор