Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open System.Drawing
- open System.Windows.Forms
- open System.Windows.Forms.DataVisualization.Charting
- open System.IO
- type FileMetaData = {Name: string; Size: int64;}
- module FileData =
- let GetFileList (path:string) =
- DirectoryInfo(path).EnumerateFiles("*",SearchOption.AllDirectories)
- |> Seq.map(fun x -> {Name = x.FullName; Size = x.Length})
- let getFileMetadata paths = paths |> Seq.collect GetFileList |> List.ofSeq
- type public MainForm() as form =
- inherit Form()
- // TODO define your controls
- let button1 = new Button()
- let button2 = new Button()
- let button3 = new Button()
- let listbox = new ListBox()
- let textbox = new TextBox()
- let picture = new PictureBox()
- // TODO initialize your controls
- let initControls() =
- //listbox.FormattingEnabled <- true
- listbox.Location <- Point(12, 91)
- listbox.Size <- Size(183, 368)
- button1.Location <- Point(13, 13)
- button1.Size <- Drawing.Size(75, 23)
- button1.Text <- "Выбрать папку"
- button2.Location <- Point(121, 12)
- button2.Size <- Size(75, 23)
- button2.Text <- "Очистить"
- button3.Location <- Point(215, 12)
- button3.Size <- Size(75, 23)
- button3.Text <- "Построить"
- textbox.Location <- Point(13, 53)
- textbox.Size <- Size(559, 20)
- picture.Size <- Size(357, 368)
- picture.Location <- Point(215, 91)
- button1.Click.AddHandler(new EventHandler
- (fun sender e -> form.SelectFolder(sender, e)))
- button2.Click.AddHandler(new EventHandler
- (fun sender e -> form.ClearFolder(sender, e)))
- button3.Click.AddHandler(new EventHandler
- (fun sender e -> form.Plot(sender, e)))
- do
- form.SuspendLayout();
- initControls()
- // TODO add controls to the form
- form.Controls.Add(button1)
- form.Controls.Add(button2)
- form.Controls.Add(button3)
- form.Controls.Add(textbox)
- form.Controls.Add(listbox)
- form.Controls.Add(picture)
- // TODO define form properties
- form.AutoScaleDimensions <- SizeF(6.0f, 13.0f)
- form.AutoScaleMode <- AutoScaleMode.Font
- form.ClientSize <- new Size(584, 471)
- form.Text <- "Main Form"
- // render the form
- form.ResumeLayout(false)
- form.PerformLayout()
- // TODO define your event handlers
- member form.SelectFolder(sender:obj, e:EventArgs) =
- use dialog = new FolderBrowserDialog(RootFolder = Environment.SpecialFolder.MyComputer)
- if dialog.ShowDialog() = DialogResult.OK then
- listbox.Items.Add(dialog.SelectedPath) |> ignore
- ()
- member form.ClearFolder(sender:obj, e:EventArgs) =
- listbox.Items.Clear()
- ()
- member form.Plot(sender:obj, e:EventArgs) =
- let filelist =
- [ for x in listbox.Items -> x ]
- |> List.map(string)
- |> FileData.getFileMetadata
- |> List.map(fun y -> y.Name, y.Size)
- let chart1 = FSharp.Charting.Chart.Column filelist
- picture.Image <- chart1.CopyAsBitmap()
- ()
Advertisement
Add Comment
Please, Sign In to add comment