Вопрос № 67998: Всем привет.
Пишу в Borland C++ Builder 6.0.
Задача такова. Есть ListBox, необходимо сделать доступным перетаскивание строк в нем, аля WinAmp. Полагаю, что подходить нужно со стороны Drah'n'Drop, но раньше работать с ним не приходилось и &quo...Вопрос № 68079: наверное вопрос чуть-чуть не по теме.
Мне нужно написать программу на С++, которая записывала данные в формате xls (ms excel). Лучше без участия самой программы, а как-то напрямую. Нужно назначить формат ячейкам и внести некоторые данные. Встреча...Вопрос № 68111: Доброго времени суток, уважаемые эксперты!
Есть программа, оперирующая с файлами записей.
Вроде всё сделал как надо, но что-то записывается неправильно. Т.е. при просмотре выдаёт совершенно не то.
Укажите, пожалуйста, где ошибка и как мож...
Вопрос № 67.998
Всем привет.
Пишу в Borland C++ Builder 6.0.
Задача такова. Есть ListBox, необходимо сделать доступным перетаскивание строк в нем, аля WinAmp. Полагаю, что подходить нужно со стороны Drah'n'Drop, но раньше работать с ним не приходилось и "подойти" никак не удается.
Буду очень признателен за любую информацию необходимую для решения этой задачи.
Отправлен: 21.12.2006, 14:09
Вопрос задал: Юра (статус: 2-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tek
Здравствуйте, Юра!
В данном случае технология d'n'd не совсем подходит или даже совсем не подходит, так как она подразумевает перетаскивание объектов между окнами, у вас же одно окно.
Возможно я и не прав и d'n'd или что-нибудь на нее похожее можно использовать в вашем случае с компилятором Borland, но я бы вам посоветовал просто обрабатывать события типа WM_LBUTTONDOWN, WM_LBUTTONUP и WM_MOUSEMOVE, одновременно определяя како-либо признак того что строчка была захвачена и мышка двигается в пределах ListBox.
Правда если мне не изменяет память в Builder'е есть event'ы типа OnStartDrag и OnEndDrag - можно поробоватьи с ними (по идее эти ивенты должны присутствовать у любого интерфейсного объекта от формы и до button'а)
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 4-ый класс)
Ответ отправлен: 21.12.2006, 14:28
Вопрос № 68.079
наверное вопрос чуть-чуть не по теме.
Мне нужно написать программу на С++, которая записывала данные в формате xls (ms excel). Лучше без участия самой программы, а как-то напрямую. Нужно назначить формат ячейкам и внести некоторые данные. Встречали ли Вы подходящие библиотеки с открым кодом? Может быть есть где-нибудь описание спецификации?
С наступающим!
Отвечает: Vaga
Здравствуйте, Александр Лагий!
Надо копать в сторону OLE. В приложении код для BCB.
Приложение:
--------- Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 6-ой класс)
Ответ отправлен: 22.12.2006, 05:03 Оценка за ответ: 4 Комментарий оценки: Мне кажется, я что-то подобное уже делал. Для формирования книги использовал модель ADODB. Правда программа была на Visual Basic. Работает это очень медленно. Хотя пользоваться этим достаточно просто. Надо учесть, что на машине должен быть установлен офис. В данной задаче, каких то особенных функций мне не нужно использовать, только вывести текст, числа в
ячейки, назначить обрамление у ячеек да объединить. Хотя нет еще нужно изменить некоторые параметры листа. Похожий проект я нашел на codeproject.com. Но пока не разобрался. Этот механизм уже реализован в 1С. Тоже так охота. Vaga, спасибо за совет и за пример.
Вопрос № 68.111
Доброго времени суток, уважаемые эксперты!
Есть программа, оперирующая с файлами записей.
Вроде всё сделал как надо, но что-то записывается неправильно. Т.е. при просмотре выдаёт совершенно не то.
Укажите, пожалуйста, где ошибка и как можно её исправить?
Отвечает: John Paramol
Здравствуйте, Mini Cooper!
Как обычно, неправильно используется cscanf.
У вас ошибки в строках 48,49:
cscanf("%s", &rec.name);
cscanf("%s", &rec.type);
При считывании строки ("%s") не нужно передавать
указатель на указатель на строку. Я имею ввиду,
например, rec.name уже является указателем.
А в строке 63: cscanf("%d", n);
Забыли передать указатель на n.
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 5-ый класс)
Ответ отправлен: 23.12.2006, 10:10 Оценка за ответ: 5 Комментарий оценки: Да, именно то, что надо! Спасибо! Как всегда, подводит невнимательность.