Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CheckBox в DBGrid Как? 
:(
    Опции темы
Loki3D
Дата 30.8.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



Знаю что вопрос Есть в FAQ и в RDKB, но у меня не Получается.
Сама проблема с примером от Сюда.
Пытаюсь сделать все как там написано, но Не компилирует.
Конкретно Вот.
Я кладу процедуру
Код

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; 

Потом в событии "OnDrawColumnCell"
Вызываю процедуру
DrawGridCheckBox ();

И еще Саму Процедуру прописываю в
Type
среди всех остальных процедур
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);

Но не компилирует.. Выдает Ошибку.

Вопрос:
1. понимаю, что дурацкий вопрос, но Почему вылезает Ошибка?
Как правильно прикрепить процедуру?
2.Поясните пожалуйста вот этот вот кусок
Код

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; 

просто тут нет Коментариев по поводу всех Этих DFCS_ButtonCheck и прочее. А в книжках о таком не пишут. Хочу разобраться на будущее
PM MAIL   Вверх
Alex
Дата 30.8.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Текст ошибки в студию


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Loki3D
Дата 30.8.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



Если прписываю Процедуру так
Код

type
  TForm9 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    procedure FormShow(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Button1Click(Sender: TObject);
    procedure DrawGridCheckBox();                                  // пробую сначала Так
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Сообщение:
Цитата

[Error] Unit9.pas(20): Unsatisfied forward or external declaration: 'TForm9.DrawGridCheckBox'
[Fatal Error] Project1.dpr(13): Could not compile used unit 'Unit9.pas'


Если Записываю по другому, указывая переменные в процедуре..
Код

procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);// потом Так

Сообщение:
Цитата

[Error] Unit9.pas(77): Not enough actual parameters
[Error] Unit9.pas(20): Unsatisfied forward or external declaration: 'TForm9.DrawGridCheckBox'
[Fatal Error] Project1.dpr(13): Could not compile used unit 'Unit9.pas'


А процедуру я вызываю Так
Код

procedure TForm9.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState );
begin
  DrawGridCheckBox();
end;

PM MAIL   Вверх
Alex
Дата 30.8.2005, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Код

type
  TForm9 = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    procedure FormShow(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Button1Click(Sender: TObject);
    procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean); 
  private
    { Private declarations }
  public
    { Public declarations }
  end;

..........................

procedure TForm9.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 TForm9.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
 DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
 if Column.FieldName = 'WEIGHT' then // Модифицируйте под себя 
   if Column.Field.AsInteger > 10 then 
     DrawGridCheckBox(DBGrid1.Canvas, Rect, true) 
   else 
     DrawGridCheckBox(DBGrid1.Canvas, Rect, false) 
end; 
...........................



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Loki3D
Дата 30.8.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



Спасибо, понял Свой Косяк
PM MAIL   Вверх
Loki3D
Дата 31.8.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.3.2005

Репутация: нет
Всего: нет



Всем спасибо за помощь..
Во всех моих запросах мне помог Компонент DBGridEH
Предложденный вариант Хоть и отрабатывал, но только рисовал CheckBox, т.е. с ним нельзя было рабоатать как с объектом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.