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 происходит обратный скроллинг влево в начало текущей записи.
Как решить данную проблему? Спасибо


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

> alexvan  (30.01.2009 15:55:15)  [15]

Ну у меня пошире гриды и ничего, а уж пр гриды бухгалтеров молчу. И никаких скроллеров формы, ты где подобное еще видел?


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


> выводи в гриде только ключевые поля.
> Остальные - в отдельном окне (панели, фрейме) под гридом
> вертикально. С возможностью скрытия этого окна или показа
> модально при даблклике


Да я бы с удовольствием это сделал. Просто у меня специфический клиент и хоть ты тресни ему надо что бы подметали ломом а не метлой. Вот и приходится гинекологию через рот проводить а зубы через задницу лечить. Не могу я отойти от этого варианта.

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


clickmaker   (2009-01-30 15:59:00) [23]

> [15] alexvan   (30.01.09 15:55)

выводи в гриде только ключевые поля.
Остальные - в отдельном окне (панели, фрейме) под гридом вертикально. С возможностью скрытия этого окна или показа модально при даблклике


alexvan   (2009-01-30 15:59:00) [24]


> > alexvan  (30.01.2009 15:31:08)  [8]
>
> Ну и зачем эдесь скроллер и форма шире экрана, когда 180+170=350
> пкс.
> Кто то , что то нам на уши вешает


Сорри здесь неправильно объяснил - естественно не 180 и 170 а предположим 280 и 270


alexvan   (2009-01-30 15:55:00) [25]

Анатолий! Вы тоже не правильно поняли
Вот сам компонент
 object DBG: TexDBGrid
   Left = 5
   Top = 25
   Width = 1581
   Height = 576
   Options = [dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
   OnDrawColumnCell = DBGDrawColumnCell
   OnGetHeaderText = DBGGetHeaderText
   OnGetHeaderRect = DBGGetHeaderRect
   SubHeader = True
   AllowColumnMoved = False
   FixedCols = 0
   Columns = <
     item
       Alignment = taCenter
       Expanded = False
       FieldName = 'CONTR_BOSS'
       Title.Alignment = taCenter
       Title.Caption = '('#1093')'
       Title.Font.Charset = DEFAULT_CHARSET
       Title.Font.Color = clBlack
       Title.Font.Height = -11
       Title.Font.Name = 'Tahoma'
       Title.Font.Style = [fsBold]
       Width = 20
       Visible = True
     end
     item
       Width = 38
     end
     item
       Width = 140
     end
     item
       Width = 160
     end
     item
       Width = 60
     end
     item
       Width = 150
     end
     item
       Width = 230
     end
     item
       Width = 20
     end
     ... ну и так далее ещё штук 20 полей суммарные их Width где то 2500 пкс

Разрешение моего экрана 1920х1200 DBGrid лежит на форме шириной 1600, что необходимо по желанию клиента для его экрана.


Anatoly Podgoretsky   (2009-01-30 15:54:00) [26]

> alexvan  (30.01.2009 15:31:08)  [8]

Ну и зачем эдесь скроллер и форма шире экрана, когда 180+170=350 пкс.
Кто то , что то нам на уши вешает


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

Как решить данную проблему?

Для начала понять, что такой проблемы нет.


alexvan   (2009-01-30 15:42:00) [28]

Для тех кто в танке попробую иначе сформулировать задачу

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


alexvan   (2009-01-30 15:37:00) [29]

Уважаемый! Вы вообще-то работали с TDBGrid? И представляете себе о чём речь идёт?


Anatoly Podgoretsky   (2009-01-30 15:36:00) [30]

> alexvan  (30.01.2009 15:08:02)  [2]

Задача имеет решение, но оно не программное, а аппаратное - надо заменить монитор на монитор с большим расширением, например 1920х1200 , формата 16х10
Бухгалтера писают от счастья.


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

И чего?
Юзер при этом повернув голову вправо и приблизив ее вплотную с экрану видит невидимые  правые колонки грида за пределами правой границы формы?


alexvan   (2009-01-30 15:31:00) [32]

Странные вещи приходится объяснять. Форма ширина - 400 пкс
Грид ширина - 380 пкс. Поля в гриде фиксированные
2 штуки например 180 и 170 пкс.


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

Зачем грид шире формы?


alexvan   (2009-01-30 15:22:00) [34]

Блин! Cуммарная ширина полей > чем ширина экрана или DBGrid.ClientWidth это понятно? Нафиг в противном случае скроллить грид тогда уж я про форму бы спрашивал


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

больше чем влезло по ширине формы он не увидит.
зачем грид шире формы?


alexvan   (2009-01-30 15:13:00) [36]

То есть это диктует то количество информации которое одновременно хочет видеть клиент и то как он себе представляет экранную форму.
Я задал вопрос конкретный вроде бы, а тонкости тех. задания совершенно не относятся к делу. Если решения нет, то флуд вроде мы не уместен. Или я не прав?


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

то есть это клиент тебе сказал сделать грид шире формы?


alexvan   (2009-01-30 15:08:00) [38]

Если бы это устраивало клиента - давно бы уж сделал и сюда бы не обращался. Нужна не переделка грида под упрощение задачи а решение конкретно поставленной задачи


Медвежонок Пятачок   (2009-01-30 14:56:00) [39]

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


Страницы:   1 2

Наверх

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