![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
глюк StringGrid [D7, XP]
VikOss © (2011-03-26 16:26:00)Кто знает как исправить "глюк" в StringGride - при клике на нижнюю часть видимой области - если там есть лишь часть прорисованной ячейки, он автоматически прокручивает эту ячейку-делает видимой полностью(что правильно), но при этом выделяет кучу ячеек о чём его никто не просит! Короче коряво до ужаса скроллинг работает...
VikOss (2011-03-27 12:17:00) [1]
> ээээ.... а выставление одной опции в дизайн тайм предложенное
> в [12]... не?
>
Да , очень хорошо работает вместе с предложенным мною.
VikOss (2011-03-26 22:22:00) [2]
> Ещё и потому, что многие предпочитают вместо StringGrid
> использовать TListView
Не зря они в разных компонентах - не все задачи, скажем так-удобно, делать в ЛистВью, представляю себе реализацию таблицы с шапкой и комбобоксами в ячейках для редактирования, и это при том, что это НЕ основная задача в проекте ;)
VikOss (2011-03-26 22:18:00) [3]
> ээээ.... а выставление одной опции в дизайн тайм предложенное
> в [12]... не?
Не, это не во всех случаях, короче посмотрю уже завтра, уходить надо. Спасибо ВСЕМ за внимание. Мож кому поможет...
Германн (2011-03-26 22:09:00) [4]
> Я понял почему этот глюк мало кто замечал
Ещё и потому, что многие предпочитают вместо StringGrid использовать TListView.
sniknik (2011-03-26 22:08:00) [5]> самое простое что пришло на ум
ээээ.... а выставление одной опции в дизайн тайм предложенное в [12]... не?
VikOss (2011-03-26 22:01:00) [6]Да, в завершение темы, если кто в бедущем "наткнётся" самое простое что пришло на ум, может поможет:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
R: TRect;
G,V: integer;
begin
G:=StringGrid1.LeftCol+StringGrid1.VisibleColCount;
V:=StringGrid1.TopRow+StringGrid1.VisibleRowCount;
if (ACol+1<=G)and(ARow+1<=V) then begin
...Рисуем ваш контрол, ну или делаем что...
end иначе ПРЯЧЕМ :)
Тогда при изменении размеров формы не будут "повисать" в воздухе ваши комбобоксы ;)
ПыСЫ: Код "на лету" если есть лучше, пишите, думаю ещё народ столкнётся с этой проблемой...
Smile (2011-03-26 21:54:00) [7]Мне показалось (надо заметить уже давно), что sniknikчасто "экономит" в окончаниях на "ь"
типа "перестаеш"
:)
VikOss (2011-03-26 21:37:00) [8]
> т.к. функционалу больше, но узнав перестаеш отвлекаться
> на "велосипеды".
Что-то в этом есть, датасетов небоюсь ;-), просто как многие программеры ленив и не хочется для обычных текстовых операций лишние движения делать, а так да, с вами согласен.
В общем всем спасибо, видно с "простыми" компонентами профи не работают, а у молодёжи требования не высокие, так, лабу сдал и забыл ;).
Я понял почему этот глюк мало кто замечал, много инфы, как например вставить в ячейку какой нить контрол - круто, а как на профессиональном приложении, при работе реального человека, на разных разрешениях, в разных режимах открытия окна и т.д., это многих не грузит...
sniknik (2011-03-26 21:28:00) [9]> но много возни по моему представлению,
дело привычки, и вообще удобнее, т.к. если есть данные то их нужно обрабатывать сортировки/фильтры/объединения... и т.д.
> или есть простой способ, без датасетов ???
нет. без датасетов нельзя, но с ними работать чаще проще чем со стринггридом... да больше нужно знать, т.к. функционалу больше, но узнав перестаеш отвлекаться на "велосипеды".
Leon-Z (2011-03-26 21:06:00) [10]А чем тебе не нравится мое предложение.
Самое простое.
Установить шаг для VertScrollBar ????
Это же можно сделать в design-time !!!
Настраивай себе компонент как угодно и все :)
VikOss (2011-03-26 21:02:00) [11]
> счастье, что не пользуюсь StringGrid-ом... заменил на DBGrid
Интересно, но много возни по моему представлению, или есть простой способ, без датасетов ???
VikOss (2011-03-26 20:58:00) [12]Не, ну вывернуться из положения разумеется можно, я спросил может кто знает конкретное и элегантное решение, а то не знаешь в какой момент какой компонент понадобится а тут раз и ... - переписывать все компоненты под себя круто но не всегда благодарно... ;-)
sniknik (2011-03-26 20:56:00) [13]счастье, что не пользуюсь StringGrid-ом... заменил на DBGrid.
решение может быть таким...
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StringGrid1.Options:= StringGrid1.Options - [goRangeSelect];
end;
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StringGrid1.Options:= StringGrid1.Options + [goRangeSelect];
end;
хотя, может добавить других проблем... с выделением например. если оно не нужно имеет смысл вообще убрать опцию.
Leon-Z (2011-03-26 20:48:00) [14]А Вы попробуйте для VertScrollBar задать шаг перемещения кратный высоте ячейки StringGrid'а ???
Тогда половина или часть ячейки никогда не появится :))
VikOss (2011-03-26 20:35:00) [15]Это очень между прочим неприятно, если теперь нарисовать что-нить в ячейке типа Комбобокса, то эффект просто фантастик! Кстати только у "буржуев" нашёл подобную жалобу, наши чё-то не замечают !?
Германн (2011-03-26 20:25:00) [16]Есть глюк. Подверждаю.
VikOss (2011-03-26 19:57:00) [17]
> А у меня такого "глюка" почему-то не наблюдается. М.б. у
> меня StringGruid неправильный?
Создайте ситуацию как на рисунке и кликните на нижнюю "полувидимую" строку.
VikOss (2011-03-26 19:55:00) [18]http://file.qip.ru/photo/eqnI-nDD/11_online.html
Amoeba_ (2011-03-26 19:50:00) [19]
> "глюк" в StringGride
А у меня такого "глюка" почему-то не наблюдается. М.б. у меня StringGruid неправильный?
VikOss (2011-03-26 19:45:00) [20]Господа, вы попробуйте то что я написал, а потом ехидничайте...