Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 218
от 24.08.2005, 01:36

Администратор:Калашников О.А.
В рассылке:Подписчиков: 224, Экспертов: 40
В номере:Вопросов: 3, Ответов: 5


Вопрос № 25030: Всем привет! Как в определённую ячейку TListView/TJvListView вставить TComboBox? Спасибо....
Вопрос № 25036: Здравствуйте, уважаемые эксперты! У меня вопрос по работе Delphi с OpenGl. Короче, я сделал шаблон инициализации OpenGl, как было сказано в одной умной книге, программа компилируется без ошибок, но на экране ничего не отображает. Такое ощущен...
Вопрос № 25052: Здраствуйте ув эксперты. НА днях пришлось написать БД. Столкнулся с одной проблемой-это вычисляемые поля. Сделал всё так как писалось в учебники но у меня это вообще не действует!!!Записал в обработчик OnCalcFields: Table1ostatok.valu...

Вопрос № 25.030
Всем привет!
Как в определённую ячейку TListView/TJvListView вставить TComboBox?
Спасибо.
Отправлен: 18.08.2005, 14:52
Вопрос задал: Ерёмин Андрей (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zubex
Здравствуйте, Ерёмин Андрей!
Чтобы не создавать свой компонент могу предложить следующий способ (довольно универсальный):
на форму кроме ListView положить ComboBox и сделать ComboBox.Visible:=False;
Далее при выборе двойным кликом переместить этот сомво на требуемую ячейку и сделать его видимым, а при выборе из сомво - скрывать его.
Что-то похожее в приложении, далее можно извращать как хочешь!!!

Приложение:

Ответ отправил: Zubex (статус: 1-ый класс)
Отправлен: 19.08.2005, 11:23

Отвечает: Denisss
Здравствуйте, Ерёмин Андрей!
Вставить ComboBox в ListView возможно, но безумно сложно :)
Я бы Вам рекомендовал воспользоваться другим компонентом, также похожим на ListView, но называемым StringGrid, либо ListBox.
Дело в том, что у комбобокса есть такое свойство, как минимальная высота.
Попробуйте, например, установить ComboBox.Height:= 10; и Вы увидите сами. Иначе говоря, Вам придется многое учесть при использовании ListView (например, необходимо установить высоту строки не менее 21).
А у StringGrid есть свойство DefaultRowHeight, которую можно установить в нужное нам значение. Или, по крайней мере, можно установить Row.Height нужного нам ряда в нужное значение.
Ниже приведен пример вставки ComboBox в первый ряд StringGrid'a.
Для того, чтобы код заработал, надо установить на форму ComboBox (настроить его по желанию) и Выставить следующие свойства у компонента StringGrid1:
FixedCols = 0;
ColCount > 0;
RowCount > 1;
DefaultRowHeight > 21;

Приложение:

Ответ отправил: Denisss (статус: Студент)
Отправлен: 19.08.2005, 12:23
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ, всё работает. Однако требуется использовать именно ListView, т.к. у StringGrid'а нет некоторых его возможностей и работает он по-другому...


Вопрос № 25.036
Здравствуйте, уважаемые эксперты!
У меня вопрос по работе Delphi с OpenGl.
Короче, я сделал шаблон инициализации OpenGl, как было сказано в одной умной книге, программа компилируется без ошибок, но на экране ничего не отображает. Такое ощущение, как-будто она не может создать контекст или не может сделать его текущим.
Ниже прилагается исходник, пожалуйста подскажите где может быть ошибка (может Delphi надо правильно настроить или в программе что-то не то).
З.Ы. OpenGL системой поддерживается (потому что я попробовал написать такую-же программу на Visual C++, и она работает как надо).
Заранее спасибо.

Приложение:

Отправлен: 18.08.2005, 15:54
Вопрос задал: Велислав (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Каров Велислав Андреевич!
Может быть проблема в том, что Вы слишком сложно получаете контекст воспроизведения и рисуете где попало? :)
Можно сделать проще, работая непосредственно с канвасом формы (см. приложение).
Рисование чего бы то ни было перенесите из процедуры создания формы в процедуру ее перерисовки (OnPaint).
А с точки зрения синтаксиса вроде бы все верно. :)

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 18.08.2005, 17:56

Отвечает: Denisss
Здравствуйте, Каров Велислав Андреевич!
Если Вы пользовались книгой М.Краснова, то могли бы заметить, что после отрисовки обязательно необходимо освободить контекст. Если не ее читали, то рекомендую ее почитать.
Контекст освобождается так: wglMakeCurrent(0, 0);

Кроме того, нет необходимости получать DC формы через GetDC(H), гораздо проще получить ее через Canvas.Handle. Да и зачем вводить лишние переменные (DC, H) мне также не понятно.
Вместо DC можно в любом месте (внутри методов, функций и процедур формы) использовать Canvas.Handle, а вместо H использовать Handle.
Ответ отправил: Denisss (статус: Студент)
Отправлен: 19.08.2005, 13:00


Вопрос № 25.052
Здраствуйте ув эксперты.
НА днях пришлось написать БД.
Столкнулся с одной проблемой-это вычисляемые поля.
Сделал всё так как писалось в учебники но у меня это вообще не действует!!!Записал в обработчик OnCalcFields:
Table1ostatok.value=table1prihod.value-table1rashod.value
и
нечего не происходит пробовал в другие обработчики.
Испарвьте мои ошбки конечно чтобы прога работала.

Приложение:

Отправлен: 18.08.2005, 22:34
Вопрос задал: newinfo2005 (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, newinfo2005!
Еще было бы неплохо написать, как именно Вы создали вычисляемое поле. :)
В принципе там нет ничего сложного. В редакторе полей создать новое поле, назначить его вычисляемым, обозвать, присвоить ему тип (например Numeric) и, в принципе, все.
Еще посмотрите, включено ли у Вас свойство AutoCaicFieids. Если оно равно False, то вычисления в событии OnCalcFields не проводятся, а если True, то проводятся.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 19.08.2005, 05:19
Оценка за ответ: 5
Комментарий оценки:
Ой,спасибо!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное