Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.004 c
2-1321451267
Scott Storch
2011-11-16 17:47
2012.02.26
Библиотека типов (COM)


2-1321558497
3asys
2011-11-17 23:34
2012.02.26
передача картинки в потоке через сокет


15-1320695289
_qwerty_
2011-11-07 22:48
2012.02.26
что подразумевается под клиентским по сетей microsoft?


6-1252422429
WinCap
2009-09-08 19:07
2012.02.26
Сетевой принтер


6-1223555585
Alex603081
2008-10-09 16:33
2012.02.26
Соединение по MAC адресу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский