Сохранить порядок колонок в DBGrid, после того как пользовать их перестроил
РЕКЛАМА!!!
Телефонный звонок в 2 часа ночи. Сонный мужик подходит к телефону:
- АЛЛО?!!!
Тишина. Кладет трубку. Ровно через 45 секунд опять звонок.
- АЛЛО?!!!!
Тишина. И так повторяентся 74 раза с регулярностью 45 секунд. Мужик:
- ПИИИИИИИи (длинный продолжительный писк, которым на телевидении заглушают матные слова) На другом конце провода довольный СисОп с лыбой во всю широту натуры, обнимающий небольшую коробочку. Голос за кадром:
- Делай всё, что тебе нравится вместе с модемом ZyXel!!!
procedure TMainForm.NewIni(const NomeIni: string);
var F: System.Text;
i: Byte;
begin
System.Assign(F, NomeIni);
System.ReWrite(F);
System.WriteLn(F, '[Campi_Ordine]');
for i:=1 to Table1.FieldCount do
System.WriteLn(F, 'Campo',i,'=',Table1.Fields[i-1].FieldName);
System.WriteLn(F, '');
System.WriteLn(F, '[Campi_Size]');
for i:=1 to Table1.FieldCount do
System.WriteLn(F, 'Campo',i,'=',Table1.Fields[i-1].DisplayWidth);
System.Close(F);
end;
procedure TMainForm.SaveIni(const FN: String);
var Ini: TIniFile;
i: Integer;
begin
NewIni(FN);
Ini := TIniFile.Create(FN);
with Ini dobeginfor i:=1 to Table1.FieldCount dobegin
S:= Table1.Fields[i-1].FieldName;
WriteString('Campi_Ordine', 'Campo'+IntToStr(i),
Table1.Fields[i-1].FieldName);
WriteInteger('Campi_Size', 'Campo'+IntToStr(i),
Table1.Fields[i-1].DisplayWidth);
end;
end;
Ini.Free;
end;
procedure TMainForm.LoadIni(const FN: String);
var Ini: TIniFile;
i: Integer;
j: Longint;
S: String;
function MyReadInteger(const Section, Ident: string): Longint;
begin
result := Ini.ReadInteger(Section, Ident, -1);
if result=-1 thenraise Exception.Create('Errore nel file di configurazione.');
end;
function MyReadString(const Section, Ident: string): String;
begin
result := Ini.ReadString(Section, Ident, '');
if result='' thenraise Exception.Create('Errore nel file di configurazione.');
end;
begin
Ini := TIniFile.Create(FN);
trywith Ini dobeginfor i:=1 to Table1.FieldCount dobegin
S:= MyReadString('Campi_Ordine', 'Campo'+IntToStr(i));
j:= MyReadInteger('Campi_Size', 'Campo'+IntToStr(i));
Table1.FieldByName(S).Index := i-1;
Table1.FieldByName(S).DisplayWidth := j;
end;
end;
finally
Ini.Free;
end;
end;
Переданный код - это набор процедур на языке Delphi для сохранения и загрузки порядка столбцов в DBGrid, а также их размеров из файла INI.
Рассмотрим каждую процедуру:
NewIni(const NomeIni: string): Эта процедура создает новый файл INI и записывает имена полей и их ширины из DBGrid в него. Она перебирает поля грида и записывает имя каждого поля и его ширина в файл INI.
SaveIni(const FN: String): Эта процедура сохраняет текущее состояние DBGrid, включая порядок столбцов и их размеры, в файл INI. Она создает новый объект TIniFile, затем перебирает поля грида, записывая имя каждого поля и его ширина в файл INI.
LoadIni(const FN: String): Эта процедура загружает состояние DBGrid из файла INI. Она создает новый объект TIniFile, читает имена полей и их размеры из файла INI, а затем устанавливает свойства Index и DisplayWidth для каждого поля в гриде.
Чтобы сохранить порядок столбцов в DBGrid после того, как пользователь их переставил, вы бы использовали процедуру SaveIni. Чтобы загрузить сохраненное состояние при запуске программы, вы бы использовали процедуру LoadIni.
В этом примере процедура LoadIni вызывается при создании формы для загрузки сохраненного состояния DBGrid. Процедура SaveIni вызывается при нажатии кнопки для сохранения текущего состояния грида.
Помните, что нужно заменить 'путь_к_вашему_файлу_INI.ini' на реальный путь и имя вашего файла INI.
Сохранить порядок колонок в DBGrid после перестройки пользователем можно с помощью создания конфигурационного файла и записи порядка колонок и ширины полей в нем.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.