Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как вставить CheckBox в Dbgrid ? [D6]


Ulugbek ©   (2009-04-06 15:27:00) 

Привет всем!
Не получаеться у меня вставить чекбокс в DbGrid!
Использую Tclientdataset
открываю его select 0 as Logic,t.* from table1
в инете нашел такой код но не помагает..

procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var DF: Integer;
begin
 Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
 DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
 DF:= DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;
 if Checked then DF:= DF or DFCS_CHECKED;
 DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DF);
end;

procedure TfrmSpravMain.grdAccDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
 if Column.FieldName = 'logic' then
 if Column.Field.AsInteger > 0 then
 DrawGridCheckBox(grdAcc.Canvas, Rect, true)
 else
 DrawGridCheckBox(grdAcc.Canvas, Rect, false)
end;

Спасибо за внимание


Ega23   (2009-04-06 17:32:00) [1]


> Ega23 по подробнее плз


Пожалуйста.

const
 c_FldName = 'logIC';

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Edit1.Text=c_FldName then
  ShowMessage('Yes')
 else
  ShowMessage('No');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if UpperCase(Edit1.Text)=UpperCase(c_FldName) then
  ShowMessage('Yes')
 else
  ShowMessage('No');
end;


Теперь подставь в Edit1 по очереди значения "LoGiC", "lOgIc","logic", "LOGIC".
Нажми каждый раз 2 кнопки.
Посмотри на результат.
Подумай.
Почитай про сравнения строк.
Подумай ещё раз.
Посмотри реализацию TDataSet.FieldByName в DB.pas


Игорь Шевченко   (2009-04-06 17:22:00) [2]


>    if SelectedField.FieldName = 'CBBOX' then
>    "LoGiC" <> "lOgIc" <> "logic" <> "LOGIC".


бедный компилятор


Ulugbek   (2009-04-06 17:21:00) [3]

Ega23 по подробнее плз
 with TClientDBGrid(Sender) do
   if SelectedField.FieldName = 'CBBOX' then
   "LoGiC" <> "lOgIc" <> "logic" <> "LOGIC".
     Options := Options - [dgEditing]
   else
     Options := Options + [dgEditing]


Ega23   (2009-04-06 16:58:00) [4]


> if SelectedField.FieldName = 'LOGIC' then


"LoGiC" <> "lOgIc" <> "logic" <> "LOGIC".


clickmaker   (2009-04-06 16:55:00) [5]

> Как мне в клике 1 ставить?

меняй значение поля


Ulugbek   (2009-04-06 16:47:00) [6]

Спасибо Ega23 получилось хоть что то..
Но теперь не могу галку ставить вставил код в событие ColEnter
у меня 0 это Uncheked а 1 cheked

with TDBGrid(Sender) do
   if SelectedField.FieldName = 'LOGIC' then
     Options := Options - [dgEditing]
   else
     Options := Options + [dgEditing]

Как мне в клике 1 ставить?


Ega23   (2009-04-06 16:15:00) [7]

UpperCase(Column.FieldName) = 'LOGIC'
А так?


Ulugbek   (2009-04-06 15:43:00) [8]

аха не рисует...


clickmaker   (2009-04-06 15:41:00) [9]

> но не помагает

не рисует? или что?


Наверх

Титульная страница Поиск, карта сайта Написать письмо