⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iwwebgrid.pas

📁 TMS IntraWEb增强控件TMSIntraWeb_v2.3.2.1_D2007.rar
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  FSortSettings := TTIWRGSortSettings.Create(Self);
  FStretchColumn := -1;
  FHeaderStyle := hsRaised;
  FSelectPersistent := True;

  FRowOffset := 0;
  FBands := TTIWAdvWebGridBands.Create(Self);
  FGlyphs := TTIWRGGlyphs.Create(Self);
  FColumnHeaderColor := clBtnFace;
  FShowColumnHeader := True;
  FHoverColor := clNone;
  FHoverFontColor := clNone;
  FSelectColor := clHighlight;
  FSelectFontColor := clHighlightText;
  FEditColor := clNone;
  FActiveRowColor := clNone;
  FActiveRowFontColor := clNone;
  FDecimalPoint := '.';
  FDateSeparator := '/';

  FColumnHeaderFont := TIWFont.Create;
  FFooterBorders := TTIWRGBorders.Create(Self);
  FFooterBorders.FCollapsed := true;
  FFooterFont := TIWFont.Create;
  FFooterColor := clBtnFace;
  Width := 384;
  Height := 260;
  FSelectList := TIntList.Create;
  FDynEdits := TStringList.Create;
  FDefaultRowHeight := 22;

  FCache := TStringList.Create;
  FPostData := TStringList.Create;

  FActiveColumn := -1;
  FRadioSelection := -1;

  FCheckTruePicture := TIPicture.Create;
  FCheckFalsePicture := TIPicture.Create;

  FShowSelect := True;
  FDirectPost := True;

  FNodes := TIWGridNode.Create(Self);
  FBackground := TIWGridBackground.Create;

  FClientEvents := TIWGridClientEvents.Create;

  if (csDesigning in ComponentState) then
  begin
    maxid := 0;
    for i := 1 to Owner.ComponentCount do
      if (Owner.Components[i - 1] is TTIWCustomWebGrid) then
      begin
        if Owner.Components[i - 1] <> Self then
          if maxid <= (Owner.Components[i - 1] as TTIWCustomWebGrid).ID then
            maxid := (Owner.Components[i - 1] as TTIWCustomWebGrid).ID + 1;
      end;
    ID := maxid;
  end;

  FOuterBorder := TTIWWebGridOuterBorder.Create;
  FColumnHeaderBorders := TTIWRGBorders.Create(Self);
  FColumnHeaderBorders.Collapsed := true;
  FRowHeader := TTIWWebGridRowHeader.Create(Self);

  FScroll := TTIWWebGridScroll.Create;
  FSCroll.OnChange := ControllerChanged;

  FScroll.FScrollbar3DLightColor := clNone;
  FScroll.FScrollbarArrowColor := clNone;
  FScroll.FScrollbarBaseColor := clNone;
  FScroll.FScrollbarTrackColor := clNone;
  FScroll.FScrollbarDarkshadowColor := clNone;
  FScroll.FScrollbarFaceColor := clNone;
  FScroll.FScrollbarHighlightColor := clNone;
  FScroll.FScrollbarShadowColor := clNone;

  FDetailStates := TIntList.Create;

  if DesignMode then
  begin
    Columns.Add;
    Columns.Add;
    Columns.Add;
  end;

  if not (csDesigning in Componentstate) then
  begin
    {$IFDEF TMSIW51}
    TIWServer.AddInternalFile('IW_JS_TMSGRID','/js/TMSGRID.js');
    {$ELSE}
    GIWServer.AddInternalFile('IW_JS_TMSGRID');
    {$ENDIF}
  end;
  {$IFDEF TMSIW7}
  SupportsPartial := true;
  {$ENDIF}
end;

