2013년 6월 23일 일요일

WebSnap 을 이용하여 모바일 홈페이지 만들기 2

모바일 웹에서 가장 많이 사용되는 것이 ListView 일 것입니다.

이것을 구현하기 위하여 역시 Web.WbWeb 유니트를 약간 수정 하도록 합니다.
 DataSetTableProducer1.tag 를 이용하여 tag 가 99 이면 Table 처리를 하고 아니면 
LiveCiew 처리를 하면 되지 않나 생각합니다.
procedure TWebModule2.DataSetTableProducer1FormatCell 에서 
  if CellColumn = DataSetTableProducer1.tag then
    CellData:= '<a href="#">'+CellData+'</a>';

으로 처리 하게끔하고 
Web.DBWeb 에서 

function TDataSetTableProducer.HtmlTable(DataSet: TDataSet; DataSetHandler: TDSTableProducer; MaxRows: Integer): string;
var
  I, J: Integer;
  DisplayText, RowHeaderStr: string;
  Field: TField;
  Column: THTMLTableColumn;
begin
  if DataSet.State = dsBrowse then begin
    J := 1;
    while (MaxRows <> 0) and not DataSet.EOF do begin
      // Result := Result + RowHeaderStr;
      if SameText(Caption,'table') then begin
        for I := 0 to DataSetHandler.Columns.Count - 1 do begin
          Column := DataSetHandler.Columns[I];
          Field := Column.Field;
          if Field <> nil then
            DisplayText := Field.DisplayText
          else DisplayText := '';
          with Column do
            Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'TD', BgColor, Align, VAlign, Custom);
        end;
      end else begin
        if i <  DataSetHandler.Columns.Count then I := Tag
        else I:= 0;
        Column := DataSetHandler.Columns[I];
        Field := Column.Field;
        if Field <> nil then
          DisplayText := Field.DisplayText
        else DisplayText := '';
        with Column do
          Result := Result + DataSetHandler.FormatCell(J, I, DisplayText, 'li',  BgColor, Align, VAlign, Custom);
      end;
      Result := Result + EndRow + #13#10;
      DataSet.Next;
      Dec(MaxRows);
      Inc(J);
    end;
end;

당연히 헤더 부분도 수정 하여야 겠지요.
<div data-role="page">
<div data-role="header"><h1>Page Title</h1></div><!-- /header -->
<div data-role="content">
<ul data-role="listview" data-inset="true">

footer 부분도
</ul>
로 수정하여 주면 Caption 에다 Table/Ul 구분하여 넣어 주고 UL 이면 어떠한 컬럼으로 할것이지 지정하면 됩니다. 그렇지 않고 한 컬럼 만 있어도 되겠지요.

댓글 없음:

델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.