Hint = #31227#36578#12375#12390#12356#12427#26495#12398'URL'#12434#26908#32034#12377#12427
OnExecute = NewBoardSearchActionExecute
end
+ object NGWordEditFormAction: TAction
+ Category = 'NGword'
+ Caption = 'NG'#12527#12540#12489#32232#38598#12501#12457#12540#12512
+ Hint = 'NG'#12527#12540#12489#32232#38598#12501#12457#12540#12512#12458#12540#12503#12531
+ OnExecute = NGWordEditFormActionExecute
+ end
end
object ToobarImageList: TImageList
Left = 44
NewImageLinkToClipBoardAction: TAction;
SetForcusForAddresBarAction: TAction;
NewBoardSearchAction: TAction;
+ NGWordEditFormAction: TAction;
procedure EditNGActionExecute(Sender: TObject);
procedure ReloadActionExecute(Sender: TObject);
procedure GoFowardActionExecute(Sender: TObject);
procedure AllImageLinkToClipbordActionExecute(Sender: TObject);
procedure SetForcusForAddresBarActionExecute(Sender: TObject);
procedure NewBoardSearchActionExecute(Sender: TObject);
+ procedure NGWordEditFormActionExecute(Sender: TObject);
private
{ Private \90é\8c¾ }
procedure ClearResFilter;
GikoBayesian, About, ShellAPI,
RoundName, RoundData, Menus, ListViewUtils,
ThreadControl, GikoMessage, InputAssist,
- DefaultFileManager, Forms, NewBoardURL;
+ DefaultFileManager, Forms, NewBoardURL, NGWordEdit;
const
MSG_ERROR : string = '\83G\83\89\81[';
end;
end;
+procedure TGikoDM.NGWordEditFormActionExecute(Sender: TObject);
+var
+ form: TNGWordEditForm;
+begin
+ form := TNGWordEditForm.Create(Self);
+ try
+ form.ShowModal;
+ finally
+ form.Release;
+ end;
+end;
+
end.
ZERO_DATE: Integer = 25569;
BETA_VERSION_NAME_E = 'beta';
BETA_VERSION_NAME_J = 'ÊÞÀ';
- BETA_VERSION = 54;
+ BETA_VERSION = 55;
BETA_VERSION_BUILD = ''; //!< debug\94Å\82È\82Ç
APP_NAME = 'gikoNavi';
BE_PHP_URL = 'http://be.2ch.net/test/p.php?i=';
--- /dev/null
+object NGWordEditForm: TNGWordEditForm
+ Left = 278
+ Top = 178
+ Width = 490
+ Height = 401
+ Caption = 'NGWordEditForm'
+ Color = clBtnFace
+ Font.Charset = SHIFTJIS_CHARSET
+ Font.Color = clWindowText
+ Font.Height = -12
+ Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
+ Font.Style = []
+ Menu = MainMenu1
+ OldCreateOrder = False
+ OnCreate = FormCreate
+ OnDestroy = FormDestroy
+ PixelsPerInch = 96
+ TextHeight = 12
+ object Panel1: TPanel
+ Left = 0
+ Top = 0
+ Width = 482
+ Height = 153
+ Align = alTop
+ BevelOuter = bvNone
+ Caption = 'Panel1'
+ TabOrder = 0
+ object Panel3: TPanel
+ Left = 359
+ Top = 0
+ Width = 123
+ Height = 153
+ Align = alRight
+ BevelOuter = bvLowered
+ Caption = 'Panel3'
+ TabOrder = 0
+ object AddButton: TButton
+ Left = 24
+ Top = 16
+ Width = 75
+ Height = 25
+ Caption = #36861#21152
+ TabOrder = 0
+ OnClick = AddButtonClick
+ end
+ object DeleteButton: TButton
+ Left = 24
+ Top = 40
+ Width = 75
+ Height = 25
+ Caption = #21066#38500
+ TabOrder = 1
+ OnClick = DeleteButtonClick
+ end
+ object Button3: TButton
+ Left = 24
+ Top = 80
+ Width = 75
+ Height = 25
+ Caption = 'Button3'
+ TabOrder = 2
+ end
+ object Button4: TButton
+ Left = 24
+ Top = 104
+ Width = 75
+ Height = 25
+ Caption = 'Button4'
+ TabOrder = 3
+ end
+ end
+ object GikoListView1: TGikoListView
+ Left = 0
+ Top = 0
+ Width = 359
+ Height = 153
+ Align = alClient
+ Checkboxes = True
+ Columns = <>
+ GridLines = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 1
+ ViewStyle = vsReport
+ OnSelectItem = GikoListView1SelectItem
+ end
+ end
+ object Panel2: TPanel
+ Left = 0
+ Top = 153
+ Width = 482
+ Height = 202
+ Align = alClient
+ BevelOuter = bvNone
+ Caption = 'Panel2'
+ TabOrder = 1
+ object Panel4: TPanel
+ Left = 0
+ Top = 0
+ Width = 482
+ Height = 41
+ Align = alTop
+ BevelOuter = bvNone
+ TabOrder = 0
+ object Label1: TLabel
+ Left = 16
+ Top = 8
+ Width = 48
+ Height = 12
+ Caption = #36969#21512#22580#25152
+ end
+ object Label2: TLabel
+ Left = 237
+ Top = 11
+ Width = 47
+ Height = 12
+ Caption = 'NG'#12527#12540#12489
+ end
+ object ComboBox1: TComboBox
+ Left = 80
+ Top = 8
+ Width = 145
+ Height = 20
+ ItemHeight = 12
+ ItemIndex = 0
+ TabOrder = 0
+ Text = #20840#12390
+ Items.Strings = (
+ #20840#12390
+ #21517#21069#27396
+ #12513#12540#12523#27396
+ #26085#20184#12539'ID'
+ #26412#25991)
+ end
+ object NGWordEdit: TEdit
+ Left = 296
+ Top = 8
+ Width = 161
+ Height = 20
+ TabOrder = 1
+ Text = 'NGWordEdit'
+ end
+ end
+ object Panel5: TPanel
+ Left = 359
+ Top = 41
+ Width = 123
+ Height = 161
+ Align = alRight
+ BevelOuter = bvLowered
+ Caption = 'Panel5'
+ TabOrder = 1
+ object ModifiedNGButton: TButton
+ Left = 24
+ Top = 65
+ Width = 75
+ Height = 25
+ Caption = #22793#26356
+ TabOrder = 0
+ end
+ object AddNGButton: TButton
+ Left = 24
+ Top = 16
+ Width = 75
+ Height = 25
+ Caption = #36861#21152
+ TabOrder = 1
+ OnClick = AddNGButtonClick
+ end
+ object DeleteNGButton: TButton
+ Left = 24
+ Top = 41
+ Width = 75
+ Height = 25
+ Caption = #21066#38500
+ TabOrder = 2
+ OnClick = DeleteNGButtonClick
+ end
+ end
+ object GikoListView2: TGikoListView
+ Left = 0
+ Top = 41
+ Width = 359
+ Height = 161
+ Align = alClient
+ Columns = <>
+ GridLines = True
+ ReadOnly = True
+ RowSelect = True
+ TabOrder = 2
+ ViewStyle = vsReport
+ end
+ end
+ object MainMenu1: TMainMenu
+ Left = 376
+ Top = 48
+ object File1: TMenuItem
+ Caption = 'File'
+ object Load1: TMenuItem
+ Caption = 'Load'
+ OnClick = Load1Click
+ end
+ object Save1: TMenuItem
+ Caption = 'Save'
+ OnClick = Save1Click
+ end
+ end
+ end
+end
--- /dev/null
+unit NGWordEdit;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+ Dialogs, ExtCtrls, StdCtrls, ComCtrls, GikoListView, Menus, GikoXMLDoc,
+ NGWordUnit;
+
+type
+ TNGWordEditForm = class(TForm)
+ Panel1: TPanel;
+ Panel2: TPanel;
+ Panel3: TPanel;
+ AddButton: TButton;
+ DeleteButton: TButton;
+ Button3: TButton;
+ Button4: TButton;
+ Panel4: TPanel;
+ Panel5: TPanel;
+ GikoListView2: TGikoListView;
+ GikoListView1: TGikoListView;
+ ComboBox1: TComboBox;
+ Label1: TLabel;
+ NGWordEdit: TEdit;
+ Label2: TLabel;
+ ModifiedNGButton: TButton;
+ AddNGButton: TButton;
+ DeleteNGButton: TButton;
+ MainMenu1: TMainMenu;
+ File1: TMenuItem;
+ Load1: TMenuItem;
+ Save1: TMenuItem;
+ procedure Load1Click(Sender: TObject);
+ procedure Save1Click(Sender: TObject);
+ procedure FormDestroy(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure GikoListView1SelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+ procedure AddNGButtonClick(Sender: TObject);
+ procedure DeleteNGButtonClick(Sender: TObject);
+ procedure AddButtonClick(Sender: TObject);
+ procedure DeleteButtonClick(Sender: TObject);
+ private
+ { Private \90é\8c¾ }
+ FNGWordList : TNGWordList;
+ function AddNGWord(ngWord: TNGWords): TListItem;
+ procedure AddWord(word: TNGWord);
+ public
+ { Public \90é\8c¾ }
+ end;
+
+var
+ NGWordEditForm: TNGWordEditForm;
+
+implementation
+
+uses
+ GikoSystem;
+{$R *.dfm}
+
+procedure TNGWordEditForm.Load1Click(Sender: TObject);
+var
+ fname : String;
+ i: Integer;
+begin
+ fname := GikoSys.GetAppDir + 'ngwords.xml';
+ if (FNGWordList <> nil) then begin
+ FNGWordList.Free;
+ end else begin
+ FNGWordList := TNGWordList.Create;
+ end;
+ FNGWordList.LoadFromFile(fname);
+ GikoListView1.Items.Clear;
+ for i :=0 to FNGWordList.Count - 1 do begin
+ AddNGWord(TNGWords(FNGWordList.Items[i]));
+ end;
+end;
+function TNGWordEditForm.AddNGWord(ngWord: TNGWords): TListItem;
+begin
+ Result := GikoListView1.Items.Add;
+ Result.ImageIndex := -1;
+ Result.Caption := '';
+ Result.SubItems.Clear;
+ Result.SubItems.Add(ngWord.ToString);
+ Result.Data := ngWord;
+end;
+
+procedure TNGWordEditForm.Save1Click(Sender: TObject);
+begin
+ if (FNGWordList <> nil) then begin
+ FNGWordList.SaveToFrile(GikoSys.GetAppDir + 'ngwords2.xml');
+ end;
+end;
+
+procedure TNGWordEditForm.FormDestroy(Sender: TObject);
+begin
+ if (FNGWordList <> nil) then begin
+ FreeAndNil(FNGWordList);
+ end;
+end;
+
+procedure TNGWordEditForm.FormCreate(Sender: TObject);
+var
+ column1,column2: TListColumn;
+begin
+ GikoListView1.Columns.BeginUpdate;
+ column1 := GikoListView1.Columns.Add;
+ column1.ImageIndex := -1;
+ column1.Caption := '\93§\96¾';
+ column1.DisplayName := '\93§\96¾';
+ column1.Width := 40;
+ column1 := GikoListView1.Columns.Add;
+ column1.ImageIndex := -1;
+ column1.Caption := 'NG\83\8f\81[\83h';
+ column1.DisplayName := 'NG\83\8f\81[\83h';
+ column1.Width := 250;
+ GikoListView1.Columns.EndUpdate;
+
+
+ GikoListView2.Columns.BeginUpdate;
+ column2 := GikoListView2.Columns.Add;
+ column2.ImageIndex := -1;
+ column2.Caption := '\93K\89\9e\8fê\8f\8a';
+ column2.DisplayName := '\93K\89\9e\8fê\8f\8a';
+ column2.Width := 100;
+ column2 := GikoListView2.Columns.Add;
+ column2.ImageIndex := -1;
+ column2.Caption := '\83\8f\81[\83h';
+ column2.DisplayName := '\83\8f\81[\83h';
+ column2.Width := 190;
+ GikoListView2.Columns.EndUpdate;
+
+end;
+// \8fã\95\94\83\8a\83X\83g\91I\91ð\83C\83x\83\93\83g
+procedure TNGWordEditForm.GikoListView1SelectItem(Sender: TObject;
+ Item: TListItem; Selected: Boolean);
+var
+ ngWord : TNGWords;
+ i: Integer;
+begin
+ if (Item <> nil) and (Item.Data <> nil) then begin
+ ngWord := TNGWords(item.Data);
+ GikoListView2.items.Clear;
+ for i := 0 to ngWord.Count - 1 do begin
+ AddWord( TNGWord(ngWord.Items[i]) );
+ end;
+ end;
+end;
+// \89º\95\94\83\8a\83X\83g\92Ç\89Á\83\81\83\\83b\83h
+procedure TNGWordEditForm.AddWord(word: TNGWord);
+var
+ litem: TListItem;
+begin
+ litem := GikoListView2.Items.Add;
+ litem.ImageIndex := -1;
+ case Integer(word.NGType) of
+ Integer(gntAll): litem.Caption := '\91S\95\94';
+ Integer(gntName): litem.Caption := '\96¼\91O\97\93';
+ Integer(gntMail): litem.Caption := '\83\81\81[\83\8b\97\93';
+ Integer(gntDateId):litem.Caption := '\93ú\95tID\97\93';
+ Integer(gntBody): litem.Caption := '\96{\95¶';
+ end;
+ litem.SubItems.Clear;
+ litem.SubItems.Add(word.Word);
+ litem.Data := word;
+end;
+//! NG\83\8f\81[\83h\92Ç\89Á\83{\83^\83\93
+procedure TNGWordEditForm.AddNGButtonClick(Sender: TObject);
+var
+ litem: TListItem;
+ word: TNGWord;
+begin
+ // \8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\8ds\82ð\8eæ\93¾\82·\82é
+ litem := GikoListView1.Selected;
+ if (litem <> nil) then begin
+ if NGWordEdit.Text <> '' then begin
+ word := TNGWord.Create;
+ word.NGType := TGikoNGType(ComboBox1.ItemIndex);
+ word.Word := NGWordEdit.Text;
+ TNGWords(litem.Data).Add(word);
+ AddWord(word);
+ litem.SubItems.Clear;
+ litem.SubItems.Add(TNGWords(litem.Data).ToString);
+ end else begin
+ ShowMessage('NG\83\8f\81[\83h\82Í\8bó\97\93\82Å\93o\98^\82Å\82«\82Ü\82¹\82ñ');
+ end;
+ end;
+end;
+//! NG\83\8f\81[\83h\8dí\8f\9c\83{\83^\83\93
+procedure TNGWordEditForm.DeleteNGButtonClick(Sender: TObject);
+var
+ litem, litem2: TListItem;
+begin
+ // \8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\8ds\82ð\8eæ\93¾\82·\82é
+ litem := GikoListView1.Selected;
+ if (litem <> nil) then begin
+ litem2 := GikoListView2.Selected;
+ if litem2 <> nil then begin
+ TNGWords(litem.Data).Delete(TNGWord(litem2.Data));
+ litem.Caption := TNGWords(litem.Data).ToString;
+ end;
+ GikoListView2.DeleteSelected;
+ end;
+end;
+//!
+procedure TNGWordEditForm.AddButtonClick(Sender: TObject);
+var
+ ngWords: TNGWords;
+begin
+ if (FNGWordList <> nil) then begin
+ ngWords := TNGWords.Create;
+ FNGWordList.Add(ngWords);
+ GikoListView1.Selected := AddNGWord(ngWords);
+ GikoListView1.SetFocus;
+ end;
+end;
+//!
+procedure TNGWordEditForm.DeleteButtonClick(Sender: TObject);
+var
+ litem: TListItem;
+begin
+ // \8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\8ds\82ð\8eæ\93¾\82·\82é
+ litem := GikoListView1.Selected;
+ if (litem <> nil) and (FNGWordList <> nil) then begin
+ FNGWordList.Delte( TNGWords(litem.Data));
+ GikoListView1.DeleteSelected;
+ end;
+end;
+
+
+end.
--- /dev/null
+unit NGWordUnit;
+
+interface
+uses
+ Windows,Messages, ShellAPI, SysUtils, Classes,StdCtrls,StrUtils,
+ GikoXMLDoc;
+
+type
+ //\83\8a\83X\83g\82Ì\95\\8e¦\83A\83C\83e\83\80\91I\91ð
+ TGikoNGType = (gntAll, gntName, gntMail, gntDateId, gntBody);
+
+ {\
+ NG\83\8f\81[\83h\83N\83\89\83X
+ }
+ TNGWord = class( TObject )
+ private
+ FRank : Integer;
+ FNGType : TGikoNGType;
+ FWord : String;
+ public
+ procedure ReadXMLElement(element :IXMLNode);
+ function ToXMLString(): String;
+ property Rank : Integer read FRank write FRank;
+ property NGType : TGikoNGType read FNGType write FNGType;
+ property Word : String read FWord write FWord;
+ end;
+
+ {\
+ NG\83\8f\81[\83h\8fW\8d\87\83N\83\89\83X
+ }
+ TNGWords = class( TList )
+ private
+ FRank : Integer;
+ FInvisible: Boolean;
+ public
+ constructor Create;
+ procedure Free;
+ property Rank : Integer read FRank write FRank;
+ property Invisible : Boolean read FInvisible write FInvisible;
+ function ReadXMLElement(element :IXMLNode): Boolean;
+ function ToXMLString(): String;
+ function ToString(): String;
+ procedure Delete(word: TNGWord); overload;
+ end;
+
+ {\
+ NG\83\8f\81[\83h\8aÇ\97\9d\83N\83\89\83X
+ }
+ TNGWordList = class( TList )
+ private
+ public
+ procedure Free;
+ procedure LoadFromFile(fileName: String);
+ procedure SaveToFrile(fileName: String);
+ procedure Delte(NGWords: TNGWords); overload;
+ end;
+
+ function CompareRank(Item1, Item2: Pointer): Integer;
+
+implementation
+
+uses
+ MojuUtils, Sort;
+
+function CompareRank(Item1, Item2: Pointer): Integer;
+begin
+ if TObject(item1) is TNGWords then begin
+ Result := CompareInt(
+ TNGWords(Item1).Rank, TNGWords(Item2).Rank);
+ end else begin
+ Result := CompareInt(
+ TNGWord(Item1).Rank, TNGWord(Item2).Rank);
+ end;
+end;
+constructor TNGWords.Create;
+begin
+ FRank := 0;
+end;
+procedure TNGWords.Free;
+var
+ i: Integer;
+begin
+ for i := 0 to Count - 1 do begin
+ TObject(Items[i]).Free;
+ end;
+ inherited Free;
+end;
+function TNGWords.ReadXMLElement(element :IXMLNode): Boolean;
+var
+ i, bound : Integer;
+ NGWordNode: IXMLNode;
+ NG: TNGWord;
+begin
+ Result := False;
+ if element.NodeName = 'NGWords' then begin
+ Rank := StrToIntDef(element.Attributes['rank'],
+ MaxInt);
+ Invisible := StrToBoolDef(element.Attributes['invisible'],
+ False);
+ bound := element.ChildNodes.Count - 1;
+ for i := 0 to bound do begin
+ NGWordNode := element.ChildNodes[i];
+ if NGWordNode.NodeName = 'NGWord' then begin
+ NG := TNGWord.Create;
+ NG.ReadXMLElement( NGWordNode );
+ Add(NG);
+ end;
+ end;
+ Sort(@CompareRank);
+ Result := True;
+ end;
+end;
+function TNGWords.ToXMLString(): String;
+var
+ i: Integer;
+begin
+ Result := '<NGWords ' +
+ 'rank="' + IntToStr(FRank) + '" ' +
+ 'invisible="' + BoolToStr(Invisible) + '" >'#13#10;
+ for i := 0 to Count - 1 do begin
+ Result := Result + TNGWord(Items[i]).ToXMLString + #13#10;
+ end;
+ Result := Result + '</NGWords>';
+end;
+function TNGWords.ToString(): String;
+var
+ i: Integer;
+begin
+ Result := '';
+ for i := 0 to Count - 1 do begin
+ Result := Result + TNGWord(Items[i]).Word + ' , ';
+ end;
+end;
+procedure TNGWords.Delete(word: TNGWord);
+var
+ i: Integer;
+begin
+ for i := Count - 1 downto 0 do begin
+ if ( Items[i] = word ) then begin
+ TNGWord(Items[i]).Free;
+ Self.Delete(i);
+ break;
+ end;
+ end;
+end;
+procedure TNGWord.ReadXMLElement(element :IXMLNode);
+begin
+ FRank := StrToIntDef(element.Attributes['rank'],
+ MaxInt);
+ FNGType := TGikoNGType(StrToIntDef(
+ Trim(element.Attributes['ngtype']),
+ Integer(gntAll)));
+
+ FWord := Trim(element.Attributes['word']);
+ if FWord <> '' then begin
+ FWord := MojuUtils.UnSanitize( FWord );
+ end;
+end;
+function TNGWord.ToXMLString(): String;
+begin
+ Result := '<NGWord ' +
+ 'rank="' + IntToStr(FRank) + '" ' +
+ 'ngtype="' + IntToStr(Integer(FNGType)) + '" ' +
+ 'word="' + MojuUtils.Sanitize(FWord) + '" />';
+end;
+
+procedure TNGWordList.Free;
+var
+ i: Integer;
+begin
+ for i := Self.Count - 1 downto 0 do begin
+ TNGWords(Self.Items[i]).Free;
+ end;
+ inherited Free;
+end;
+
+procedure TNGWordList.SaveToFrile(fileName: String);
+var
+ xmlStrings: TStringList;
+ i: Integer;
+begin
+ xmlStrings := TStringList.Create;
+ try
+ xmlStrings.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
+ xmlStrings.Add('<root>');
+ for i := 0 to Self.Count - 1 do begin
+ xmlStrings.Add(
+ TNGWords(Self.Items[i]).ToXMLString);
+
+ end;
+ xmlStrings.Add('</root>');
+ xmlStrings.SaveToFile(fileName);
+ finally
+ xmlStrings.Free;
+ end;
+end;
+
+procedure TNGWordList.LoadFromFile(fileName: String);
+
+var
+ i, bound : Integer;
+ XMLDoc : IXMLDocument;
+ XMLNode: IXMLNode;
+ NG : TNGWords;
+{$IFDEF DEBUG}
+ st, rt : Cardinal;
+{$ENDIF}
+begin
+{$IFDEF DEBUG}
+ st := GetTickCount;
+{$ENDIF}
+ if FileExists( FileName ) then begin
+ if (Self.Count > 0) then begin
+ Self.Free;
+ Self.Capacity := 0;
+ end;
+ try
+ XMLDoc := IXMLDocument.Create;
+ //XMLDoc := LoadXMLDocument(FileName);
+ LoadXMLDocument(FileName, XMLDoc);
+ try
+ XMLNode := XMLDoc.DocumentElement;
+
+ if XMLNode.NodeName = 'root' then begin
+ bound := XMLNode.ChildNodes.Count - 1;
+ for i := 0 to bound do begin
+ NG := TNGWords.Create;
+ if (NG.ReadXMLElement(XMLNode.ChildNodes[i])) then
+ Self.Add(NG);
+ end;
+ end;
+ Sort(@CompareRank);
+ finally
+ XMLDoc.Free;
+ end;
+ except
+ end;
+ end;
+{$IFDEF DEBUG}
+ rt := GetTickCount - st;
+ Writeln('Runtime(Load NGWords) : ' + IntToStr(rt) + ' ms');
+{$ENDIF}
+end;
+procedure TNGWordList.Delte(NGWords: TNGWords);
+var
+ i: Integer;
+begin
+ for i := Count - 1 downto 0 do begin
+ if ( Items[i] = NGWords ) then begin
+ TNGWords(Items[i]).Free;
+ Self.Delete(i);
+ break;
+ end;
+ end;
+end;
+
+end.
MoveHistoryItem in 'MoveHistoryItem.pas',
SambaTimer in 'SambaTimer.pas',
HistoryList in 'HistoryList.pas',
- NewBoardURL in 'NewBoardURL.pas' {NewBoardURLForm};
+ NewBoardURL in 'NewBoardURL.pas' {NewBoardURLForm},
+ NGWordUnit in 'NGWordUnit.pas',
+ NGWordEdit in 'NGWordEdit.pas' {NGWordEditForm};
{$R *.RES}
{$R gikoResource.res}