destructor TTIWCustomWebGrid.Destroy;
begin
  ic.Free;
  FController.Free;
  FColumns.Free;
  FRowHeader.Free;
  FColumnHeaderFont.Free;
  FFooterFont.Free;
  FBands.Free;
  FBorders.Free;

  FOuterBorder.Free;
  FColumnHeaderBorders.Free;
  FFooterBorders.Free;
  
  FIndicators.Free;
  FSortSettings.Free;
  FGlyphs.Free;
  FSelectList.Free;
  FDynEdits.Free;
  FCache.Free;
  FPostData.Free;
  FCheckTruePicture.Free;
  FCheckFalsePicture.Free;
  FNodes.Free;
  FBackground.Free;
  FClientEvents.Free;
  FScroll.Free;
  FDetailStates.Free;
  inherited;
end;

function TTIWCustomWebGrid.ImageHTML(const ASrc: string; AWidth, AHeight:
  Integer; UseSize: Boolean; Hint: string): TIWHTMLTag;
begin
  Result := TIWHTMLTag.CreateTag('IMG');
  Result.AddStringParam('SRC', ASrc);
  Result.AddStringParam('NAME', HTMLName);
  Result.AddStringParam('ALIGN', 'MIDDLE');
  Result.AddIntegerParam('BORDER', 0 {iif(UseBorder, 1, 0)});

//hint is set on TD tag, so no need to set it again on IMG tag
//  if Hint <> '' then
//    Result.AddStringParam('TITLE', Hint);

  if (AWidth > 0) and UseSize then
    Result.AddIntegerParam('WIDTH', AWidth);

  if (DefaultRowHeight > 0) and (AHeight = 0) and UseSize then
    Result.AddIntegerParam('HEIGHT', DefaultRowHeight)
  else
  begin
    if (AHeight > 0) and UseSize then
      Result.AddIntegerParam('HEIGHT', AHeight);
  end;
end;

function TTIWCustomWebGrid.OutputBMP(ACacheName: string; ABitmap: TBitmap;
  UseSize: Boolean; Hint: string): string;
var
  TempFilename: string;
  IWHTMLTag: TIWHTMLTag;
  i: Integer;
begin
  if ABitmap.Empty then
    Result := '&gt;'
  else
  begin
    for i := 1 to FCache.Count do
    begin
      if pos(ACacheName + ';', FCache.Strings[i - 1]) = 1 then
      begin
        TempFileName := FCache.Strings[i - 1];
        Delete(TempFileName, 1, Length(ACacheName) + 1);
        Result := TempFileName;
        Exit;
      end;
    end;

    {$IFDEF TMSIW71}
    TempFilename := TIWServerControllerBase.NewCacheFile('bmp',true);
    {$ELSE}
    TempFilename := TIWServerControllerBase.NewCacheFile('bmp');
    {$ENDIF}
    ABitmap.SaveToFile(TempFilename);
    TempFileName := GetCacheDir(Self) + ExtractFilename(TempFilename);

    IWHTMLTag := ImageHTML(TempFilename, ABitmap.Width, ABitmap.Height, UseSize, Hint);

    Result := IWHTMLTag.Render;
    IWHTMLTag.Free;
    FCache.Add(ACacheName + ';' + Result);
  end;
end;

function TTIWCustomWebGrid.OutputBMPEx(ACacheName: string; ABitmap: TBitmap;
  UseSize: Boolean; Hint: string; Height, Width: Integer): string;
var
  TempFilename: string;
  IWHTMLTag: TIWHTMLTag;
  i: Integer;
begin
  if ABitmap.Empty then
    Result := '&gt;'
  else
  begin
    for i := 1 to FCache.Count do
    begin
      if pos(ACacheName + ';', FCache.Strings[i - 1]) = 1 then
      begin
        TempFileName := FCache.Strings[i - 1];
        Delete(TempFileName, 1, Length(ACacheName) + 1);
        Result := TempFileName;
        Exit;
      end;
    end;

    {$IFDEF TMSIW71}
    TempFilename := TIWServerControllerBase.NewCacheFile('bmp',true);
    {$ELSE}
    TempFilename := TIWServerControllerBase.NewCacheFile('bmp');
    {$ENDIF}
    ABitmap.SaveToFile(TempFilename);
    TempFileName := GetCacheDir(Self) + ExtractFilename(TempFilename);

    if (Width = 0) or (Height = 0) then
      IWHTMLTag := ImageHTML(TempFilename, ABitmap.Width, ABitmap.Height, False, Hint)
    else
      IWHTMLTag := ImageHTML(TempFilename, Width, Height, UseSize, Hint);

    Result := IWHTMLTag.Render;
    IWHTMLTag.Free;
    FCache.Add(ACacheName + ';' + Result);
  end;
