Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 13:45 28.09.24 
Клубове/ Компютри и Интернет / Delphi Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: CheckBox in DBGrid [re: Pechenia]
Авторturtle (Нерегистриран) 
Публикувано21.12.02 13:52  



Аз съм направил в дадена колона да се показва CheckBox във всички клетки като съм направил състоянията на CheckBox-a като Bitmap и ги прерисувам в OnDrawColumnCell в зависимост от съдържанието на поле от таблицата, т.е. ако полето е 0 рисувам UnChecked CheckBox а ако е 1 Ckecked CheckBox.
Ето и малко код само че C++(Работя със C++Builder 6.)

void __fastcall TfrmMain::DBGrid3DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
Graphics::TBitmap *ImSel;
ImSel = new Graphics::TBitmap;
if(Column->FieldName == "Select")
{
DBGrid3->Canvas->Brush->Color = clWhite;
DBGrid3->Canvas->FillRect(Rect);
if(ADOTask->FieldByName("Select")->AsString == '0')
{
ImageList1->GetBitmap(0,ImSel);
}
else
{
ImageList1->GetBitmap(1,ImSel);
}
DBGrid3->Canvas->Draw((Rect.Left+2 + Rect.Right - ImSel->Width)/2,Rect.Top+1, ImSel);
delete ImSel;
}
}

При кликване върху клетката, т.е. върху Bitmap-a(CheckBox) се изпълнява код в събитието OnCellClick.Променя се съдържанието на полето от таблицата което съхранява състоянието на CheckBox-a,и по което поле се изрисува съответното му състояние в клетките на колоната от DBGrid-a.
Ето и съответният код:

void __fastcall TfrmMain::DBGrid3CellClick(TColumn *Column)
{
if(Column->FieldName == "Select")
{
ADOTask->Edit();
if(ADOTaskSelect->AsString == '0')
ADOTaskSelect->AsString = '1';
else
ADOTaskSelect->AsString = '0';
ADOTask->Post();
}
}

Проблема се явява когато е селецтирана дадена клетка, т.е. е във фокус и се кликне с мишката върху нея се появява истинската стойност на полето, т.е. 1 или 0 и полето изпада в състояние Edit().Като се промени фокуса на друга клетка се появява съответния CheckBox(Bitmap-a) в клетката където е била истинската стойност.
Искам когато клетката с CheckBox-a е във фокус и се кликне върху нея да се смени само състоянието а не да се показва истинската стойност.Когато клетката не е във фокус няма проблеми.Състоянието на CheckBox-a Се променя.
Е този проблем не мога да го реша от доста време насам затова го поставям във форума.
Дано някой помогне.



Цялата тема
ТемаАвторПубликувано
* CheckBox in DBGrid turtle   20.12.02 21:50
. * Re: CheckBox in DBGrid Pechenia   21.12.02 11:31
. * Re: CheckBox in DBGrid turtle   21.12.02 13:52
. * Re: CheckBox in DBGrid turtle   22.12.02 16:19
. * Re: CheckBox in DBGrid PhantomAS   22.12.02 20:17
. * Re: CheckBox in DBGrid Morffei   25.12.02 16:41
. * Re: CheckBox in DBGrid PhantomAS   25.12.02 18:12
. * Re: CheckBox in DBGrid Morffei   29.12.02 17:53
. * Re: CheckBox in DBGrid turtle   30.12.02 14:24
. * Re: Ето решение на проблема Morffei   31.12.02 18:01
. * Re: Ето решение на проблема turtle   04.01.03 15:04
. * Коя версия на C-Builder използваш? PhantomAS   30.12.02 23:08
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.