Здравствуйте! Кто нибудь знает, есть ли какие нибудь наработки по внедрению WPF в Pascal ABC Net? Просто уж очень мне понравился паскаль, но то что в нем нет WPF - это как бы удар ножом(((
Где вы искали, перед тем как говорить это?
- WPF это часть .Net . То есть оно работает так же как в C#:
{$reference 'PresentationFramework.dll'}
{$apptype windows}
begin
var w := new System.Windows.Window;
w.Title := 'Окно WPF';
System.Windows.Application.Create.Run(w);
end.
- Создайте пустой файл, напишите в нём 1 букву
g
и нажмите Shift+Space.
Это простенький учебный модуль, похожий на GraphABC
, но основанный на WPF.
а как мне добавлять реальные объекты из net WPF изпользуя xaml? простите за тупые вопросы, но я новичок в мире паскаль и net
xaml это фича некоторых IDE заточенных под C#. В данной IDE, по крайней мере пока что, такой фичи нет.
Ну, это в любом случае сахар. То есть обычно IDE превращает xaml в код с созданием этих объектов.
Вы сами можете написать такой переводчик.
ну мне и xaml не нужен, лишь бы просто научиться добавить хотя бы один объект на окно (button к примеру) дальше бы я сам копал))
{$reference 'PresentationFramework.dll'}
{$apptype windows}
begin
var w := new System.Windows.Window;
// контейнер, чтоб можно было добавить несколько элементов
var p := new System.Windows.Controls.StackPanel;
w.Content := p;
var b1 := new System.Windows.Controls.Button;
p.Children.Add(b1);
b1.Content := 'текст на кнопке 1';
var b2 := new System.Windows.Controls.Button;
p.Children.Add(b2);
b2.Content := 'текст на кнопке 2';
System.Windows.Application.Create.Run(w);
end.
И, по возможности, используйте гугл и StackOverflow. Я сам о WPF практически ничего не знаю, даже контейнер так выбирал:
ого, спасибо щас потестирую
Придётся это принять, либо попросить разработчиков, чтобы они нашли того, кто может это внедрить, либо сами этим занялись. Выбирайте другую IDE
с поддержкой XAML
на данный момент, если срочно это нужно. Писать так, как предлагает @Sun_Serega неправильно - нет разделения бизнес логики и самого описания интерфейса (что удобно, например, для совместной разработки - дизайнеры занимаются описанием интерфейса, а программисты - логикой его работы). Это же - одно из главных преимуществ этой технологии и не пользоваться им - ошибочно. Тем более, зачем себе в нём отказывать? Так писали в Windows Forms
, но в WPF
- так не пишут. Начинайте учиться писать сразу правильно, постепенно, когда научитесь - можете взглянуть на то, как это работает «под капотом».
Предлагаю следующий выбор:
https://sharpdevelop.software.informer.com/5.1/
Скриншот из SharpDevelop 5.1
:
В них нет языка PascalABC.NET, зато есть иные NET-языки. Почему Вы выбрали PascalABC.NET мне неизвестно, но когда Вы выбирайте язык, фреймворк всегда помните о том, какие преимущества и недостатки он имеет. Если говорить о PascalABC.NET, то в качестве одного из минусов можно назвать - отсутствие поддержки WPF
из IDE
как таковой. Здесь - есть дизайнер только для Windows Forms
. Вы выбрали такую технологию, что Вам, для её изучения, придётся сменить язык (на временной или постоянной основе). Вы также могли бы взять и Tkinter
, и тогда, здесь PascalABC.NET также не был нужен для его изучения. Ничто здесь не даст изучить XAML
. Выбирайте иную технологию, если хотите писать здесь, например, Windows Forms
.
Если Вы здраво мыслящий человек, то Вы не станете писать на «Qt» в DevC++
, если есть IDE
с поддержкой дизайнера форм. Ровно также, не станете использовать как «серьёзный инструмент» интеграцию с Git
в Repl.it
. И не станете, тем более требовать, чтобы разработчики myCompiler
превратили его из простой и шустрой online-IDE
в подобие Visual Studio
. Делайте правильный выбор.
Уроки по WPF
:
Обратите внимание на то, что нигде XAML
не игнорируется.
Только, чтобы его написать - нужно понимать «как». В свою очередь, чтобы это понимать, хорошо бы практиковаться в самом XAML
, в чём PascalABC.NET не поможет. Оставить на время это язык, может, и грустно, но стоит, если автор вопроса хочет двигаться вперёд, а не писать на WPF
в стиле Windows Forms
.
Не обязательно под C#
. Для Visual Basic .NET
тоже такой функционал есть. И нет, им тоже не ограничивается всё.
Пока закрыл тему. В ближайшее время почищу все сообщения.
Думаю, нет нужды повторять, что нельзя вступать в личную перепалку.
По результатам: Kotov объявлен выговор за раздувание конфликта. Этот форум - не для выяснения отношений.
По сути. Ответ на вопрос - правильный. В PascalABC.NET для построения форм нельзя использовать XAML. Надо использовать альтернативные средства. Но они не генерируют код на Паскале.
По поводу использования XAML в PascalABC.NET.
Вот пример XAML:
<DockPanel Background = "Red" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Button Name="Btn1" Margin="40">Кликни меня!</Button>
</DockPanel>
Вот программа на Паскале, его использующая:
{$reference 'PresentationFramework.dll'}
{$reference 'PresentationCore.dll'}
{$reference 'WindowsBase.dll'}
{$apptype windows}
uses System.Windows;
uses System.Windows.Controls;
uses System.Windows.Markup;
uses System.IO;
begin
var w := new Window;
var fs := new FileStream('b.xaml', FileMode.Open);
var rootElement := DependencyObject(XamlReader.Load(fs));
w.Content := rootElement;
var Btn1 := Button(LogicalTreeHelper.FindLogicalNode(rootElement, 'Btn1'));
Btn1.Click += (s, e) -> begin
Btn1.Content := 'Спасибо!';
end;
Application.Create.Run(w);
end.
XAML можно расширять.