2ちゃんねるブラウザ「OpenJane」改造総合スレ 2

このエントリーをはてなブックマークに追加
227名無し~3.EXE
「読んだ位置」カラムをつける

オブジェクトツリーからListview.Columnsを選んで項目をひとつ追加。
次にTMainWnd.ListViewDataの最後(または新しいカラムの位置)にこれを追加。
if (0 <= thread.viewPos) and //読んだ位置情報がある
(10 < thread.lines - thread.viewPos) then //総取得レスから遠い場合だけに絞る(無くても可)
 Item.SubItems.Add(IntToStr(thread.viewPos +1))
else
 Item.SubItems.Add('');
これで途中までしか読んでないスレは、読んでいる途中のレス番がスレ覧に表示される。

カラムのソートが必要な場合ははTMainWnd.ListViewColumnClickで
10: ListView.Sort(@ListCompareFuncViewPos);
見たいにカラムの列番号で指定して、その上あたりにあるソート関数のとこにこれを追加。
function ListCompareFuncViewPos(Item1, Item2: Pointer): integer;
begin
 result := integer(TThreadItem(Item1).lines - TThreadItem(Item1).viewPos <= 10)
      - integer(TThreadItem(Item2).lines - TThreadItem(Item2).viewPos <= 10);
 if result <> 0 then
  exit;
 result := TThreadItem(Item1).viewPos - TThreadItem(Item2).viewPos;
 if result = 0 then

  result := ListCompareFuncNumber(Item1, Item2);
 if MainWnd.currentSortColumn = -10 then
//ListViewColumnClickで指定したカラムの列番号
  result := -result;
end;

カラムの非表示との兼ね合いは考慮してないのでそれ以前のソース使うか各自で対応して。