DBgrid 列位置及列宽问题 大家帮帮忙调整过DBgrid列位置及列宽,再次打开软件时即恢复列位置及列宽信息?知道可以用ini或txt文件保存列信息,但不知道怎么做,请高手指点。最好有例子~~也可发我邮箱9951_kai#163#com 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 dbgrid本身就支持你说的那些功能啊你最好动态创建这个窗口with TForm1.Create( Owner ) dobeginShowModal;Destroyend;这样解决恢复的问题 读写INI文件的例子网上有很多的,现在高手都懒得给你写 EHLIB包中有关于记录介面的控件 TPropStorageEh,TRegPropStorageManEh,TIniPropStorageManEh你可以看看这三个控件。在EHlib包中 delphi 带TIniFile的,你可以看看,下面时demo:procedure TForm1.FormActivate(Sender: TObject);var WinIni: TIniFile;begin Canvas.TextOut(20, 10, 'VARIOUS WINDOWS SETTINGS'); WinIni := TIniFile.Create('Win.Ini'); with WinIni do begin Canvas.TextOut(10, 45, 'Border Width = ' + IntToStr(ReadInteger('Windows', 'BorderWidth', -1))); Canvas.TextOut(10, 65, 'Icon Spacing = ' + IntToStr(ReadInteger('Desktop', 'IconSpacing', -1))); Canvas.TextOut(10, 85, 'Grid Granularity = ' + IntToStr(ReadInteger('Desktop', 'GridGranularity', -1))); Canvas.TextOut(10, 105, 'Cursor Blink Rate = ' + IntToStr(ReadInteger('Windows', 'CursorBlinkRate', -1))); Canvas.TextOut(10, 125, 'Double Click Speed = ' + IntToStr(ReadInteger('Windows', 'DoubleClickSpeed', -1))); end; WinIni.Free;end;procedure TForm1.Button1Click(Sender: TObject);var DelphiIni: TIniFile; begin DelphiIni := TIniFile.Create('c:\windows\delphi32.ini'); Memo1.Clear; DelphiIni.ReadSectionValues('Transfer', Memo1.Lines); if Memo1.Lines.Values['Title1'] <> 'Picture Painter' then DelphiIni.WriteString('Transfer', 'Title1', 'Picture Painter'); DelphiIni.Free;end;procedure TForm1.Button2Click(Sender: TObject);var DelphiIni: TIniFile; begin DelphiIni := TIniFile.Create('c:\windows\delphi32.ini'); { if the entry wasn抰 there before, delete it now } if Memo1.Lines.Values['Title1'] = '' then DelphiIni.DeleteKey('Transfer', 'Title1') { otherwise, restore the old value } else DelphiIni.WriteString('Transfer', 'Title1', Memo1.Lines.Values['Title1']); DelphiIni.Free;end; for i:=0 to Dbgrideh1.Columns.Count -1 do Dbgrideh1.Columns[i].OptimizeWidth;//可以搞定打开后列宽为最小值,不必担心空白区域较大问题 求自定义数据转换到INTEGER型的算法 16进制转换方式? 这个if判断错在哪里? 请问如何在弹出一个窗口前停止程序?而不关闭窗口? 为什么fsmainform与fschildform之间show总是内存地址出错? 关于在google上下载图片的问题 简单问题 在软件打包程序中 如何动态设定与sql sever服务器连接属性 ClientDataset如何取得中间层返回的2个记录集 應用程序的發布問題 建议大家多添加点硬件的东东,丰富一下Delphi 【求助】怎么在类中使用“Application.ProcessMessages”? 关于WinExec的问题?
begin
ShowModal;
Destroy
end;这样解决恢复的问题
在EHlib包中
procedure TForm1.FormActivate(Sender: TObject);var
WinIni: TIniFile;
begin
Canvas.TextOut(20, 10, 'VARIOUS WINDOWS SETTINGS');
WinIni := TIniFile.Create('Win.Ini');
with WinIni do
begin
Canvas.TextOut(10, 45, 'Border Width = ' +
IntToStr(ReadInteger('Windows', 'BorderWidth', -1)));
Canvas.TextOut(10, 65, 'Icon Spacing = ' +
IntToStr(ReadInteger('Desktop', 'IconSpacing', -1)));
Canvas.TextOut(10, 85, 'Grid Granularity = ' +
IntToStr(ReadInteger('Desktop', 'GridGranularity', -1))); Canvas.TextOut(10, 105, 'Cursor Blink Rate = ' +
IntToStr(ReadInteger('Windows', 'CursorBlinkRate', -1)));
Canvas.TextOut(10, 125, 'Double Click Speed = ' +
IntToStr(ReadInteger('Windows', 'DoubleClickSpeed', -1)));
end;
WinIni.Free;end;procedure TForm1.Button1Click(Sender: TObject);var
DelphiIni: TIniFile;
begin
DelphiIni := TIniFile.Create('c:\windows\delphi32.ini');
Memo1.Clear;
DelphiIni.ReadSectionValues('Transfer', Memo1.Lines);
if Memo1.Lines.Values['Title1'] <> 'Picture Painter' then
DelphiIni.WriteString('Transfer', 'Title1', 'Picture Painter');
DelphiIni.Free;
end;procedure TForm1.Button2Click(Sender: TObject);var
DelphiIni: TIniFile;
begin DelphiIni := TIniFile.Create('c:\windows\delphi32.ini'); { if the entry wasn抰 there before, delete it now }
if Memo1.Lines.Values['Title1'] = '' then
DelphiIni.DeleteKey('Transfer', 'Title1')
{ otherwise, restore the old value }
else
DelphiIni.WriteString('Transfer', 'Title1', Memo1.Lines.Values['Title1']);
DelphiIni.Free;
end;
Dbgrideh1.Columns[i].OptimizeWidth;
//可以搞定打开后列宽为最小值,不必担心空白区域较大问题