procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);
var i : integer;
begin
form1.grid1.Clear;
for i := 0 to dbgrid1.Columns.Count - 1 do
begin
form1.grid1.Lines.add(format('%2s',[inttostr(length(DBGrid1.Columns[i].Fieldname))]) +
format('%-20s',[DBGrid1.Columns[i].Fieldname]) +
format('%10s',[inttostr(DBGrid1.Columns[i].width)]));
end;
form1.grid1.Lines.SaveToFile('c:\....');
end;
폼이 닫힐때 그리드에 대한 정보를 저장해두는 프로시져입니다.
여기서 format에 관한 부분을 잘 모르겠네요.
자세하게 가르켜 주실 분 없나요?
일단 님이 쓰시고 계시는 format은요
간단히 설명하자면 자리를 잡는건데요
앞에는 자리를 어게 잡을껀가를 정의 하는 구분입니다
%2s : 문자열 2자리를 잡겠다는거구요 만일 데이타가 3자라면 3자 자리를
위치합니다.
근데 문자가 한자라면 왼쪽부터 써지고 한칸은 빈칸이 되겠죠
예 : 02 -> 02
003 -> 003
2 -> 2
%-2s : 문자열 2자리를 잡겠다는거구요 만일 데이타가 3자라면 3자 자리를
위치합니다.
근데 문자가 한자라면 오른쪽부터 써지고 한칸은 빈칸이 되겠죠
예 : 02 -> 02
003 -> 003
2 -> 2
이런식으로 알고계시면 될꺼 같구요
s : 문자열 f : float형
d : 숫자형
format('%-20s',[DBGrid1.Columns[i].Fieldname])
자리수 데이타 값
님이 하신 코딩을 응용하자면요
form1.grid1.Lines.add(format('%2s%-20s%10s',
[inttostr(length(DBGrid1.Columns[i].Fieldname)),DBGrid1.Columns [i].Fieldname,inttostr(DBGrid1.Columns[i].width)]));
이것도 가능하죠
예제 1 : -20인 경우
'%2s%-20s%10s'
inttostr(length(DBGrid1.Columns[i].Fieldname)) := 3
DBGrid1.Columns [i].Fieldname := kkkkk
inttostr(DBGrid1.Columns[i].width) := 300
일 경후 시작:3 kkkkk300 :끝
예제 2 그냥 20인경우
'%2s%20s%10s'
inttostr(length(DBGrid1.Columns[i].Fieldname)) := 3
DBGrid1.Columns [i].Fieldname := kkkkk
inttostr(DBGrid1.Columns[i].width) := 300
일 경후 시작:3 kkkkk 300 :끝
.
그리고 -있는거랑 없는거랑 왼쪽인지 오른쪽인지 가물 가물하네요
함 테스트 해보시면 되요
도움이 될려나 모르겠습니다.
그럼 즐코 하세요