C++Builder DBGrid
6 отговора
130 прегледа
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
Имам следния проблем: В DBGrid контрола се опитвам да заменя
съдържанието на дадено поле което е от символен тип, с графично
изображение от ImageList.Това го правя в събитието OnDrawColumnCell()
на DBGrid контролата използвайки метода DBGrid->Canvas->Draw().
Как мога да направя така, че когато е фокусирано това поле и се
кликне с мишката в него или се натисне клавиша Enter да не се
показва истинската стойност на полето и то да не изпада в състояние на
редактиране, т.е. да не се показва курсор в него.
Другият момент е когато искам да използвам две изображения за
булево поле от таблица, които да се показват в DBGrid вмесо истинските
стоиности на полето.Това се прави отново в OnDrawColumnCell()
чрез метода DBGrid->Canvas->Draw() но вече се избират изображенията
от ImageList в зависимост от стойноста на полето true или false.
В събитието OnCellClick() на DBGrid контролата сменям стойността
на полето в таблицата и в зависимост от тази стойност в метода
OnDrawColumnCell() се изчертават изображенията.
Но когато клетката съответстваща на полето е във фокус и се кликне
с мишката в него или се натисне клавиша Enter се получава същото:
показва се истинската стойност на полето и клетката изпада в състояние
на редактиране, т.е. показва се курсора в нея.
Когато клетката не е във фокус изображенията се сменят и се изчертават
без никакъв проблем.
Ако някой може да помогнене моля нека изкаже мнение.
Благодаря.
ist.
ist@dir.bg
Re: C++Builder DBGrid
set DefaultDrawing = false, презареди OnDrawColumnCell и си рисувай к'вото искаш когато искаш, а ако не искаш викаш inherited
Re: C++Builder DBGrid
Става въпрос за C++Builder а не за Delphi .В C++Builder за разлика от Delphi няма
inherited.
ist@dir.bg
inherited.
ist@dir.bg
Re: C++Builder DBGrid
Има inherited
:
typedef TCustomDBGrid inherited;
Има едно методче:
inherited::DefaultDrawColumnCell()
Има един параметър:
TGridDrawState State
Има и едно property
((TDBGrid*)Sender)->DataSource->DataSet->State
typedef TCustomDBGrid inherited;
Има едно методче:
inherited::DefaultDrawColumnCell()
Има един параметър:
TGridDrawState State
Има и едно property
((TDBGrid*)Sender)->DataSource->DataSet->State
Re: C++Builder DBGrid
Човека малко го примързява, ако питаш мен. С малко четене и експерименти нещото става, правил съм го на Delphi преди много години...