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

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

Вопрос по работе компонента TDBGrid [D6, D7, WinXP]


Страницы:   1 2

alexvan ©   (2009-01-30 14:47:00) 

У меня на форме лежит компонент TDBGrid по ширине он превышает размер формы соответственно для удобства юзера я определил HOT KEYS для горизонтального скролла

procedure TFAllClients.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 try
   if (DBG.Focused) then
   begin
     if Msg.Message = WM_KEYDOWN then
     begin
       if (Msg.wParam=VK_END) OR (Msg.wParam=VK_RIGHT) then
       begin
         Msg.Message:=WM_HSCROLL;
         Msg.wParam:=SB_RIGHT;
         Msg.lParam:=0;
       end;
       if (Msg.wParam=VK_HOME) OR (Msg.wParam=VK_LEFT) then
       begin
         Msg.Message:=WM_HSCROLL;
         Msg.wParam:=SB_LEFT;
         Msg.lParam:=0;
       end;
     end;
   end;
 EXCEPT

 end;
end;

Всё это прекрасно работает но возникает одно но. При любом клике мышью в проскроленном вправо DBG происходит обратный скроллинг влево в начало текущей записи.
Как решить данную проблему? Спасибо


  (2009-04-17 10:03:00) [1]

Удалено модератором


alexvan   (2009-02-01 16:09:00) [2]

А вот этот код говорит о чём то? что крутится форма или грид? Или мы читаем только первые строчки а что дальше по барабану? Да впрочем и на дальнейшее пояснение особой конкретики не последовало за исключением Вас sniknikза что отдельное спасибо.
Кстати в DrawColumn достаточно написать одну строчку а не десяток


sniknik   (2009-02-01 14:57:00) [3]

> то ли грид больше формы и скрол у нее появляется.
вернее, описывалось как раз вот это. что есть бред, и естественная реакция "так делать нельзя".


sniknik   (2009-02-01 14:55:00) [4]

> Хотелось бы на будущее чтобы в получаемых ответах было больше конкретики
странно, все хотят конкретики, но сами себя ей не утруждают...
без "флудятины" из твоего вопроса было не понять то ли у тебя в гриде колонки не вмещаются то ли грид больше формы и скрол у нее появляется.

> если не знаешь ответ
вопрос - ответ это фаг.
а в форуме как раз самое интересное, не знать ответ, но разобраться и узнать его вместе с автором (а не решить/найти за него).


alexvan   (2009-02-01 14:22:00) [5]

Спасибо всем проблема решена именно так как требовалось клиенту. И как впрочем предполагал в одиночку

Хотелось бы на будущее чтобы в получаемых ответах было больше конкретики, на фига писать вообще, если не знаешь ответ, хотя тема с монитором мне очень понравилась - обязательно затрону её в офисе у клиента.
Думаю многим не будет особо приятно рыская по поисковым системам в запаре над каким то решением лопатить многоскринные ссылки с писаниной и флудятиной типа проблемы нет или предложением поменять монитор.

Удачи всем!


alexvan   (2009-02-01 00:09:00) [6]


> MsGuns ©   (31.01.09 17:50) [33]
>
> Я бы все-таки рекомендовал автору прислушаться к мнению
> тех, кто отвечал в этой ветке, не случайно ведь, что они
> так единодушны. Все они - люди с весьма немалым ПРАКТИЧЕСКИМ
> опытом проектирования и, главное, внедрения интерфейсов


Мой практический опыт не намного меньше. А насчёт вариантов - их было значительно больше чем 2, но ввиду того что что user воспитанию не подлежит приходится задавать подобные глупые вопросы и останавливать вариант на совершенно нерациональном решении (а сколько такой похожей лабуды в данном приложении, но как ни печально, клиент доволен и он заказывает свой праздник) , хотя наверное самый глупый вопрос это тот который не задан.


MsGuns   (2009-01-31 17:50:00) [7]

