Форум: "Начинающим";
Текущий архив: 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