procedure SameBoardThreadSubItemOnClick(Sender: TObject);
//! \83|\83b\83v\83A\83b\83v\83u\83\89\83E\83U\8dì\90¬
procedure CreateResPopupBrowser;
+ //! D&D\82ð\8eó\82¯\8eæ\82é
+ procedure WMDropFiles(var Msg: TWMDropFiles); Message WM_DropFiles;
+ //! \83t\83@\83C\83\8b\83`\83F\83b\83N
+ function isValidFile(FileName: String) : boolean;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
//\92u\8a·\90Ý\92è\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý
ReplaceDM.LoadFromFile(GikoSys.GetReplaceFileName);
+ // D&D\82ð\8eó\82¯\8eæ\82é
+ DragAcceptFiles(Self.Handle, True);
end;
// CoolBar \82Ì\90Ý\92è\82ð\95Ï\90\94\82É\95Û\91¶
GikoDM.TabsOpenAction.Execute;
GikoDM.TabsOpenAction.Tag := 0;
if (GikoSys.Setting.LastCloseTabURL <> '') then begin
+ PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( FActiveContent.Browser ), 0 );
+ if ( FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ while (FActiveContent.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (FActiveContent.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Application.ProcessMessages;
+ end;
+ end;
item := BBSsFindThreadFromURL( GikoSys.Setting.LastCloseTabURL );
if (item <> nil) and (item.IsLogFile) then begin
OpenThreadItem(item, item.URL);
begin
Thread := inThread;
idx := BrowserTab.TabIndex;
- if (FActiveContent <> nil) and
+ if (not FStartUp) and
+ (FActiveContent <> nil) and
(FActiveContent.Thread <> Thread.Thread) and
(FActiveContent.Browser <> nil) and
(Assigned(FActiveContent.Browser.Document)) then begin
FResPopupBrowser := TResPopupBrowser.Create(BrowserPanel);
end;
end;
+//! \8aO\82©\82ç\82ÌD&D\8f\88\97\9d
+procedure TGikoForm.WMDropFiles(var Msg: TWMDropFiles);
+var
+ FileName: Array[0..MAX_PATH] of Char;
+ Cnt, K: Integer;
+ Board: TBoard;
+ LogFolder: String;
+ datList: TStringList;
+begin
+ // \95\\8e¦\82µ\82Ä\82¢\82é\82Ì\94Â\82Ì\82Æ\82«\88È\8aO\82Í\8b\91\94Û
+ if GetActiveList is TBoard then begin
+ Board := TBoard(GetActiveList);
+ if MsgBox(Handle, Board.Title
+ + ' \94Â\82É\93ü\82ê\82Ä\82¢\82¢\82Å\82·\82©\81H', '\83M\83R\83i\83r', MB_YESNO or MB_ICONQUESTION) = IDYES then begin
+ // \94Â\82Ì\8e\9e\82Í\81A\83\8d\83O\83t\83H\83\8b\83_\82É\83R\83s\81[\82µ\82Ä\82Í\82®\82ê\83\8d\83O\91Î\89\9e\82Æ\93¯\82¶\8f\88\97\9d\81H
+ datList := TStringList.Create;
+ try
+ Cnt := DragQueryFile(Msg.Drop, $FFFFFFFF, FileName, SizeOf(FileName));
+ for K := 0 to Cnt - 1 do begin
+ DragQueryFile(Msg.Drop, K, FileName, SizeOf(FileName));
+ {FileName\82Édrop\82³\82ê\82½\83t\83@\83C\83\8b\96¼\82ª\93ü\82Á\82Ä\82¢\82é\82Ì\82Å\81A\82±\82±\82Å\89½\82ç\82©\82Ì\8f\88\97\9d\82ð\82·\82é\81B\82½\82Æ\82¦\82Î\8e\9f\82Ì\8ds}
+ // \83t\83@\83C\83\8b\82Ì\83`\83F\83b\83N
+ if (isValidFile(FileName)) then begin
+ LogFolder := ExtractFilePath(Board.FilePath);
+ if (FileExists( LogFolder + ExtractFileName(FileName))) then begin
+ GikoUtil.MsgBox(Handle, LogFolder + '\82É' + ExtractFileName(FileName) + '\82ª\8aù\82É\91¶\8dÝ\82µ\82Ü\82·\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end else begin
+ if (not DirectoryExists(LogFolder)) then begin
+ if (not GikoSys.ForceDirectoriesEx(LogFolder) ) then begin
+ GikoUtil.MsgBox(Handle, LogFolder + '\82Ì\90¶\90¬\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end;
+ end;
+ if (not Windows.CopyFile(FileName, PChar(LogFolder + ExtractFileName(FileName)), true)) then begin
+ GikoUtil.MsgBox(Handle, FileName + '\82Ì\83R\83s\81[\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end else begin
+ datList.Add(ExtractFileName(FileName));
+ end;
+ end;
+ end;
+ end;
+ DragFinish(Msg.Drop);
+ if (datList.Count > 0) then begin
+ GikoSys.AddOutofIndexDat(Board, datList, False);
+ ShowMessage(IntToStr(datList.Count) + '\8cÂ\82Ìdat\83t\83@\83C\83\8b\82ª\83R\83s\81[\82³\82ê\82Ü\82µ\82½\81B' );
+ if GikoForm.TreeView.Visible then
+ GikoForm.TreeView.Refresh;
+ if GikoForm.ListView.Visible then
+ GikoForm.ListView.Refresh;
+ end else begin
+ ShowMessage('\88ê\82Â\82à\83R\83s\81[\82³\82ê\82Ü\82¹\82ñ\82Å\82µ\82½\81B' );
+ end;
+ finally
+ datList.Free;
+ end;
+
+ end;
+ end else begin
+ ShowMessage('\94Â\82ð\95\\8e¦\82µ\82Ä\82\82¾\82³\82¢\81B');
+ end;
+end;
+//! \83t\83@\83C\83\8b\83`\83F\83b\83N
+function TGikoForm.isValidFile(FileName: String) : boolean;
+var
+ tmp: String;
+ unixtime: Int64;
+ dt: TDateTime;
+begin
+ Result := True;
+ // \91¶\8dÝ\82·\82é\82©\81A\8ag\92£\8eqdat\81A\83t\83@\83C\83\8b\96¼
+ if ( not FileExists(FileName) ) then begin
+ Result := False;
+ GikoUtil.MsgBox(Handle, FileName + '\82Í\91¶\8dÝ\82µ\82Ü\82¹\82ñ\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end else if (ExtractFileExt(ExtractFileName(FileName)) <> '.dat' ) then begin
+ Result := False;
+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + '\82Ì\8ag\92£\8eq\82ª".dat"\82Å\82 \82è\82Ü\82¹\82ñ\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end else begin
+ // \83\8d\83O\83t\83@\83C\83\8b\82Ì\8ag\92£\8eq\82ð\82Í\82¸\82µ\82½\82à\82Ì\82ª\83X\83\8c\8dì\90¬\93ú\8e\9e
+ try
+ dt := GikoSys.GetCreateDateFromName(FileName);
+ if ((UnixToDateTime(ZERO_DATE) + OffsetFromUTC) = dt) then begin
+ Result := False;
+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + '\82Ì\83t\83@\83C\83\8b\96¼\82ª\95s\90³\82Å\82·\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end;
+ except
+ Result := False;
+ GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + '\82Ì\83t\83@\83C\83\8b\96¼\82ª\95s\90³\82Å\82·\81B', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
+ end;
+ end;
+end;
initialization
OleInitialize(nil);