Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

жаль, что нет желающих подсказать......


Наверх

Титульная страница Поиск, карта сайта Написать письмо