Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: DBGrid  (Прочитано 5858 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BIG BOY
Гость
« : 13-04-2007 14:55 » 

Товарищи, подскажите новичку, как сделать чтоб ширина колонки в DBGrid автоматически регулировалась (ширина = самая длинная записьв таблице).
Я вот напечатал функцию, а мне ошибочку выдали типа const char != AnsiString:

int SetColumnWidth(int GNum, int CNum)  //GNum - индекс Grid (Grid[0]), ведь я их в коде создавал, а СNum - номер колонки
{
   int i=0;
   int ii=0;
   while (!DM->View_Total_Limit->Eof)
   {
      ii = strlen(   DM->View_Total_Limit->FieldByName("Object_Name")->AsString  );  // вот здесь ошибочка
      if (i<ii)   i=ii;
      DM->View_Total_Limit->Next();
   }
   ii = strlen("Object_Name");
   if (i<ii)   i=ii;
   return 7*i;
}

Буду благодарен.
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #1 : 13-04-2007 15:22 » new

По идее, компилятор все правильно тебе сказал. strlen() принимает в себя const char*, а AsString, скорей всего, возвращает значение типа AnsiString.
Для того, чтоб получить из AnsiString char* используй функцию-член c_str().
тоесть строка, в которой возникает ошибка, должна иметь вид
Код:
ii = strlen(   DM->View_Total_Limit->FieldByName("Object_Name")->AsString.c_str()  );
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines