Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2013, 09:27   #1
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
Сообщение DBGridEh u ImageList (работа с таблицей БД)

Здравствуйте уважаемые товарищи, возник вопрос, пробовал найти решение данной проблемы, но мои попытки реализации не удались, может вы мне подскажите как это осуществить. На форме есть DBGridEh и ImageList, есть таблица в которой есть поле "status", нужно осуществить вот какую штуку, если статус "True" то ImageIndex:=1, иначе(статус="False") ImageIndex:=2.
Вот мой фрагмент как я это пытался реализовать:
Код:
with ADOQuery2 do begin
 Close;
 SQL.Clear;
 SQL.Add('Select * From tb_test WHERE status = True');
 Open;
// Или может сдесь надо сделать просто проверку на поле "статус"
// а в запросе выбрать все записи из таблицы
 for i:=0 to DataSource.DataSet.RecordCount-1 do begin
    // Вставляем картинку с индексом "1" иначе с индексом "0"
 end;
end;
manula вне форума Ответить с цитированием
Старый 04.04.2013, 09:35   #2
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Пытался еще сделать вот так, возникла ошибка:
Код:
 
if (DBGridEh1.DataSource.DataSet.Fields[4].Value:=True) then
 begin
  DBGridEh1.Columns.Items[0].KeyList.Add('1');
 end
 else
  DBGridEh1.Columns.Items[0].KeyList.Add('0');
end;
Ошибка:
Цитата:
Type of expression must be BOOLEAN
manula вне форума Ответить с цитированием
Старый 04.04.2013, 09:38   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Смайл в гриде нужно отобразить в зависимости от значения поля Status?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2013, 09:48   #4
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Да, совершенно верно.
manula вне форума Ответить с цитированием
Старый 04.04.2013, 10:01   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Один из вариантов
Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;
  Column: TColumnEh; State: TGridDrawState);
var i: Integer;
    Bitmap: TBitmap;
begin
  if (SQL.RecordCount>0) and (Column.Title.Caption='С') then begin
    if SQL.FiledByName('Status').AsBoolean then i:=1 else i:=2;
    Bitmap:=TBitmap.Create;
    Bitmap.Transparent:=True;
    ImageList.GetBitmap(i,Bitmap);
    DrawCellBitmap(DBGridEh1,0,0,Bitmap,Rect);
    Bitmap.Free;
  end;
end;
В гриде должна быть колонка с Title.Caption='С' без Field-а
DrawCellBitmap если не ошибаюсь в юните VCLUtils
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2013, 10:11   #6
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Попробуем такой вариант, а вы не могли бы еще подсказать с использованием ImageList1, я попробовал таким образом, ну не совсем то получилось:
Код:
 
status:Boolean;
.....
 with ADOQuery2 do begin
 Close;
 SQL.Clear;
 SQL.Add('Select * From tb_test');
 Open;
  DBGridEh1.Columns.Items[0].ImageList := ImageList1;
  status:=DataSource1.DataSet.FieldByName('status').Value;
for i:=0 to DataSource1.DataSet.RecordCount-1 do begin
 if (status=True) then
  DBGridEh1.Columns.Items[0].KeyList.Add('1')
 else
  DBGridEh1.Columns.Items[0].KeyList.Add('0');
end;
end;
manula вне форума Ответить с цитированием
Старый 04.04.2013, 10:34   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
ну не совсем то получилось
слабо сказано, он вообще непонятно что выполняет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2013, 10:50   #8
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
слабо сказано, он вообще непонятно что выполняет
Ну да есть такое дело, ну у меня по крайней мере иконки отобразились,только криво конечно))
manula вне форума Ответить с цитированием
Старый 05.04.2013, 16:15   #9
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Все таки пытался сделать с использованием ImageList, но не получается осуществить правильно проверку, выдает ошибку,вот код:
Код:
Var status: Boolean;
begin
DBGridEh1.Columns.Items[0].ImageList := ImageList1;
 with ADOQuery1 do begin
  Close;
  MemTableEh1.Active:= False;
  SQL.Clear;
  SQL.Add('Select * FROM tb_test');
  Open;

  while not Recordset.EOF do begin
   if (DataSource.DataSet.FieldByName('status').Value=True) then //туточки ошибка
    DBGridEh1.Columns.Items[0].KeyList.Add('1')
     else
    DBGridEh1.Columns.Items[0].KeyList.Add('0');
  end;
  MemTableEh1.Active:= True;
 end;
end;
Помогите люди добрые, как мне сравнить "Статус"!
manula вне форума Ответить с цитированием
Старый 05.04.2013, 16:33   #10
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию

Вот мой код переделай под себя
где Im1: TBitmap;

Код:
 Im1 := TBitmap.Create;
  if Column.FieldName = 'Image' then
  with DBGrid1.Canvas do
    begin
      Brush.Color := clInfoBk;
      FillRect(Rect);
     if ADOTable1.FieldByName('massa').Value >18 then
       ImageList4.GetBitmap(0, Im1)
      else
        ImageList4.GetBitmap(1, Im1);
     Draw(round((Rect.Left + Rect.Right - Im1.Width) / 2), Rect.Top, Im1);
  Im1.Free;
end;
Aleksandr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со сводной таблицей Вадичок Microsoft Office Excel 2 18.12.2012 23:38
Работа с таблицей anubiss Помощь студентам 5 02.05.2012 00:07
Работа с таблицей StringGrid Marsel737 Общие вопросы Delphi 8 31.03.2010 12:24
работа с таблицей photozaz БД в Delphi 4 27.09.2008 21:29
Работа с таблицей без БД Гр_ БД в Delphi 3 06.06.2007 16:31