Заблокирован
1

Работа с GUI в F#. Использование F# Charting

05.03.2015, 23:44. Показов 2559. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите как правильно работать с GUI в F#.
Если создавать обычное приложение то открывается консоль, а лишь потом вызывается форма. Например:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open System
open System.Windows.Forms
open System.Windows.Forms.DataVisualization.Charting
 
let chart = new Chart(Dock = DockStyle.Fill)
let area = new ChartArea("Main")
chart.ChartAreas.Add(area)
 
let mainForm = new Form(Visible = true, TopMost = true, 
                        Width = 700, Height = 500)
mainForm.Controls.Add(chart)
 
let seriesColumns = new Series("RandomColumns")
chart.Series.Add(seriesColumns)
 
let rnd = new Random()
for i in 0 .. 10 do
    seriesColumns.Points.Add(float(rnd.Next(100))) |> ignore
 
mainForm.Show()
она открывается и сразу исчезает. В консольном приложении я ставлю Console.ReadKey(), но как правильно поступить с GUI?
Если запускать через скрипт-файл, то такой проблемы нет. Значит ли это, что в F# нормальная работа с GUI возможна только через скрипты?

Собственно вопрос возник из-за того, что я захотел посмотреть какие возможности есть в F# для построения графиков и как работать с сторонними библиотеками. Все оказалось намного сложнее, чем в С#, по крайней мере для меня.
Мой выбор пал на F# Charting
http://fsharp.github.io/FSharp.Charting/index.html
Взял первый пример. Через NuGet стянул нужный пакет.
Haskell
1
2
3
#r "FSharp.Charting.dll" 
open FSharp.Charting
Chart.Line([ for x in 0 .. 10 -> x, x*x ]).ShowChart()
В итоге выдало следующие ошибки:
Код
~vs4666.fsx(31,1): error FS0082: Не удалось разрешить данную ссылку. Не удалось обнаружить сборку "FSharp.Charting.dll". Убедитесь, что сборка существует на диске. Если данная ссылка требуется в коде, это может вызвать ошибки компиляции. (Код=MSB3245)
~vs4666.fsx(31,1): error FS0084: Ссылка на сборку "FSharp.Charting.dll" не была найдена либо является недопустимой
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2015, 23:44
Ответы с готовыми решениями:

Использование uitable в GUI.
нужно построить , меняя координаты четыреч точек(кружков) в tabel, чтоб эти 4-ри точки соединялись...

Использование Menu в GUI
Всем дорого времени суток. Создал меню с несколькими пунктами, необходимо, чтобы в зависимости...

Использование GUI видеокарты
Доброго времени суток. На линуксе я совсем недавно. Использую Manjaro KDE. При изменении...

Проверка рисования и использование GUI
Вот сделала программу, только не знаю, работает ли она корректно. Можете мальчики посмотреть ?

4
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
06.03.2015, 07:35 2
Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Если запускать через скрипт-файл, то такой проблемы нет. Значит ли это, что в F# нормальная работа с GUI возможна только через скрипты?
нет. все как в С#
Код
open System
open System.Windows.Forms
open System.Windows.Forms.DataVisualization.Charting

[<EntryPoint>]
[<STAThread>]
let main argv = 

    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault false

    let chart = new Chart(Dock = DockStyle.Fill)
    let area = new ChartArea("Main")
    chart.ChartAreas.Add area
 
    let form = new Form(Visible = true, TopMost = true, 
                            Width = 700, Height = 500)
    form.Controls.Add(chart)
 
    let seriesColumns = new Series("RandomColumns")
    chart.Series.Add seriesColumns
 
    let rnd = Random()
    for i in 0 .. 10 do
        seriesColumns.Points.Add(rnd.Next 100 |> float) |> ignore

    Application.Run form
    0
Добавлено через 7 минут
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
#r "FSharp.Charting.dll"
скорее всего надо указать полный путь к библиотеке. у меня работает

Добавлено через 2 минуты
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
обычное приложение то открывается консоль, а лишь потом вызывается форма
в свойствах проекта надо выбрать windows application
1
Заблокирован
06.03.2015, 10:30  [ТС] 3
Цитата Сообщение от pycture Посмотреть сообщение
в свойствах проекта надо выбрать windows application
pycture, спасибо. Добавил шаблон проекта, чтобы упростить дальнейшую работу.

Цитата Сообщение от pycture Посмотреть сообщение
скорее всего надо указать полный путь к библиотеке. у меня работает
Да, указание полного пути помогло. С чем это может быть связано?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
06.03.2015, 10:39 4
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
С чем это может быть связано?
с тем что выполнения интерактивной консоли или fsi.exe может ставить рабочим каталогом какойнить домашний каталог текущего пользователя. вот файл и не находится

Добавлено через 5 минут
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Добавил шаблон проекта
https://visualstudiogallery.ms... 8ae319a6d6
если не встанет, то можно попробывать отковырять изнутри исходники, вроде это обычный zip
1
Заблокирован
06.03.2015, 10:48  [ТС] 5
Цитата Сообщение от pycture Посмотреть сообщение
https://visualstudiogallery.msdn.mic...d-da8ae319a6d6
Если не встанет, то можно попробывать отковырять изнутри исходники, вроде это обычный zip
Спасибо, но я пока сделал проще:
В VS: Файл -> Экспорт шаблона -> Шаблон проекта -> дальше заполнил поля под себя. Все, можно создавать проект.
Я думаю, по ссылке то-же самое, только более красиво оформлено - со значками и другими типами проектов
0
06.03.2015, 10:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2015, 10:48
Помогаю со студенческими работами здесь

Использование GUI Builder в NetBeans
Использую GUI Builder для создания форм(учусь).Мне нужно чтобы через нажатие кнопки на 1 форме...

Использование GUI со встроенным OpenGl
Заинтересовал вопрос по созданию Графического интерфейса со встроенным окном openGl Пример: ...

Использование таймера для GUI Java
Здравствуйте, подскажите, пожалуйста, как можно сделать, чтобы во фрейме отображалось ...

Использование технологии VPN (OpenVPN GUI)
Доброго времени суток, Господа айтишники. Ещё давно создавал тему Прокси, виртуальная машина и в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru