WPF в pascal abc net

Здравствуйте! Кто нибудь знает, есть ли какие нибудь наработки по внедрению WPF в Pascal ABC Net? Просто уж очень мне понравился паскаль, но то что в нем нет WPF - это как бы удар ножом(((

Где вы искали, перед тем как говорить это?

  1. 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. Создайте пустой файл, напишите в нём 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 практически ничего не знаю, даже контейнер так выбирал:

1 лайк

ого, спасибо щас потестирую

Придётся это принять, либо попросить разработчиков, чтобы они нашли того, кто может это внедрить, либо сами этим занялись. Выбирайте другую 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 тоже такой функционал есть. И нет, им тоже не ограничивается всё.

Пока закрыл тему. В ближайшее время почищу все сообщения.

Думаю, нет нужды повторять, что нельзя вступать в личную перепалку.

1 лайк

По результатам: Kotov объявлен выговор за раздувание конфликта. Этот форум - не для выяснения отношений.

По сути. Ответ на вопрос - правильный. В PascalABC.NET для построения форм нельзя использовать XAML. Надо использовать альтернативные средства. Но они не генерируют код на Паскале.

1 лайк

По поводу использования 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 можно расширять.

3 лайка