Вниз
Скачать: CL | DM;

DBGrid и ScrollBar   Найти похожие ветки 

← →
alex-2011h   (2011-11-18 15:42) [0]

Доброго дня.
Есть два компонента DBGrid, расположенные один под другим. Можно ли привязать перемещение ScrollBar одного компонента к другому, т.е перемещаешь у одного и синхронно перемещается у другого, а лучше спрятать в DBGrid  ScrollBar (ы) и привязать перемещение строк (столбцов) к отдельным компонентам ScrollBar. Спасибо.


← →
Jeer ©   (2011-11-18 15:56) [1]

А какой смысл в двух одинаковых гридах ( датасетах ) ?


← →
alex-2011h   (2011-11-18 15:59) [2]

Выводится однотипная информация, но с разными фильтрами.


← →
OW ©   (2011-11-18 16:18) [3]

SendMessage(DBGRID1 .Handle, WM_VSCROLL, SB_LINEDOWN, 0);

   ScrollCode: Word; {SB_BOTTOM, SB_ENDSCROLL, SB_LINEDOWN, SB_LINEUP,
                      SB_PAGEDOWN, SB_PAGEUP, SB_THUMBPOSITION,
                      SB_THUMBTRACK, SB_TOP }


← →
Jeer ©   (2011-11-18 16:36) [4]

Ну хорошо, в одном гриде все женщины, во втором все мужчины - в чем смысл "синхронного" перемещения скрулов ?


← →
OW ©   (2011-11-18 16:37) [5]


> в чем смысл "синхронного" перемещения скрулов ?

присоединяюсь к вопросу, просто, интересно


← →
clickmaker ©   (2011-11-18 16:44) [6]

> в одном гриде все женщины, во втором все мужчины - в чем
> смысл "синхронного" перемещения скрулов ?

подобрать пару, если они отсортированы по возрасту -)


← →
Jeer ©   (2011-11-18 16:48) [7]

Я бы диапазон возрастов пожелал :)


← →
alex-2011h   (2011-11-18 19:22) [8]

В одном гриде один склад, в другом - другой. Желательно смещение синхронное по горизонтали, чтобы сравнивать информацию по столбцам.


← →
alex-2011h   (2011-11-18 20:32) [9]

OW. Спасибо за подсказку. Ещё бы хотелось узнать в какое событие грида1 надо включить эту строку "SendMessage(DBGRID1 .Handle, WM_VSCROLL, SB_LINEDOWN, 0);", чтобы при горизонтальном скролинге грида1 синхронно происходил скролинг грида2 (и наоборот :) )


← →
Медвежонок Пятачок ©   (2011-11-18 21:07) [10]

жестокий садизм заставлять юзера глазеть в два грида и что-то там сравнивать. пусть даже синхронизированное.

один-то грид почему не использовать?


← →
alex-2011h   (2011-11-18 22:31) [11]

Медвежонок Пятачок
Я задавал вопрос про секционированный DbGrid. Предложение "Смотри тему "древовидный справочник", как в 1С." меня, увы, не порадовало, когда я понял, что моих знаний не хватит для реализации такого компонента, но данный компонент мне желателен. Поэтому я реализовал нечто подобное используя пару компонентов Panel и двух DBGrid. Используя свойство Visible я добился, что если на одном складе нет товаров, то соответствующие панель и грид исчезают с экрана. Размер гридов изменяется в зависимости от количества товаров на складе, но, естественно, в пределах возможности экрана. Но сравнить артикулы, даты поступления и т.п. товаров, расположенных на разных складах удобно, когда столбцы синхронизированы. Можно, конечно, выводить дополнительную колонку "Склад", но мне больше нравится, когда таблица разбита на две части, каждая из которых имеет свой заголовок.


← →
Jeer ©   (2011-11-18 23:35) [12]

Очередной бред от DB-умалишенного, увы.


← →
Германн ©   (2011-11-19 01:18) [13]


> Jeer ©   (18.11.11 23:35) [12]
>
> Очередной бред от DB-умалишенного, увы.

Зачем такая резкая оценка, тёзка?


← →
sniknik ©   (2011-11-19 09:54) [14]

вообще, нормальная задача... за реализацию не знаю, не вижу как выглядит.

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


← →
sniknik ©   (2011-11-19 10:59) [15]

синхронизацию (по одному событию для примера)  можно сделать так например
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, DBGrids, DB, ADODB;

type
 TDBGrid = class(DBGrids.TDBGrid)
 private
   procedure WMVScroll(var Mes: TWMVScroll); message WM_VSCROLL;
 end;

 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   DBGrid2: TDBGrid;
   ADOConnection1: TADOConnection;
   ADODataSet1: TADODataSet;
   ADODataSet2: TADODataSet;
   DataSource1: TDataSource;
   DataSource2: TDataSource;
   procedure FormCreate(Sender: TObject);
 private
 public
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TDBGrid.WMVScroll(var Mes: TWMVScroll);
begin
 if Tag <> 0 then
   with TMessage(Mes) do
     PostMessage(Tag, Msg, wParam, lParam);
 inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DBGrid1.Tag:= DBGrid2.Handle;

 ADODataSet1.Open;
 ADODataSet2.Open;
end;

end.


← →
SQLEX ©   (2011-11-19 21:34) [16]

на правах OW думаю проще сделать

select ГС.*, ДС.СколькоТовара
from ГлавныйСклад ГС
(left ) join ДругойСклад ДС on ГС.артикл_товара = ДС.артикл_товара

