亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smartlistview.pas

?? 一個(gè)功能增強(qiáng)的Delphi TListView組件TSmartListView + 增加排序功能,帶小箭頭的那種:) + 增加SaveToExcelFile、SaveToHTMLFile方法
?? PAS
?? 第 1 頁 / 共 2 頁
字號(hào):
    Items.EndUpdate;
    FreeAndNil(Stream);
  end;

end;

{Save a TListView as an HTML page}
{This Code from http://www.swissdelphicenter.ch/ Autor: Robert Muth  }

function TSmartListView.SaveToHTMLFile(const FileName: string; Center: Boolean): Boolean;
var
  i, j: Integer;
  tfile: TextFile;
begin
  try
    ForceDirectories(ExtractFilePath(FileName));
    AssignFile(tfile, FileName);
    try
      ReWrite(tfile);
      WriteLn(tfile, '<html>');
      WriteLn(tfile, '<head>');
      WriteLn(tfile, '<title>HTML-Ansicht: ' + FileName + '</title>');
      WriteLn(tfile, '</head>');
      // WriteLn(tfile, '<table border="1" bordercolor="#000000">');
      // Modified by HsuChong <Hsuchong@hotmail.com> 2006-12-13 10:03:06
      WriteLn(tfile, '<table border=1 cellspacing=0 cellpadding=0 bordercolor="#000000">');
      WriteLn(tfile, '<tr>');
      for i := 0 to Columns.Count - 1 do
      begin
        if center then
          WriteLn(tfile, '<td><b><center>' + Columns[i].Caption + '</center></b></td>')
        else
          WriteLn(tfile, '<td><b>' + Columns[i].Caption + '</b></td>');
      end;
      WriteLn(tfile, '</tr>');
      WriteLn(tfile, '<tr>');
      for i := 0 to Items.Count - 1 do
      begin
        WriteLn(tfile, '<td>' + Items.Item[i].Caption + '</td>');
        for j := 0 to Columns.Count - 2 do
        begin
          if Items.Item[i].SubItems[j] = '' then
            Write(tfile, '<td>-</td>')
          else
            Write(tfile, '<td>' + Items.Item[i].SubItems[j] + '</td>');
        end;
        Write(tfile, '</tr>');
      end;
      WriteLn(tfile, '</table>');
      WriteLn(tfile, '</html>');
      Result := True;
    finally
      CloseFile(tfile);
    end;
  except
    Result := False;
  end;
end;

function TSmartListView.SaveToExcelFile(const FileName: string): Boolean;
const
  ExcelChar = #9;
var
  ExcelRowText: string;
  i, j: Integer;
  ExcelList: TStrings;
begin
  Result := False;
  try
    ForceDirectories(ExtractFilePath(FileName));
    ExcelList := TStringList.Create;
    try
      ExcelRowText := Columns[0].Caption;
      for i := 1 to Columns.Count - 1 do
        ExcelRowText := ExcelRowText + ExcelChar + Columns[i].Caption;
      ExcelList.Append(ExcelRowText);
      for i := 0 to Items.Count - 1 do
      begin
        ExcelRowText := Items[i].Caption;
        for j := 0 to Items[i].SubItems.Count - 1 do
          ExcelRowText := ExcelRowText + ExcelChar + Items[i].SubItems[j];
        ExcelList.Append(ExcelRowText);
      end;
      ExcelList.SaveToFile(FileName);
    finally
      ExcelList.Free;
    end;
  except
    Result := True;
  end;

end;

procedure TSmartListView.DrawBackgroundPicture;
var
  x, y, dx: Integer;
begin
  x := 0;
  y := 0;
  if Items.Count > 0 then
  begin
    if ViewStyle = vsReport then
      x := TopItem.DisplayRect(drBounds).Left
    else
      x := Items[0].DisplayRect(drBounds).Left;
    y := Items[0].DisplayRect(drBounds).Top - 2;
  end;
  dx := x;
  while y <= ClientHeight do
  begin
    while x <= ClientWidth do
    begin
      Canvas.Draw(x, y, FBackgroundPicture.Graphic);
      inc(x, FBackgroundPicture.Graphic.Width);
    end;
    inc(y, FBackgroundPicture.Graphic.Height);
    x := dx;
  end;
end;

procedure TSmartListView.LVCustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
begin
  if (FBackgroundPicture.Graphic <> nil) then
  begin
    //繪制背景圖
    DrawBackgroundPicture;
    //將畫布的背景設(shè)為透明模式
    SetBkMode(Canvas.Handle, TRANSPARENT);
    //將Item的文本背景設(shè)為透明
    ListView_SetTextBKColor(Handle, CLR_NONE);
  end;
end;

procedure TSmartListView.BackgroundPictureChanged(Sender: TObject);
begin
  Invalidate;
end;

function TSmartListView.GetCop: string;
begin
  Result := FCop;
end;

procedure TSmartListView.SetCop(const Value: string);
begin
  if FCop <> Value then
    FCop := Value;
end;

procedure TSmartListView.SetBackgroundPicture(Value: TPicture);
begin
  if FBackgroundPicture <> Value then
    FBackgroundPicture.Assign(Value);
end;

function TSmartListView.GetCheckedItem: TListItem;
var
  I: Integer;
begin
  Result := nil;
  if Checkboxes then
    for I := 0 to Items.Count - 1 do
      if Items[I].Checked then
      begin
        Result := Items[I];
        Break;
      end;
end;

function TSmartListView.MultiChecked: Boolean;
var
  I, CheckedCount: Integer;
begin
  Result := False;
  CheckedCount := 0;
  if Checkboxes then
    for I := 0 to Items.Count - 1 do
    begin
      if Items[I].Checked then
        Inc(CheckedCount);
      Result := CheckedCount > 1;
      if Result then
        break;
    end;

end;

function TSmartListView.IsChecked: Boolean;
var
  I: Integer;
begin
  Result := False;
  if Checkboxes then
    for I := 0 to Items.Count - 1 do
      if Items[I].Checked then
      begin
        Result := True;
        Break;
      end;
end;

procedure TSmartListView.CheckAll(Checked: Boolean);
var
  I: Integer;
begin
  if Checkboxes then
    for I := 0 to Items.Count - 1 do
      Items[i].Checked := Checked;
end;

procedure TSmartListView.MoveItem(OriginalIndex, NewIndex: Integer);
var
  Selected, Focused: boolean;
  ListItem: TListItem;
begin
  if ((OriginalIndex < 0) or (OriginalIndex > Items.Count)) or
    ((NewIndex < 0) or (NewIndex > Items.Count)) then
    Exit;
  Items.BeginUpdate;
  try
    Selected := Items[OriginalIndex].Selected;
    Focused := Items[OriginalIndex].Focused;
    if NewIndex < OriginalIndex then
      inc(OriginalIndex);
    if (NewIndex > OriginalIndex) then
      ListItem := Items.Insert(NewIndex + 1)
    else
      ListItem := Items.Insert(NewIndex);
    ListItem.Assign(Items[OriginalIndex]);
    Items.Delete(OriginalIndex);
    ListItem.Selected := Selected;
    ListItem.Focused := Focused;
  finally
    Items.EndUpdate;
  end;
end;

procedure TSmartListView.KeyUp(var Key: Word; Shift: TShiftState);
var
  PrevSearch: string;
  Ascii: array[0..1] of char;
  KBState: TKeyboardState;
begin
  inherited;
  if ColumnSearch then
  begin
    GetKeyboardState(KBState);
    if (ToAscii(Key, 0, KBState, Ascii, 0) = 1) and (Ascii[0] in [#32..#127]) then
    begin
      PrevSearch := FSearchStr;         // remember searchstring
      if GetTickCount > FSearchTickCount + 1000 then // last search over one second ago?
        PrevSearch := '';               // reset searchstring
      FSearchStr := PrevSearch + Ascii[0]; // Append searchstring
      FSearchTickCount := GetTickCount; // remember last search time
      Key := 0;                         // prevent automatic search on first column
      if not StringSelect(FSearchStr, FCurColumn) then
      begin
        MessageBeep(MB_ICONSTOP);
        FSearchStr := PrevSearch;
      end;
    end;
  end;
end;

function TSmartListView.StringSelect(const FindStr: string; ColumnIndex: Integer): boolean;
var
  SearchLen, SearchIndex, SearchStart: Integer;
begin
  Result := False;
  SearchLen := Length(FindStr);
  if Assigned(Selected) then            // determine starting item
    SearchStart := Selected.Index + 1
  else
    SearchStart := 1;

  // Searches from currently selected item to last item
  // and from first item to currently selected item until result(found)

  SearchIndex := 0;
  while (SearchIndex < Items.Count) and not Result do
  begin
    if ColumnIndex = 0 then             // find main or subitem?
      Result := AnsiCompareText(Copy(Items[(SearchStart + SearchIndex) mod
        Items.Count].Caption, 0, SearchLen), FindStr) = 0
    else
      Result := AnsiCompareText(Copy(Items[(SearchStart + SearchIndex) mod
        Items.Count].SubItems[ColumnIndex - 1], 0, SearchLen), FindStr) = 0;
    Inc(SearchIndex);
  end;
  if Result then
  begin
    SetFocus;
    Selected := Items[(SearchStart + SearchIndex - 1) mod Items.Count];
    ItemFocused := Selected;
    Selected.MakeVisible(False);
  end;

end;

function TSmartListView.SubStringSelect(const FindStr: string; ColumnIndex: Integer): boolean;
var
  SearchIndex, SearchStart: Integer;
begin
  Result := False;
  if Assigned(Selected) then            // determine starting item
    SearchStart := Selected.Index + 1
  else
    SearchStart := 1;

  // Searches from currently selected item to last item
  // and from first item to currently selected item until result(found)

  SearchIndex := 0;
  while (SearchIndex < Items.Count) and not Result do
  begin
    if ColumnIndex = 0 then             // find main or subitem?
      Result := Pos(FindStr, Items[(SearchStart + SearchIndex) mod
        Items.Count].Caption) > 0
    else
      Result := Pos(FindStr, Items[(SearchStart + SearchIndex) mod
        Items.Count].SubItems[ColumnIndex - 1]) > 0;
    Inc(SearchIndex);
  end;
  if Result then
  begin
    SetFocus;
    Selected := Items[(SearchStart + SearchIndex - 1) mod Items.Count];
    ItemFocused := Selected;
    Selected.MakeVisible(False);
  end;

end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久国产最好的精华液| 国产午夜亚洲精品理论片色戒| 亚洲精品免费一二三区| 色综合欧美在线| 美日韩一区二区| 欧美日韩国产高清一区二区| 视频一区在线播放| 日韩精品一区在线| 成人黄色电影在线| 亚洲黄色av一区| 91精品国产手机| 国产精品国产三级国产普通话99| 欧美亚洲综合网| 国产乱妇无码大片在线观看| 亚洲国产精品一区二区www| 精品少妇一区二区三区在线播放| 99re热视频精品| 麻豆成人综合网| 一区二区三区四区高清精品免费观看| 三级在线观看一区二区| 中文字幕一区在线| 一区二区三区在线视频观看58 | 日韩一二三四区| ㊣最新国产の精品bt伙计久久| 亚洲色欲色欲www| 高清在线观看日韩| 日韩电影一区二区三区四区| 中文字幕一区二区三区av| 国产剧情一区在线| 婷婷久久综合九色综合伊人色| 国产日韩欧美在线一区| 日韩精品一区二区三区四区| 亚洲国产综合色| 成人免费在线播放视频| 国产喷白浆一区二区三区| 日韩免费视频一区二区| 欧美手机在线视频| 色综合久久综合网| 国产91精品在线观看| 国产一区二区精品久久99| 免费观看一级特黄欧美大片| 亚洲国产精品影院| 色又黄又爽网站www久久| 国产精品一区二区黑丝| 国产成人一区在线| 国产一区二三区好的| 六月丁香综合在线视频| 在线一区二区三区| 91在线小视频| 欧美专区在线观看一区| 国产一区二区三区香蕉| 亚洲超丰满肉感bbw| 亚洲成人免费视| 日韩在线一二三区| 喷白浆一区二区| 美国av一区二区| 国产欧美综合色| 日韩精品一区二区在线观看| 精品国产污污免费网站入口| 久久久久久久免费视频了| 久久看人人爽人人| 日韩av电影免费观看高清完整版 | av电影天堂一区二区在线观看| av不卡一区二区三区| 在线中文字幕不卡| 久久国产人妖系列| 成人app网站| 欧美日本一区二区在线观看| 日韩一级欧美一级| 国产亲近乱来精品视频| 欧美一区二区日韩| 久久五月婷婷丁香社区| 一区二区在线观看视频| 青青草国产成人99久久| 国产精品主播直播| 亚洲三级电影网站| 精品一区二区在线视频| 色综合色综合色综合色综合色综合 | 成人免费三级在线| 欧美精品日日鲁夜夜添| 中文字幕一区三区| 蜜桃视频免费观看一区| 欧美在线视频你懂得| 中文字幕免费在线观看视频一区| 性感美女极品91精品| 成人午夜精品在线| xfplay精品久久| 亚洲午夜私人影院| 国产精品人人做人人爽人人添| 国产视频视频一区| 亚洲电影在线免费观看| 国产成人av电影在线| 日韩一区二区免费在线观看| 亚洲人xxxx| 91色视频在线| 国产午夜久久久久| 国产在线视频不卡二| 精品国免费一区二区三区| 日韩av在线播放中文字幕| 色综合一个色综合亚洲| 欧美日韩成人综合天天影院| 国产精品免费看片| 国产黑丝在线一区二区三区| 欧美一区二区三区白人| 欧美日韩二区三区| 一区二区久久久| 欧美三区在线观看| 亚洲.国产.中文慕字在线| 色激情天天射综合网| 精品视频一区二区三区免费| 中文字幕巨乱亚洲| 韩国女主播一区| 国产日韩亚洲欧美综合| 国产sm精品调教视频网站| 久久久久久久网| 亚洲精品成a人| 欧美日韩综合不卡| 日日欢夜夜爽一区| 日韩欧美的一区二区| 国内精品久久久久影院色| 日韩欧美电影一二三| 国模少妇一区二区三区| 国产精品久久久久aaaa樱花| 成人一级视频在线观看| 成人欧美一区二区三区1314| 91精品国产色综合久久久蜜香臀| 蜜桃av一区二区三区电影| 国产亚洲制服色| 欧美视频日韩视频| 国精产品一区一区三区mba视频 | 欧美日本高清视频在线观看| 亚洲女同ⅹxx女同tv| 日韩一区二区电影| 成人黄色在线视频| 亚洲成av人片在线| 日韩精品专区在线影院观看| 97国产精品videossex| 亚洲欧洲日本在线| 欧美日本一区二区| 盗摄精品av一区二区三区| 日韩va欧美va亚洲va久久| av成人免费在线观看| 日本视频免费一区| 亚洲卡通动漫在线| 国产日韩欧美不卡| 成人一道本在线| 美腿丝袜在线亚洲一区| 亚洲最大成人综合| 久久品道一品道久久精品| 欧美高清视频在线高清观看mv色露露十八 | 成人久久久精品乱码一区二区三区| 亚洲国产一区在线观看| 2022国产精品视频| 欧美精品色一区二区三区| 99亚偷拍自图区亚洲| 日本成人在线视频网站| 亚洲夂夂婷婷色拍ww47| 中文字幕亚洲区| 亚洲国产高清在线观看视频| 精品一区二区三区av| 日韩av午夜在线观看| 日日噜噜夜夜狠狠视频欧美人| 夜夜爽夜夜爽精品视频| 亚洲特黄一级片| 中文字幕精品一区二区三区精品| 精品国产一区二区三区av性色| 免费成人在线观看| 日韩vs国产vs欧美| 日本大胆欧美人术艺术动态| 蜜臀91精品一区二区三区| 日本午夜精品视频在线观看| 伊人开心综合网| 亚洲免费av在线| 在线看不卡av| 91久久精品一区二区三区| 国产91精品免费| 国内精品久久久久影院一蜜桃| 精品一区二区三区av| 免播放器亚洲一区| 亚洲一区二区三区爽爽爽爽爽| 亚洲欧美国产高清| 亚洲欧美激情在线| 一级日本不卡的影视| 亚洲一区二区欧美日韩| 亚洲午夜在线电影| 777xxx欧美| 日韩精品一区二区三区在线观看| 精品捆绑美女sm三区| 精品欧美久久久| 中文字幕精品—区二区四季| 久久中文字幕电影| 99精品一区二区| 91黄色免费网站| 欧美揉bbbbb揉bbbbb| 91精品视频网| 久久综合久色欧美综合狠狠| 国产女主播在线一区二区| 中文天堂在线一区| 亚洲高清视频中文字幕| 久久日一线二线三线suv|