Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Вниз

Как в DBGrid для заполнения вставить CheckBox   Найти похожие ветки 

 
ruslan_as   (2003-12-08 09:33) [0]

Заранее спасибо за помощь.


 
ruslan_as   (2003-12-08 09:42) [1]

Точнее нужен DBCheckBox.


 
Рамиль   (2003-12-08 09:45) [2]

Взять EhLib www.ehlib.com
либо прорисовывать в ручную


 
Sergey_Masloff   (2003-12-08 09:52) [3]

>Рамиль © (08.12.03 09:45) [2]
>Взять EhLib www.ehlib.com
Ради такой еруйни брать стороннюю библиотеку? ;-)

procedure TfmMyFind.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
I: Integer;
R: TRect;
begin
if Column.Field = qryFind.FieldByName("SELECTION") then begin
(Sender as TDBGrid).Canvas.FillRect(Rect);
R := Rect;
InflateRect(R, 0, -2);
if qryFind.FieldByName("SELECTION").AsInteger = 1 then
I := DFCS_BUTTONCHECK + DFCS_CHECKED
else
I := DFCS_BUTTONCHECK;
DrawFrameControl((Sender as TDBGrid).Canvas.Handle, R, DFC_BUTTON, I);
end else
(Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;


 
ruslan_as   (2003-12-08 10:09) [4]

>>Sergey_Masloff
Я делал так:
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
DrawFlags: Integer;
begin
Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, " ");
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
if Checked then
DrawFlags := DrawFlags or DFCS_CHECKED;
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.FieldName = "CORRECT" then // Модифицируйте под себя
if Column.Field.AsString = "True " then
DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
else
DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;

Но проблема в том, что я не могу поменять значение...


 
ruslan_as   (2003-12-08 10:41) [5]

Как менять то значение?...


 
BlackTiger   (2003-12-08 19:10) [6]

2 ruslan_as Да не парься ты с рисованием. Возьми EhLib, как предлагали. Еще и кучу "вкусностей" получищь к бесплатности.


 
tchn   (2003-12-08 21:18) [7]

черный тигер сто раз прав!! возьми EhLib или QuantumGrid, и не грузись рисованием. уверен, у тебя других проблем полно...


 
Sergey_Masloff   (2003-12-08 22:52) [8]

BlackTiger, tchn ©
Сторонние компоненты в 90% случаев это зло так как СВОЙ проект завязываете на чужой код. Более того, в нашей организации использование сторонних компонентов явно запрещено. И ничего, как-то обходимся.

ruslan_as ©

procedure TfmMyFind.DBGrid1DblClick(Sender: TObject);
begin
if (Sender as TDBGrid).SelectedField = qryFind.FieldByName("SELECTION") then begin
if qryFind.State = dsBrowse then
qryFind.Edit();
if qryFind.FieldByName("SELECTION").AsInteger = 0 then
qryFind.FieldByName("SELECTION").AsInteger := 1
else
qryFind.FieldByName("SELECTION").AsInteger := 0;
(Sender as TDBGrid).Invalidate;
end;
end;


 
Sandman25   (2003-12-09 10:43) [9]

[8] Sergey_Masloff (08.12.03 22:52)

Но исходники же есть!


 
tchn   (2003-12-09 12:14) [10]

Сергею Маслову:
ну давайте и Delphi сами напишем!


 
Vlad   (2003-12-09 12:23) [11]


> tchn © (09.12.03 12:14) [10]
> ну давайте и Delphi сами напишем!

Вперед и с песней. А мы посмотрим.
Есть такое понятие как рациональный подход. Если человеку нужно только вставить чекбоксы в грид, не имеет никакого смысла пользовать сторонние компоненты, с кучей лишних и не нужных примочек, от которых файл проекта пухнет и баги всплывают периодически, а потому приходится копаться НЕ в своем коде.
IMHO, это не есть хорошо.


 
tchn   (2003-12-09 12:30) [12]

да спорим глупо. сама идеология Delphi предполагает использование готового кода, ну а если нравится тебе писать все самому, тратить на это время, то ради бога! никто ж не запрещает..


 
Sandman25   (2003-12-09 12:32) [13]

[11] Vlad © (09.12.03 12:23)

Если человеку не нужен автоматический поиск в любой колонке, возможность изменять высоту строк и отображать данные в несколько рядов, то это странно.
Если человеку это нужно, но он сам все это каждый раз реализует, то это нерационально.
Если используются собственные компоненты, исходный код которых во многом скопирован из EhLib, то тут я согласен. Хоть и не понимаю, почему бы не использовать EhLib. Перенос кода под новую версию Delphi не придется самому делать :)


 
Vlad   (2003-12-09 13:47) [14]


> Если человеку не нужен автоматический поиск в любой колонке,
> возможность изменять высоту строк и отображать данные в
> несколько рядов, то это странно.

Где у автора написано что ему все это нужно ? Человек спросил: как вставить чекбоксы в грид. Sergey_Masloff дал ответ на его вопрос. Все остальные - не дали.
Мало того, если автор - начинающий программист, то советовать EhLib - это вобще медвежья услуга.


 
Sandman25   (2003-12-09 13:51) [15]

[14] Vlad © (09.12.03 13:47)

Я говорил, исходя из моего опыта. Несколько лет писал программы, и пользователи не жаловались. А потом однажды попробовал DBGridEh, и мне стало стыдно, что я лишал пользователей всех тех удобств, которые мог им дать.
Про начинающего программиста абсолютно не согласен. Скорее наоборот - начинающего программиста стоит познакомить с существованием и возможностями сторонних компонент.


 
Vlad   (2003-12-09 14:15) [16]


> Sandman25 © (09.12.03 13:51) [15]

Программист хочет понять принцип - как вставляются чекбоксы в грид. И правильно хочет. Потому что если не поймет, то будет и дальше штурмовать форум с дурацкими вопросами.
Здесь ему помогли понять принцип.


 
Sandman25   (2003-12-09 15:24) [17]

[16] Vlad © (09.12.03 14:15)

Вы правы.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-11796
SergP
2003-12-09 11:44
2004.01.05
Синтаксис SQL. Проблема при использованиии групировки


1-11866
Cat
2003-12-08 13:57
2004.01.05
Как очистить Ole-контейнер


1-11966
Андрей_Р
2003-12-19 14:14
2004.01.05
отловить нажатие на созданный компонент....


14-12085
che
2003-12-15 11:40
2004.01.05
учебник по DELPHI. Подскажите !


1-11864
h0use
2003-12-18 16:03
2004.01.05
Как вставить символ смайлика в RichEdit?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский