unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, StdCtrls; Const TeamList = 'teams.lst'; TeamFile = 'tfile.lst'; Swap = 'swap.swp'; FullViewMode = 1; type TForm1 = class(TForm) MainMenu: TMainMenu; File1: TMenuItem; Window1: TMenuItem; Help1: TMenuItem; Exit1: TMenuItem; NewTeam1: TMenuItem; Index1: TMenuItem; About1: TMenuItem; ShowAll1: TMenuItem; Open1: TMenuItem; Delete1: TMenuItem; AddFile1: TMenuItem; OpenDialog1: TOpenDialog; Rename1: TMenuItem; LoadText1: TMenuItem; Teams: TListBox; procedure About1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TeamsDblClick(Sender: TObject); procedure ShowAll1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure NewTeam1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Delete1Click(Sender: TObject); procedure AddFile1Click(Sender: TObject); procedure Rename1Click(Sender: TObject); procedure LoadText1Click(Sender: TObject); procedure TeamsDragDrop(Sender, Source: TObject; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; S,OO,T : TextFile; CX,CY : Integer; Function GetSel : Integer; implementation uses Unit2, Unit3, TeamUnit; {$R *.DFM} Procedure _Tile; var I : Integer; Begin CX := Form1.Left + Form1.Width + 10; CY := 10; For I := 0 to Application.ComponentCount-1 Do If Application.Components[I] is tTeamForm Then If tTeamForm(Application.Components[i]).Visible Then Begin Inc(CX,20); Inc(CY,20); End; //ShowMessage( IntToSTr(CY) ); End; Function GetSel : Integer; Var I : Integer; Begin Result := -1; For I := 0 to Form1.Teams.Items.Count-1 Do Begin If Form1.Teams.Selected[I] then Result := I; End; // Showmessage( IntToStr(Result) ); End; procedure TForm1.About1Click(Sender: TObject); begin AboutBox.Show; end; Procedure BuildList; Begin ChDir(extractFilePath(application.exeNaME)); Form1.Teams.Items.Clear; If FileExists(teamlist) then Form1.Teams.Items.LoadFromFile( teamlist ) Else If FileExists('teams.bak') Then Begin RenameFile('teams.bak',teamlist); Form1.Teams.Items.LoadFromFile( teamlist ); End; DeleteFile('teams.bak'); RenameFile(teamlist,'teams.bak'); End; procedure TForm1.FormCreate(Sender: TObject); begin BuildList; Height := Screen.Height - 50; Teams.Height := clientHeight - Teams.Top - 30; top := 0; Left := 0; CX := Width + 10; CY := 10; Window1.NewBottomLine; end; procedure TForm1.TeamsDblClick(Sender: TObject); var tt : String; X : tObject; begin //tt := Teams.Items[Teams.ItemAtPos(Point(Mouse.CursorPos.X-Left-Teams.Left,Mouse.CursorPos.y-Top-Teams.Top),True)] + '.rob'; ChDir(extractFilePath(application.exeNaME)); tt := Teams.Items.Strings[GetSel] + '.rob'; _Tile; If not (tt = '.rob') then If FileExists(tt) then X := TTeamForm.Create( Form1, FullViewMode, Window1, tt ) Else Teams.Items.Delete(GetSel); If (CX+TForm(X).Width) < Screen.Width Then TForm(X).Left := CX; If (Cy+TForm(X).Height) < Screen.Height Then TForm(X).Top := CY; end; procedure TForm1.ShowAll1Click(Sender: TObject); Var I : Integer; begin With ShowAll1.Parent Do For I := 0 to Count-1 Do Begin If items[i].GroupIndex = 42 Then Items[I].OnClick( self ); End; end; procedure TForm1.Exit1Click(Sender: TObject); begin Close; end; procedure TForm1.Open1Click(Sender: TObject); begin TeamsDblClick(sender); end; procedure TForm1.NewTeam1Click(Sender: TObject); var Entry : String; FName : String; tt : TTreeNode; ps : ^String; X : tObject; begin //entry name, filename Repeat If not InputQuery( 'FileName','Type file name',Fname) Then Exit; If Pos('.',FName) <> 0 Then ShowMessage('Reenter with no extension'); If FileExists(FName+'.rob') Then ShowMessage('File already exists'); Until (Pos('.',FName) = 0) AND (Not FileExists(FName+'.rob')); Teams.Items.Add(FName); FName := FName + '.rob'; _Tile; X := TTeamForm.Create( Form1, FullViewMode, Window1, fName ); If (CX+TForm(X).Width) < Screen.Width Then TForm(X).Left := CX; If (Cy+TForm(X).Height) < Screen.Height Then TForm(X).Top := CY; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ChDir(extractFilePath(application.exeNaME)); Teams.Items.SaveToFile(teamlist); end; procedure TForm1.Delete1Click(Sender: TObject); var P : String; begin If GetSel = -1 then Exit; Teams.Items.Delete(GetSel); // BuildList; end; procedure TForm1.AddFile1Click(Sender: TObject); var Entry : String; FName : String; tt : TTreeNode; ps : ^String; X : tObject; begin //entry name, filename //If not InputQuery( 'Entry','Type entry name',Entry) Then Exit; ChDir( ExtractFilePath( Application.ExeName) ); //penDialog1.InitialDir := ''; If OpenDialog1.Execute Then FName := OpenDialog1.FileName; FName := ExtractFileName(Fname); //WriteLn(S, Entry); //FName := FName + '.rob'; //Writeln(S,FName); Teams.Items.Add(Crop(fname)); _Tile; X := TTeamForm.Create( Form1, FullViewMode, Window1, FName ); If CX+TForm(X).Width < Screen.Width Then TForm(X).Left := CX; If Cy+TForm(X).Height < Screen.Height Then TForm(X).Top := CY; end; procedure TForm1.Rename1Click(Sender: TObject); Var FileName,ps : ^String; TT : TTreeNode; Entry : String; I : Integer; begin {FileName := teams.Selected.Data; Entry := Teams.Selected.Text; Delete1Click(Sender); Entry := InputBox('Entry','New Name',Entry); WriteLn(S, Entry); //FName := FName + '.rob'; Writeln(S,FileName^); new(pS); pS^ := FileName^; tt := Teams.Items.AddChildFirst(nil,Entry); tt.Data := pS; } I := GetSel; Entry := Teams.Items.Strings[I]; Repeat If not InputQuery('Rename file','New name',Entry) Then Exit; Until (Not FileExists(Entry)) AND (Pos('.',Entry)=0); ReNameFile( Teams.Items.Strings[i]+'.rob', Entry+'.rob' ); Teams.Items.Delete(I); Teams.Items.Add(Entry); end; procedure TForm1.LoadText1Click(Sender: TObject); Var fName : String; InF : TextFile; OutF : TextFile; OutOpen : Boolean; C : String; begin If Not InputQuery('Load File','Enter name of text file',FName) Then Exit; AssignFile( InF, FName ); OutOpen := False; Reset ( InF ); While Not Eof(InF) do Begin ReadLn( InF, C ); If Length(C) >= 1 Then Case C[1] of '$' : Begin If OutOpen Then CloseFile( OutF ); FName := Chop(C); If FileExists(Chop(C) + '.rob') Then Begin FName := Fname + '.rob'; Teams.Items.Add( Crop(fname) ); OutOpen := False; End Else Begin {Repeat If not InputQuery('File Name','Enter a file name' ,fname) then exit; Until (Pos('.',Fname) <> 0) AND (Not FileExists(FName + '.rob')); } FName := FName + '.rob'; AssignFile( OutF, fName ); ReWrite ( OutF ); OutOpen := True; Teams.Items.Add( Crop(fname) ); End; End; '#','!' : Begin If OutOpen then WriteLn(OutF,C); End; '-' : Begin If OutOpen then WriteLn(OutF,C); End; End; End; If OutOpen Then CloseFile( OutF ); CloseFile ( InF ); end; procedure TForm1.TeamsDragDrop(Sender, Source: TObject; X, Y: Integer); begin ShowMessage(Sender.Classname); end; Initialization // AssignFile(t,teamlist); // AssignFile( S, swap ); end.