Я бы все-таки рекомендовал автору прислушаться к мнению тех, кто отвечал в этой ветке, не случайно ведь, что они так единодушны. Все они - люди с весьма немалым ПРАКТИЧЕСКИМ опытом проектирования и, главное, внедрения интерфейсов.

Если пользователь настойчив в своих претензиях, сделайте два варианта: одни - Ваш, второй - см.clickmaker ©   (30.01.09 15:59) [17] и соответственно возможность переключения режимов отображения. Берусь утверждать с почти 100% гарантией, что пользователь в конце концов остановит свой выбор на "короткой" сетке. Увы, но пользователя сплошь и рядом приходится еще и воспитывать, отучая его от "офисных" привычек :)


alexvan   (2009-01-31 12:10:00) [8]

Ну это уже вариант - спасибо.


sniknik   (2009-01-31 11:52:00) [9]

> И не при любом а только если свойства dgRowSelect и dgAlwaysShowSelection := true
только при dgRowSelect, другое не влияет, а при этом вся запись как бы представляется одной выделенной ячейкой, и получается вполне естественно, что новый показ этой ячейки при клике начинается с ее начала... а начало "за скролом".
а раз естественно то нафига с этим бороться? просто убери это свойство, а видимость объединения (отрисовку) делай сам... всего то в DrawColumnCell десяток строк написать.


alexvan   (2009-01-30 17:26:00) [10]


> При любом клике мышью в проскроленном вправо DBG происходит
> обратный скроллинг влево в начало текущей записи.
>
> скажи ему чтобы не кликал куда ни попадя. или вообще задисабли
> грид

И не при любом а только если свойства dgRowSelect и dgAlwaysShowSelection := true


alexvan   (2009-01-30 17:17:00) [11]

Если кому интересно - вот код
http://narod.ru/disk/5344257000/scroll.zip.html


Jeer   (2009-01-30 17:08:00) [12]


> alexvan ©   (30.01.09 17:06) [27]
>
> Да нет ребята надо именно то что описал. Спасибо всем -
> полагаю как обычно придётся решение искать в одиночку.
> <Цит


Да кто бы спорил - "Одинокие путники по дороге в никуда"
Очередной сериал.
Успеха !


alexvan   (2009-01-30 17:06:00) [13]

Да нет ребята надо именно то что описал. Спасибо всем - полагаю как обычно придётся решение искать в одиночку.


du_hast   (2009-01-30 16:58:00) [14]

А как такой вариант:
DBGrid сделать с влключающимися/выключающимис колноками и с возможностью их перетаскивания в любом порядке (класс вроде поддерживает такие возможности) - то что не влазит на экран отключать.
Если заказчику нужно сравнивать какието колонки - пускай их перетащит друг к другу.
Возможно автор не это хотел услышать (а именно ответ на поставленные вопрос).
Просто я раньше сталкивался с подобной проблемой и использовал выше описанный способ.


Медвежонок Пятачок   (2009-01-30 16:44:00) [15]

При любом клике мышью в проскроленном вправо DBG происходит обратный скроллинг влево в начало текущей записи.

скажи ему чтобы не кликал куда ни попадя. или вообще задисабли грид


Anatoly Podgoretsky   (2009-01-30 16:41:00) [16]

> alexvan  (30.01.2009 16:27:23)  [23]

Ну тогда заломи очень большую, экономически не обоснованую цену.


alexvan   (2009-01-30 16:27:00) [17]

Анатолий при всём уважении к тебе мне совершенно не до шуток.


alexvan   (2009-01-30 16:25:00) [18]

Неужели из кода не понятно что скролл идёт в активный компонент а в данном случае в фокусе DBGrid.


Anatoly Podgoretsky   (2009-01-30 16:23:00) [19]

> alexvan  (30.01.2009 16:05:18)  [18]

А ты предложи ему купить монитор M9 - это 3840х2400


alexvan   (2009-01-30 16:22:00) [20]

Да не скроллер формы а скроллер грида.


Страницы:   1 2

Наверх

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