グリッドの列の属性を得るには?

解決


Na  2007-05-09 03:37:27  No: 26081

グリッドをHTMLページに保存するprocedure  SavetoHTMLで、
グリッドの列が右寄せ表示の列であるときはHTMLページでも右寄せ表示しようと思っています。

procedure TForm1.SavetoHTML(Sg:TStringGrid;FileName:string);
var i,j:integer;
    St:TStringList;
    S,C:string;
begin
  St:=TStringList.Create;
  St.clear;
  try
    St.Add('<HTML>');
    St.Add('<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">');
    St.Add('<HEAD><TITLE></TITLE></HEAD>');
    St.Add('<BODY>');
    St.Add('<TABLE BORDER cellspacing=0>');
    for i:=0 to Sg.RowCount-1 do begin
      S:='';
      for j:=0 to Sg.ColCount-1 do 
        if j=右寄せ列 then S:=S+'<TD align=right>'   +Sg.Cells[j,i]+'<BR>'+    '</TD>'
        else S:=S+'<TD>'   +Sg.Cells[j,i]+'<BR>'+    '</TD>';
      St.Add('<TR>'+S+'</TR>');
    end;
    St.Add('</TABLE>');
    St.Add('</BODY>');
    St.Add('</HTML>');
    St.SaveToFile(FileName);
  finally
    St.Free;
  end;
end;

この場合の j は、どうすれば得られるでしょうか?


igy  2007-05-09 03:59:11  No: 26082

>グリッドの列の属性を得るには?
グリッドの列の属性(右寄せ表示の設定など)はどのように設定したのですか?


Na  2007-05-09 04:23:47  No: 26083

>グリッドの列の属性(右寄せ表示の設定など)はどのように設定したのですか?

OnDrawcellイベントで
DrawText(S.Canvas.Handle,PChar(S.Cells[aCol,aRow]),Length(S.Cells[aCol,aRow]),Rect,DT_RIGHT);
と、しましたのでSavetoHTMLでも j に右寄せ列を指定すればいいのですが、SavetoHTMLに汎用性を確保したいので・・・


igy  2007-05-09 05:51:50  No: 26084

保存しておきたい情報(今回の場合、右寄せ表示などの情報)を
StringGridのObjects プロパティ
あたりにでも、格納しておき、必要なときに取り出せばよいのでは?


Na  2007-05-09 17:41:26  No: 26085

なるほど、その手があったか!と言う感じです。
まだ試みてはいませんが、できそうですので解決とします。
igyさん、適切なアドバイスをありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加