end;

function TTIWCustomWebGrid.GradientStyle(Color1,Color2: TIWColor; Direction: TTIWGradientDirection):string;
begin
  if (Color1 <> clNone) and (Color2 <> clNone) then
    Result := ' style="FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=' +
        IntToStr(1 - Integer(Direction)) + ', StartColorStr='#39 + HTMLClr(Color1) + #39', EndColorStr='#39 + HTMLClr(Color2) + #39');'
  else
    Result := ' style="';
end;

function TTIWCustomWebGrid.CellColor(Color,Color1,Color2: TIWColor; Direction: TTIWGradientDirection):string;
begin
  if (Color1 <> clNone) and (Color2 <> clNone) then
    Result := ' style="FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=' +
        IntToStr(1 - Integer(Direction)) + ', StartColorStr='#39 + HTMLClr(Color1) + #39', EndColorStr='#39 + HTMLClr(Color2) + #39');'
  else
    Result := ' style="background-color:' + HTMLClr(Color)+';';

end;

function TTIWCustomWebGrid.RaisedStyle:string;
begin
  Result := ' border:1px solid;border-color:ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;';
end;                                    

function TTIWCustomWebGrid.OutputPic(ACacheName: string; APicture: TIPicture;
  UseSize: Boolean; Hint: string): string;
var
  TempFilename: string;
  IWHTMLTag: TIWHTMLTag;
  i: Integer;
begin
  if APicture.Empty then
    Result := '&gt;'
  else
  begin
    for i := 1 to FCache.Count do
    begin
      if Pos(ACacheName + ';', FCache.Strings[i - 1]) = 1 then
      begin
        TempFileName := FCache.Strings[i - 1];
        Delete(TempFileName, 1, Length(ACacheName) + 1);
        Result := TempFileName;
        Exit;
      end;
    end;

    if APicture.IsGIF then
    {$IFDEF TMSIW71}
      TempFilename := TIWServerControllerBase.NewCacheFile('gif',true)
    {$ELSE}
      TempFilename := TIWServerControllerBase.NewCacheFile('gif')
    {$ENDIF}
    else
    {$IFDEF TMSIW71}
      TempFilename := TIWServerControllerBase.NewCacheFile('jpg',true);
    {$ELSE}
      TempFilename := TIWServerControllerBase.NewCacheFile('jpg');
    {$ENDIF}

    APicture.SaveToFile(TempFilename);

    TempFileName := GetCacheDir(Self) + ExtractFilename(TempFilename);
    IWHTMLTag := ImageHTML(TempFilename, 0, 0, UseSize, Hint);
    Result := IWHTMLTag.Render;
    IWHTMLTag.Free;

    FCache.Add(ACacheName + ';' + Result);
  end;
end;

function TTIWCustomWebGrid.GetCellData(ACol, ARow: integer): string;
begin
  // implemented in descendent grids
end;

function HTMLStrip(s: string): string;
var
  TagPos: integer;
begin
  Result := '';
  // replace line breaks by linefeeds
  while (pos('<BR>', uppercase(s)) > 0) do
    s := StringReplace(s, '<BR>', chr(13) + chr(10), [rfIgnoreCase]);
  while (pos('<HR>', uppercase(s)) > 0) do
    s := StringReplace(s, '<HR>', chr(13) + chr(10), [rfIgnoreCase]);

  // remove all other tags
  while (VarPos('<', s, TagPos) > 0) do
  begin
    Result 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -