powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как загрузить столбцы грида в нужном порядке?
5 сообщений из 5, страница 1 из 1
Как загрузить столбцы грида в нужном порядке?
    #32251977
DenDer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет программерам!
Подскажите, как можно программно поменять порядок столбцов в TGrid-е?
Тоесть суть такова: в процессе работы программы пользователь может поменять порядок полей в Гриде.
Как сделать так, что-бы при следующей загрузке загрузить таблицу с той же последовательностью полей? (порядок то запомнить можна, а вот как вгрузить обратно?)
...
Рейтинг: 0 / 0
Как загрузить столбцы грида в нужном порядке?
    #32252039
anubis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самое простое - использовать грид, имеющий в своем составе запрашиваемую фичу (например от DevExpress)

Если очень хочется сделать самому то вот две функции для сохранения и восстановления колонок DBGrid а в реестре:

Код: plaintext
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.
procedure TForm1.RestoreColumnsOrder(const Grid: TDbGrid);
var
  R: TRegistry;
  BufSize: Integer;
  Buffer: Pointer;
  Stream: TMemoryStream;
begin
  if Assigned(Grid) then
  begin
    R := TRegistry.Create;
    Stream := TMemoryStream.Create;
    try
      if R.OpenKey('Software\'+Application.Title+'\'+Grid.Owner.Name+'\'+Grid.Name, False) then
      begin
        if R.ValueExists('ColumnsOrder') then
        begin
          BufSize := R.GetDataSize('ColumnsOrder');
          GetMem(Buffer, BufSize);
          try
            R.ReadBinaryData('ColumnsOrder', Buffer^, BufSize);
            Stream.Write(Buffer^, BufSize);
            Stream.Seek( 0 , 0 );
            Grid.Columns.LoadFromStream(Stream);
          finally
            FreeMem(Buffer);
          end;//try
        end;//if
      end;//if
    finally
      Stream.Free;
      R.Free;
    end;//try
  end;//if
end;

procedure TForm1.SaveColumnsOrder(const Grid: TDbGrid);
var
  R: TRegistry;
  Stream: TMemoryStream;
begin
  if Assigned(Grid) then
  begin
    R := TRegistry.Create;
    Stream := TMemoryStream.Create;
    try
      if R.OpenKey('Software\'+Application.Title+'\'+Grid.Owner.Name+'\'+Grid.Name, True) then
      begin
        if R.ValueExists('ColumnsOrder') then R.DeleteValue('ColumnsOrder');
        Grid.Columns.SaveToStream(Stream);
        R.WriteBinaryData('ColumnsOrder', Stream.Memory^, Stream.Size);
      end;//if
    finally
      Stream.Free;
      R.Free;
    end;//try
  end;//if
end;
...
Рейтинг: 0 / 0
Как загрузить столбцы грида в нужном порядке?
    #32252101
DenDer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>anubis
Спасибо, обязательно воспользуюсь
...
Рейтинг: 0 / 0
Как загрузить столбцы грида в нужном порядке?
    #32252510
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй DBGridEh - там все это уже есть. И много чего другого
...
Рейтинг: 0 / 0
Как загрузить столбцы грида в нужном порядке?
    #32255481
LAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в RX Lib есть "сохранялка" (FormStorage) всего чего угодно, ее можно навесить и на их грид, у меня это работает, правда если список полей в гриде со временем изменится, то может быть проблема, видимо надо увеличить версию в "сохранялке".
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как загрузить столбцы грида в нужном порядке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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