Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как загрузить столбцы грида в нужном порядке? / 5 сообщений из 5, страница 1 из 1
30.08.2003, 02:26
    #32251977
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить столбцы грида в нужном порядке?
Привет программерам!
Подскажите, как можно программно поменять порядок столбцов в TGrid-е?
Тоесть суть такова: в процессе работы программы пользователь может поменять порядок полей в Гриде.
Как сделать так, что-бы при следующей загрузке загрузить таблицу с той же последовательностью полей? (порядок то запомнить можна, а вот как вгрузить обратно?)
...
Рейтинг: 0 / 0
30.08.2003, 16:16
    #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
31.08.2003, 02:20
    #32252101
DenDer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить столбцы грида в нужном порядке?
>anubis
Спасибо, обязательно воспользуюсь
...
Рейтинг: 0 / 0
01.09.2003, 12:16
    #32252510
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить столбцы грида в нужном порядке?
Используй DBGridEh - там все это уже есть. И много чего другого
...
Рейтинг: 0 / 0
04.09.2003, 10:16
    #32255481
LAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить столбцы грида в нужном порядке?
в RX Lib есть "сохранялка" (FormStorage) всего чего угодно, ее можно навесить и на их грид, у меня это работает, правда если список полей в гриде со временем изменится, то может быть проблема, видимо надо увеличить версию в "сохранялке".
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как загрузить столбцы грида в нужном порядке? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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