C++ Builder 2006. Имеется БД Access, подключенная к Builder C++ через ADOConnection, ADOTable и DataSource. Необходимо вывести базу данных на форму не используя компонент dbgrid. То есть оформить вывод так как я хочу.
Логично, что нужно динамически генерировать элементы и в них записывать значения из полей таблицы. Часть того как я делаю:
for (int i = 1; i <= ADOTable1->RecordCount; i++) {
Btn[i] = new TButton(UserMain);
Btn[i]->Parent = UserMain;
Btn[i]->Left = 240 + (220 * (i - 1)) * c;
Btn[i]->Top = k * 270;
Btn[i]->Name = "Button" + IntToStr(i);
Btn[i]->Caption = "Подробнее";
}
В цикле так же генерируются и прочие элементы, но меня интересует именно Button Количество этих кнопок меняется в зависимости от БД. Как на них навесить обработчик события клика, чтобы при этом выводилось разное сообщение в зависимости от кнопки?
Пробую сделать через обычную функцию, для проверки в качестве параметра передаю просто индекс:
void showAbout(int i) {
ShowMessage(i);
}
//и в предыдущем цикле такое:
Btn[i]->OnClick = showAbout(i);
Но это выдает ошибку [C++ Error] Unit2.cpp(73): E2109 Not an allowed type
При создании пометьте во вспомогательном поле - какой индекс имеет кнопка
Btn[i]->Tag = i;
Назначьте всем кнопкам один обработчик (обычную функцию нельзя - это должен быть метод объекта, соответствующий прототипу)
Btn[i]->OnClick = DynButtonClick;
А уже внутри обработчика смотрите Tag Sender-а и в зависимости от него что-то делайте
P.S. Вообще идея генерировать набор контролов на каждую запись БД - сомнительная. StringGrid-ом или TListView нельзя обойтись?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
пытаясь создать функцию которая бы выдавала случайное простое число, я получаю следующие ошибки при компиляции:
Студенческая задачка, дословно звучит так: Разработка программы "Кроссворд"Программа автоматически генерирует кросворд по определенной...
Помогите с написание метода: найти максимальное и минимальное значение и найденным максимальным значением заменить все нечетные значения...