6 SysUtils, Classes, BoardGroup, BrowserRecord,
17 TMoveHistoryItem = class(TObject)
19 FThreadItem : TThreadItem;
22 property ThreadItem : TThreadItem read FThreadItem write FThreadItem;
23 property ScrollTop : Integer read FScrollTop write FScrollTop;
26 TMoveHistory = class(TList)
28 FHistoryMax : Integer;
31 \brief
\83\8a\83\93\83N
\88Ú
\93®
\97\9a\97ð
\8dÅ
\91å
\95Û
\8e\9d\90\94\82ð
\90Ý
\92è
\82·
\82é
\81B
32 \param AVal
\95Û
\8e\9d\90\94
34 procedure SetHistoryMax(AVal: Integer);
36 \brief
\83\8a\83\93\83N
\88Ú
\93®
\97\9a\97ð
\8dÅ
\91å
\95Û
\8e\9d\90\94\82ð
\8eæ
\93¾
\82·
\82é
\81B
37 \return
\95Û
\8e\9d\90\94( > 0 )
39 function GetHistoryMax: Integer;
41 constructor Create( max : Integer ); overload;
42 function pushItem( item: TMoveHistoryItem): Integer; overload;
43 function pushItem( item: TBrowserRecord): Integer; overload;
44 function getPrevItem( item: TBrowserRecord): TMoveHistoryItem;
45 function getNextItem: TMoveHistoryItem;
46 procedure clear; override;
47 property HistoryMax : Integer read GetHistoryMax write SetHistoryMax;
48 property HisotryIndex: Integer read FIndex;
52 MoveHisotryManager : TMoveHistory;
60 //!
\83R
\83\93\83X
\83g
\83\89\83N
\83^
61 constructor TMoveHistory.Create( max : Integer );
67 SetHistoryMax( GikoSys.Setting.MoveHistorySize );
69 //!
\88Ú
\93®
\97\9a\97ð
\82Ì
\83A
\83C
\83e
\83\80\92Ç
\89Á
70 function TMoveHistory.pushItem( item: TMoveHistoryItem): Integer;
73 top: TMoveHistoryItem;
76 if (Self.Count > 0) then begin
77 top := TMoveHistoryItem( Self.Items[Self.Count - 1] );
78 if (top.FThreadItem = item.FThreadItem) and
79 (top.FScrollTop = item.FScrollTop) then begin
83 //
\95Û
\8e\9d\90\94\82Ì
\8dÅ
\91å
\92l
\82ð
\92´
\82¦
\82é
\8fê
\8d\87\90æ
\93ª
\82ð
\8dí
\8f\9c
84 if (FIndex + 1 > FHistoryMax) then begin
85 if ( Self.Items[0] <> nil ) then begin
86 TMoveHistoryItem( Self.Items[0] ).Free;
91 // FIndex
\82æ
\82è
\8cã
\82ë
\82Ì
\83A
\83C
\83e
\83\80\82ð
\8dí
\8f\9c\82·
\82é
92 for i := Self.Count - 1 downto Findex do begin
93 if (Self.Items [i] <> nil) then begin
94 TMoveHistoryItem( Self.Items[i] ).Free;
99 Result := Self.Add( item );
101 //!
\88Ú
\93®
\97\9a\97ð
\82Ì
\83A
\83C
\83e
\83\80\92Ç
\89Á
102 function TMoveHistory.pushItem( item: TBrowserRecord): Integer;
104 history : TMoveHistoryItem;
108 if ( item <> nil ) and ( item.Thread <> nil )
109 and ( item.Browser <> nil) then begin
110 history := TMoveHistoryItem.Create;
111 history.FThreadItem := item.Thread;
112 doc := Idispatch( olevariant(item.Browser.ControlInterface).Document) as IHTMLDocument2;
113 history.ScrollTop := doc.Body.ScrollTop;
115 Result := pushItem( history );
118 //!
\88ê
\82Â
\91O
\82Ì
\97\9a\97ð
\83A
\83C
\83e
\83\80\8eæ
\93¾
119 function TMoveHistory.getPrevItem(item: TBrowserRecord): TMoveHistoryItem;
122 if (FIndex = Self.Count) and (item <> nil) then begin
126 if ( FIndex > 0 ) then begin
128 Result := TMoveHistoryItem( Self.items[ FIndex ] );
131 //!
\88ê
\82Â
\8cã
\82ë
\82Ì
\97\9a\97ð
\83A
\83C
\83e
\83\80\8eæ
\93¾
132 function TMoveHistory.getNextItem: TMoveHistoryItem;
135 if ( FIndex < Self.Count - 1 ) then begin
137 Result := TMoveHistoryItem( Self.items[ FIndex ] );
140 //!
\97\9a\97ð
\82Ì
\91S
\8fÁ
\8b\8e
141 procedure TMoveHistory.clear;
145 //
\83A
\83C
\83e
\83\80\82ð
\8dí
\8f\9c\82·
\82é
146 for i := Self.Count - 1 downto 0 do begin
147 if (Self.Items [i] <> nil) then begin
148 TMoveHistoryItem( Self.Items[i] ).Free;
157 procedure TMoveHistory.SetHistoryMax(AVal: Integer);
159 //
\97\9a\97ð
\82Ì
\83T
\83C
\83Y
\82Í0
\82æ
\82è
\91å
\82«
\82
\82È
\82¢
\82Æ
\82¢
\82¯
\82È
\82¢
160 if ( AVal > 0 ) then begin
161 if ((AVal + 1) <> FHistoryMax) then begin
163 //
\88Ú
\93®
\82µ
\82½
\8dÛ
\82É
\81A
\96ß
\82é
\83\8a\83\93\83N
\82ð1
\82Â
\91«
\82·
\82Ì
\82Å
164 FHistoryMax := AVal + 1;
168 function TMoveHistory.GetHistoryMax: Integer;
170 //
\88Ú
\93®
\82µ
\82½
\8dÛ
\82É
\81A
\96ß
\82é
\83\8a\83\93\83N
\82ð1
\82Â
\91«
\82·
\82Ì
\82Å
171 Result := FHistoryMax - 1;
174 MoveHisotryManager := TMoveHistory.Create( 20 );
177 if MoveHisotryManager <> nil then begin
178 MoveHisotryManager.clear;
179 MoveHisotryManager.Free;
180 MoveHisotryManager := nil;