powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / один Scroll для двух StringGrid
20 сообщений из 20, страница 1 из 1
один Scroll для двух StringGrid
    #40091282
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
на одной форме есть два StringGrid (StringGrid1 и StringGrid2).
Задача:
когда пользователь перемещает горизонтальный Scroll у StringGrid1, у StringGrid2 Scroll должен перемещаться так же как и у StringGrid1 (т.е. тащим один Scroll, а перемещение происходит в обоих StringGrid .
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091287
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цепляйся на OnTopLeftChanged
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091301
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или положить оба на один scrollbox.
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091313
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий, у меня в Object Inspector нет такого события, возможно потому что я пишу кроссплатформенное решение.
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091315
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,
вы предложили вот так положить? или как то по другому?
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091316
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitaliyKW
Мимопроходящий, у меня в Object Inspector нет такого события, возможно потому что я пишу кроссплатформенное решение.
а, так ты обезьяну пользуешь!
тогда цепляйся на OnViewportPositionChange
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091619
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй не аттачами выложить, а ссылками на внешний ресурс.
Гифки по идее должны работать (раньше точно работали).
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091626
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Хех. Оно даже через [img] не хочет.

http://www.rgreat.ru/tmp/Delphi/scroll-grid.gif

Удали верхнее, плиз.
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091643
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitaliyKW
Добрый день!
на одной форме есть два StringGrid (StringGrid1 и StringGrid2).
Задача:
когда пользователь перемещает горизонтальный Scroll у StringGrid1, у StringGrid2 Scroll должен перемещаться так же как и у StringGrid1 (т.е. тащим один Scroll, а перемещение происходит в обоих StringGrid .

А можно спросить зачем это нужно?
Синхронно перемещать два грида по вертикали, ну это иногда понятно. Но зачем синхронно перемещать два грида по горизонтали?
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091791
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,
то что нужно, можно пример кода?
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091794
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener,
если честно, то в моей задаче (в одном месте) стоит горизонтальный двойной Scroll :) , а в другом месте стоит вертикальный двойной Scroll, я подумал, спрошу про один, а затем на его примере попробую разобраться с вторым. Заказчик часть таблиц хочет видеть в другом варианте, т.е. когда шапка таблицы с лева, а не сверху. в SQL заголовки таблиц написаны на латинице, а для пользователя должны быть написаны на двух языках. вот и получается что у меня одна таблица это данные, а вторая таблица это вывод шапки.
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091876
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitaliyKW
DimaBr,
то что нужно, можно пример кода?

Это не мой скрин, это скрин rgreat
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091923
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

Да там примитивно.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
object Form21: TForm21
  Left = 0
  Top = 0
  Caption = 'Test'
  ClientHeight = 290
  ClientWidth = 557
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object Button1: TButton
    Position.X = 464.000000000000000000
    Position.Y = 24.000000000000000000
    Text = 'Button1'
    OnClick = Button1Click
  end
  object Panel: TRectangle
    Anchors = [akLeft, akTop, akBottom]
    Fill.Color = x00FFFFFF
    Position.X = 8.000000000000000000
    Position.Y = 8.000000000000000000
    Size.Width = 440.000000000000000000
    Size.Height = 271.000000000000000000
    Size.PlatformDefault = False
    object ScrollBox1: TScrollBox
      Align = Client
      Margins.Left = 4.000000000000000000
      Margins.Top = 4.000000000000000000
      Margins.Right = 4.000000000000000000
      Margins.Bottom = 4.000000000000000000
      Size.Width = 432.000000000000000000
      Size.Height = 263.000000000000000000
      Size.PlatformDefault = False
      Viewport.Width = 432.000000000000000000
      Viewport.Height = 263.000000000000000000
      object StringGrid1: TStringGrid
        CanFocus = True
        ClipChildren = True
        Size.Width = 205.000000000000000000
        Size.Height = 100.000000000000000000
        Size.PlatformDefault = False
        RowHeight = 20.000000000000000000
        RowCount = 1
        Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
        OnSelectCell = StringGridSelectCell
        Viewport.Width = 201.000000000000000000
        Viewport.Height = 75.000000000000000000
        object StringColumn1: TStringColumn
          Header = 'Test 1'
        end
        object StringColumn2: TStringColumn
          Header = 'Test 2'
        end
      end
      object StringGrid2: TStringGrid
        CanFocus = True
        ClipChildren = True
        Position.X = 208.000000000000000000
        Size.Width = 205.000000000000000000
        Size.Height = 100.000000000000000000
        Size.PlatformDefault = False
        RowHeight = 20.000000000000000000
        RowCount = 1
        Options = [ColumnResize, ColumnMove, ColLines, RowLines, Tabs, Header, HeaderClick, AutoDisplacement]
        OnSelectCell = StringGridSelectCell
        Viewport.Width = 201.000000000000000000
        Viewport.Height = 75.000000000000000000
        object StringColumn3: TStringColumn
          Header = 'Test 3'
        end
        object StringColumn4: TStringColumn
          Header = 'Test 4'
        end
      end
    end
  end
end


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
unit Unit21;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Rtti, FMX.Grid.Style, FMX.Grid,
  FMX.Controls.Presentation, FMX.ScrollBox, FMX.Layouts, FMX.StdCtrls, FMX.Objects;

type
  TForm21 = class(TForm)
    Button1: TButton;
    Panel: TRectangle;
    ScrollBox1: TScrollBox;
    StringGrid1: TStringGrid;
    StringColumn1: TStringColumn;
    StringColumn2: TStringColumn;
    StringGrid2: TStringGrid;
    StringColumn3: TStringColumn;
    StringColumn4: TStringColumn;
    procedure Button1Click(Sender: TObject);
    procedure StringGridSelectCell(Sender: TObject; const ACol, ARow: Integer; var CanSelect: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form21: TForm21;

implementation

{$R *.fmx}

procedure TForm21.Button1Click(Sender: TObject);
begin
  var Rows:=StringGrid1.RowCount+20;

  StringGrid1.Height:=(StringGrid1.RowHeight+1)*(Rows+1)+3;
  StringGrid2.Height:=(StringGrid2.RowHeight+1)*(Rows+1)+3;

  StringGrid1.RowCount:=Rows;
  StringGrid2.RowCount:=Rows;
  for var i:=0 to Rows-1 do begin
    StringGrid1.Cells[0,i]:=i.ToString;
    StringGrid1.Cells[1,i]:=i.ToString;
    StringGrid2.Cells[0,i]:=i.ToString;
    StringGrid2.Cells[1,i]:=i.ToString;
  end;
end;

procedure TForm21.StringGridSelectCell(Sender: TObject; const ACol, ARow: Integer; var CanSelect: Boolean);
begin
  var Y1:=(StringGrid1.RowHeight+1)*(ARow);
  if Y1<ScrollBox1.ViewportPosition.Y then begin
    ScrollBox1.ScrollTo(0,ScrollBox1.ViewportPosition.Y-Y1);
  end;

  var Y2:=(StringGrid1.RowHeight+1)*(ARow+2)+2;
  if Y2>ScrollBox1.ViewportPosition.Y+ScrollBox1.ClientHeight then begin
    ScrollBox1.ScrollTo(0,-(Y2-ScrollBox1.ViewportPosition.Y-ScrollBox1.ClientHeight));
  end;
end;

end.

...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40091981
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat> Хех. Оно даже через [img] не хочет.

Не знаю, в этом сообщении у меня нормально отображается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092057
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Не знаю, в этом сообщении у меня нормально отображается.

Отображается без картинки. С текстом "Картинка с другого сайта"
Поэтому я и перезалил с http://www.rgreat.ru/ на файлообменник, но мой пост кто-то (не будем указывать пальцем) грохнул.
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092078
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел такое решение, пока что протестировал только на Wimdoes, на смартфонах позже протестирую (сейчас у меня ночь. спать надо).

авторprocedure TFormPKOK.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
begin
StringGrid3.HScrollBar.Value:= StringGrid1.HScrollBar.Value;
end;


так же у StringGrid (ScrollBar которого должен перемещаться вслед за ScrollBar-ом из другова StringGrid) я отключил ScrollBar

авторprocedure TFormPKOK.FormShow(Sender: TObject);
begin
StringGrid3.ShowScrollBars:=false;
end;

Комментарий к картинке:
черным цветом закрасил то что может помочь идентифицировать проект (мало ли какие хакеры читают этот форум)
зеленым цветом выделили StringGrid который перемещается за другим StringGrid
синим цветом выделил StringGrid в котором я перемещаю ScrollBar
красным цветом выделил ScrollBar который таскаю
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092079
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,
пока реализовывал ваш способ нашел свой способ решения, поэтому не знаю лучше он моего или нет (так как ваш до конца не реализовал), но я очень благодарен вам за то что вы предложили решение, не смотря на диверсию.... )))))
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092081
VitaliyKW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
спасибо за совет, я не смог им воспользоваться (OnViewportPositionChange - пробовал, но у меня что то не пошло вдохновение по пути OnViewportPositionChange )))) :), видимо для моего уровня развития нужно давать больше слов в совете :) (надеюсь через 6 месяцев буду мудрее)
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092088
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitaliyKW
northener,
если честно, то в моей задаче (в одном месте) стоит горизонтальный двойной Scroll :) , а в другом месте стоит вертикальный двойной Scroll, я подумал, спрошу про один, а затем на его примере попробую разобраться с вторым. Заказчик часть таблиц хочет видеть в другом варианте, т.е. когда шапка таблицы с лева, а не сверху. в SQL заголовки таблиц написаны на латинице, а для пользователя должны быть написаны на двух языках. вот и получается что у меня одна таблица это данные, а вторая таблица это вывод шапки.

А что вам помешало об этом сказать сразу?
...
Рейтинг: 0 / 0
один Scroll для двух StringGrid
    #40092285
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr> Отображается без картинки. С текстом "Картинка с другого сайта"

Видимо, от настроек браузера зависит...
Повторюсь, у меня корректно анимируется.

> мой пост кто-то (не будем указывать пальцем) грохнул.

Наверное, по запаркам удалил, не глянув на авторство, сорри.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / один Scroll для двух StringGrid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]