![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
checkbox в stringgrid [D7, XP]
dis12345 © (2012-02-12 23:48:00)на основе широко известного примера сделал чекбокс в stringgride, добавил кнопку добавления строки, удаления последней и текущей строк. Но когда количество строк превышает вертикальный размер области грида и появляется прокрутка - не происходит прокрутка чекбоксов, и свойство checked определяется неправильно. Не знаю, будет ли хорошим тоном вставить здесь весь текст исходника, укажу ссылку на проект http://narod.ru/disk/40523224001/CheckBoxInStrGr.rar.html
(212 кб) Если подскажите как это привести у работающему виду- буду очень благодарен :)
И еще один глюк- стоит уменьшить св-во stringgrid.height на 1 при добавлении строк- отрисовка вылетает....
Ega23 (2012-02-13 22:28:00) [1]TListView? TVirtualStringTree?
Юрий Зотов (2012-02-13 18:52:00) [2]
> sniknik © (13.02.12 18:11) [11]
> создан только один, который активный.
Тогда остается проблема со скролом.
Когда-то я делал DBGrid, у которого в ячейках могли быть и обычные кнопки, и переключатели, и радиокнопки, и чекбоксы. Вот этот компонент:
http://www.ee-enterprise.ru/i/?item=0
Так вот - там я все эти контролы именно рисовал (через DrawFrameControl) и обрабатывал клики по ним. Это гораздо проще, чем создавать в ячейках реальные контролы и мучиться со скроллом. И ресурсов жрет гораздо меньше.
sniknik (2012-02-13 18:11:00) [3]> Лучше чекбоксы просто рисовать.
насколько знаю/смотрел демо примеры, там так и делается, создан только один, который активный.
но как сделано в его "широко известном примере" ... вопрос, т.к. не приведен, а что у него в коде, не смотрел, ибо не показатель, чего он там "набагокодил".
Юрий Зотов (2012-02-13 18:02:00) [4]> Это не доп компонент-стандартный стрингрид и чекбокс
Нехороший подход. Во-первых, создаются чекбоксы, а это лишний расход ресурсов. Во-вторых, очевидные проблемы со скроллом.
Лучше чекбоксы просто рисовать. Например, вот это не подойдет ли:
http://delphi.about.com/od/vclusing/l/aa072203a.htm
dis12345 (2012-02-13 15:21:00) [5]2 Плохиш
Спасибо, к большому сожалению нихт ферштейн совсем ничего :)
Плохиш (2012-02-13 15:15:00) [6]
> Подскажите что означает :
> if (gdFocused in State) then
Вот в справке всё расписано, что не понятно?
Der Typ TGridDrawState enthält Informationen, die mit der Darstellung der Gitterzelle zu tun haben.
Unit
Grids oder QGrids
Delphi-Syntax:
type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
C++ Syntax:
enum Grids__3 { gdSelected, gdFocused, gdFixed };
typedef Set TGridDrawState;
Beschreibung
TGridDrawState enthält Statusinformationen für die Zelle eines Gitters, die dargestellt werden soll. TGridDrawState kann einen oder mehrere der folgenden Werte annehmen:
Wert Bedeutung
gdSelected Die Zelle ist aktuell ausgewählt.
gdFocused Die Zelle besitzt den Eingabefokus.
gdFixed Die Zelle befindet sich im festen Bereich des Gitters.
sniknik (2012-02-13 14:12:00) [7]> Подскажите что означает :
> if (gdFocused in State) then
проверка на то что рисуется ячейка "в фокусе", т.е. фактически текущая.
dis12345 (2012-02-13 14:07:00) [8]Это не доп компонент-стандартный стрингрид и чекбокс.
В широко известном примере фиксированное кол-во строк и не изменяется, мне надо это значение корректировать (добавлять строку, удалять последнюю, и текущую).
Модифицировать пример для работы в случае когда появляется вертикальный scroll не смог....
Чекбокс создается как объект строки грида, но скроллом не прокручивается....
Подскажите что означает :
if (gdFocused in State) then
еслиб знал все основательно сам, не спрашивал бы советов гуру....
sniknik (2012-02-13 13:53:00) [9]> компонент этот напрочь глючный
не компонент, пример. а пример обычно не для использования, а для понимания как делать. самому.
Юрий Зотов (2012-02-13 13:52:00) [10]Дык... а что тут можно подсказать? Судя по описанным Вами ошибкам, компонент этот напрочь глючный и надо или писать свой, или искать другой готовый.
sniknik (2012-02-13 13:52:00) [11]по поводу
> stringgrid.height - 1
а checkbox.height - 1 делаешь?
sniknik (2012-02-13 13:50:00) [12]а что тут подсказывать? в "широко известном примере " проблема есть? ну вот, сравни, что не так, где накосячил. а проверять/трассировать за тебя твой код кому охота?
dis12345 (2012-02-13 13:32:00) [13]жаль, что нет желающих подсказать......