и в одном гриде показывать


← →
Jeer ©   (2011-11-19 22:19) [17]


> Германн ©   (19.11.11 01:18) [13]
> Зачем такая резкая оценка, тёзка?


Народ, пытается изобрести свои "велосипеды" в той части обработки данных, которая давно получила решения в реляционном способе, задавая, при этом, вопросы по их конструкции без знания этих основ.

P.S.
Если, какой-либо автор топика, попробует обосновать свой "велосипед" для запуска человека в космос, основанный на способе Мюнхаузена - как к нему относиться ?

Правильно: либо как к сказочнику, либо как лишенному знаний в это области, т.е., область-умалишенному.


← →
sniknik ©   (2011-11-19 22:53) [18]

> и в одном гриде показывать
можно и в двух... разные поля, общим даасоурсом, в одном гриде видимые сделать поля от одной база, в другом от другой.
вертикальная синхронизация будет идеальна...
с горизонтальной придется чуток помудрить... (только скролом не обойдешься, нужно еще чтобы размеры полей были одинаковы/синхронно менялись... иначе будет криво)


← →
Jeer ©   (2011-11-19 23:20) [19]


> sniknik ©   (19.11.11 22:53) [18]
>
> > и в одном гриде показывать
> можно и в двух...


Можно и в большем числе гридов показывать связанные данные.
При чем тут способ "синхронизации" через Scroll - до сих пор не пойму.


← →
Dennis I. Komarov ©   (2011-11-19 23:47) [20]

Синхронизировать, сравнить и т.д. и т.п. - вполне достаточно одной процедуры, чтобы привести к норме или показать разницу в датасетах. А подобная реализация требует очень весомых оснований, коих пока нет, а посему - бред.


← →
sniknik ©   (2011-11-19 23:54) [21]

> При чем тут способ "синхронизации" через Scroll
какая разница? ну придумал он так. придумает по другому, переделает, а опыт скрола/событий с ним глядишь и пригодится.

> а посему - бред.
ага, понятно - не понимаю поэтому бред.
ну так уверяю ты еще много чего не понимаешь, и оснований тебе предоставлять ко всему никто не будет.


← →
Dennis I. Komarov ©   (2011-11-20 00:00) [22]


>  и оснований тебе предоставлять ко всему никто не будет.

А я настаиваю? Придумал - пущай катается...


← →
Jeer ©   (2011-11-20 01:33) [23]


> ну так уверяю ты еще много чего не понимаешь,


"Не смеши мою мошонку" (С)


← →
alex-2011h   (2011-11-20 21:11) [24]

Да, уважаемые господа мастера... Слов нет. Мало у меня знаний помогите, если можете. Неправильно пытаюсь решить задачу - подскажите правильный путь. Ведь для того и обращаются к вам новички. Не желаете помогать - тоже вариант, но взять и поиздеваться или обложить человека... Причём я почитал и другие посты - такое встречается неоднократно. А как же упоминание на форуме для новичков - "Мастера будьте снисходительны...". Я справлюсь в итоге и без вашей помощи, пороюсь в интернете или литературе, да это будет дольше и не раз споткнусь. Но ... Мастерами называют людей, передающих свои знания ученикам. Человек, который не может корректно и по существу ответить на вопрос не может называться мастером. Программистом, профессионалом - да, но не мастером.


← →
Inovet ©   (2011-11-20 21:23) [25]

> [24] alex-2011h   (20.11.11 21:11)

Тебе и помогают, только читай без эмоций.


← →
Сергей М. ©   (2011-11-20 21:25) [26]


> alex-2011h   (20.11.11 21:11) [24]


> Неправильно пытаюсь решить задачу - подскажите правильный
> путь


Так тебе уже подсказали : затея с кучей мелькающих перед глазами юзера гридов, отражающих одну и ту же сущность - изначально тупиковая.

Слева - поле "Номенклатура".
Далее следуют N полей по одному на каждый существующий склад.


← →
sniknik ©   (2011-11-20 21:34) [27]

> затея с кучей мелькающих перед глазами юзера гридов, отражающих одну и ту же сущность - изначально тупиковая.
ну где же куча когда всего 2, + построчное сравнение документа со старым/по версиям в SVN, зря сделали, изначально тупиковое, нужно убрать...


← →
Сергей М. ©   (2011-11-20 21:40) [28]


> где же куча когда всего 2


Тем более)

Было бы 200 - тогда результаты кросс-запроса и вправду тяжеловато было бы визуализировать в одном гриде.

А всего-то два склада - это ж курам на смех..


← →
Jeer ©   (2011-11-20 22:35) [29]


> Неправильно пытаюсь решить задачу


Это очевидно.
Расскажи о задаче подробнее, тогда и получишь адекватный ответ ( совет ).



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.006 c
2-1321616574
alex-2011h
2011-11-18 15:42
2012.02.26
DBGrid и ScrollBar


3-1272008503
Kobylyansky
2010-04-23 11:41
2012.02.26
Firebird+многопоточность


2-1320762578
я
2011-11-08 17:29
2012.02.26
Вывод сообщения на экран


2-1321864635
megagenom
2011-11-21 12:37
2012.02.26
Мониторинг свободного пространства на удаленном сервере.


2-1321607338
TeaNick
2011-11-18 13:08
2012.02.26
Проверка принадлежности перечислимому типу.




   Наверх