6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ExtCtrls, StdCtrls;
10 TBbsThreadSel = class(TForm)
21 ButtonFilter: TButton;
24 procedure FormShow(Sender: TObject);
25 procedure ListCatClick(Sender: TObject);
26 procedure ListBrdClick(Sender: TObject);
27 procedure ListThrClick(Sender: TObject);
28 procedure ButtonFilterClick(Sender: TObject);
29 procedure PanelThrResize(Sender: TObject);
30 procedure EditFilterKeyPress(Sender: TObject; var Key: Char);
33 FThreadMode: Boolean; // True:
\83X
\83\8c\91I
\91ð
\81AFalse:
\94Â
\91I
\91ð
34 FBoardID: String; //
\94ÂID
\81i
\97á
\81Fsoftware
\81j
35 FBoardTitle: String; //
\94Â
\83^
\83C
\83g
\83\8b\81i
\97á
\81F
\83\
\83t
\83g
\83E
\83F
\83A
\81j
36 FThreadID: String; //
\83X
\83\8cID
\81i
\97á
\81F1410888356
\81j
37 FThreadTitle: String; //
\83X
\83\8c\83^
\83C
\83g
\83\8b\81i
\97á
\81F2
\82¿
\82á
\82ñ
\82Ë
\82é
\97p
\83u
\83\89\83E
\83U
\81u
\83M
\83R
\83i
\83r
\81v Part67
\81j
41 property ThreadMode: Boolean write FThreadMode default False;
42 property BoardID: String read FBoardID write FBoardID;
43 property BoardTitle: String read FBoardTitle write FBoardTitle;
44 property ThreadID: String read FThreadID write FThreadID;
45 property ThreadTitle: String read FThreadTitle write FThreadTitle;
49 BbsThreadSel: TBbsThreadSel;
53 uses BoardGroup, GikoSystem, MojuUtils;
57 procedure TBbsThreadSel.FormShow(Sender: TObject);
59 CenterForm: TCustomForm;
66 if (FThreadMode = False) then begin
67 Caption := '
\94Â
\91I
\91ð';
68 Self.Constraints.MinWidth := 330;
69 PanelRight.Visible := False;
71 PanelLeft.Align := alClient;
73 Caption := '
\83X
\83\8c\83b
\83h
\91I
\91ð';
76 CenterForm := TCustomForm(Owner);
77 if Assigned(CenterForm) then begin
78 Left := ((CenterForm.Width - Width) div 2) + CenterForm.Left;
79 Top := ((CenterForm.Height - Height) div 2) + CenterForm.Top;
81 Left := (Screen.Width - Width) div 2;
82 Top := (Screen.Height - Height) div 2;
86 if (BBSs[0].IsBoardFileRead = False) then
87 GikoSys.ReadBoardFile(BBSs[0]);
88 for i := 0 to BBSs[0].Count - 1 do begin
89 ListCat.Items.Add(BBSs[0].Items[i].Title);
90 if (Sel = -1) and (FBoardID <> '') then begin
91 for j := 0 to BBSs[0].Items[i].Count - 1 do begin
92 if (FBoardID = BBSs[0].Items[i].Items[j].BBSID) then begin
100 if (Sel >= 0) then begin
101 ListCat.ItemIndex := Sel;
102 ListCatClick(ListCat);
108 procedure TBbsThreadSel.ListCatClick(Sender: TObject);
115 Idx := ListCat.ItemIndex;
116 if (Idx >= 0) and (Idx < ListCat.Count) then begin
117 if (FInit = True) and (FBoardID <> '') then
123 if (FThreadMode = True) then
125 for i := 0 to BBSs[0].Items[Idx].Count - 1 do begin
126 ListBrd.Items.Add(BBSs[0].Items[Idx].Items[i].Title);
127 if (SelBrd = True) and (Sel = -1) then begin
128 if (FBoardID = BBSs[0].Items[Idx].Items[i].BBSID) then
132 if (Sel >= 0) then begin
133 ListBrd.ItemIndex := Sel;
134 ListBrdClick(ListBrd);
139 procedure TBbsThreadSel.ListBrdClick(Sender: TObject);
149 Idx1 := ListCat.ItemIndex;
150 Idx2 := ListBrd.ItemIndex;
151 if (Idx1 >= 0) and (Idx1 < ListCat.Count) and
152 (Idx2 >= 0) and (Idx2 < ListBrd.Count) then begin
153 Brd := BBSs[0].Items[Idx1].Items[Idx2];
155 if (FThreadMode = False) then begin
156 if (FInit = False) then begin
157 FBoardID := Brd.BBSID;
158 FBoardTitle := Brd.Title;
163 OldThr := TStringList.Create;
164 if (EditFilter.Text = '') then begin
168 Filt := ZenToHan(EditFilter.Text);
171 if (Brd.IsThreadDatRead = False) then
172 GikoSys.ReadSubjectFile(Brd);
173 for i := 0 to Brd.Count - 1 do begin
174 if (IsFilt = False) or
175 ((IsFilt = True) and (AnsiPos(Filt, ZenToHan(Brd.Items[i].Title)) > 0)) then begin
176 if (Brd.Items[i].AgeSage = gasArch) then //
\89ß
\8b\8e\83\8d\83O
177 OldThr.AddObject(Brd.Items[i].Title, TObject(i))
179 ListThr.Items.AddObject(Brd.Items[i].Title, TObject(i));
182 for i := OldThr.Count - 1 downto 0 do begin
183 ListThr.Items.AddObject(OldThr.Strings[i], OldThr.Objects[i]);
186 if (FInit = True) and (FThreadMode = True) and (FThreadID <> '') then begin
187 for i := 0 to ListThr.Count - 1 do begin
188 if (FThreadID = ChangeFileExt(Brd.Items[Integer(ListThr.Items.Objects[i])].FileName, '')) then begin
189 ListThr.ItemIndex := i;
198 procedure TBbsThreadSel.ListThrClick(Sender: TObject);
206 if (FThreadMode = True) then begin
207 Idx1 := ListCat.ItemIndex;
208 Idx2 := ListBrd.ItemIndex;
209 Idx3 := ListThr.ItemIndex;
210 if (Idx1 >= 0) and (Idx1 < ListCat.Count) and
211 (Idx2 >= 0) and (Idx2 < ListBrd.Count) and
212 (Idx3 >= 0) and (Idx3 < ListThr.Count) then begin
213 Brd := BBSs[0].Items[Idx1].Items[Idx2];
214 Idx4 := Integer(ListThr.Items.Objects[Idx3]);
215 if (Idx4 >= 0) and (Idx4 < Brd.Count) then begin
216 FBoardID := Brd.BBSID;
217 FBoardTitle := Brd.Title;
218 FThreadID := ChangeFileExt(Brd.Items[Idx4].FileName, '');
219 FThreadTitle := Brd.Items[Idx4].Title;
226 procedure TBbsThreadSel.ButtonFilterClick(Sender: TObject);
228 ListBrdClick(ListBrd);
231 procedure TBbsThreadSel.PanelThrResize(Sender: TObject);
233 ButtonFilter.Left := PanelThr.Width - ButtonFilter.Width - 2;
234 EditFilter.Width := ButtonFilter.Left - 4;
237 procedure TBbsThreadSel.EditFilterKeyPress(Sender: TObject; var Key: Char);
239 if (Integer(Key) = VK_RETURN) then begin
241 ListBrdClick(ListBrd);