powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / XAML UI на VB6
32 сообщений из 32, показаны все 2 страниц
XAML UI на VB6
    #39260150
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать приложение полностью на XAML. Проблема как делать разметку? Руками это ад полный, визуальных редакторов нет.
Есть ли какие то альтернативы ручному написанию разметки?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260243
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть Blend студия для этого, но всё равно надо иметь зачатки дизайнера. кто в фотошопе работал, тому я думаю по силам с этим адом дизайна разобраться =)
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260291
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а причем тут VB6?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260293
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не при чём, просто поговорили о вечном =)
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260297
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот тоже сижу и недоумеваю.
Ну XAML, допустим, стандарт универсальный, на нем можно писать любые деревья классов. Но в вопросе присутствует UI - стало быть речь идет о разметке форм? Использовать стандартные классы VB6 + написать свои панели компоновки для них и интерпретатор?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260341
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа причем тут VB6?

приложение на VB6
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltприложение на VB6Ну это-то мы поняли. А в XAML-то ты что хочешь запихнуть?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260351
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Хочу сделать весь UI-интерфейс приложения на XAML. В WEB-стиле, с 2D-графикой
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260354
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а интерпретировать его кто будет?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260357
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proа интерпретировать его кто будет?

Есть коммерческие движки для VB6. С интерпретацией не проблема, проблема сверстать интерфейс в XML
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260368
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А эти движки, что не предлагают неймспейсы, чтобы воспользоваться студией?

Или ты хочешь визуальный редактор? На самом деле визуальный редактор менее удобен, чем прямое написание XAML (с интеллисенсом, разумеется), руками получается гораздо быстрее.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260386
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА эти движки, что не предлагают неймспейсы, чтобы воспользоваться студией?

Или ты хочешь визуальный редактор? На самом деле визуальный редактор менее удобен, чем прямое написание XAML (с интеллисенсом, разумеется), руками получается гораздо быстрее.

Ничего не предлагают. Это обычная COM DLL. Визуальный редактор был бы удобен наверное.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260451
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltShocker.Proа интерпретировать его кто будет?

Есть коммерческие движки для VB6. которые поддерживают 100% возможностей xaml? без фреймворка?

рекомендую забить. а если кровь из носу хочется веб-стиля, использовать вебброузер и html.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260452
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или писать на дотнете.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260457
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНа самом деле визуальный редактор менее удобен, чем прямое написание XAML (с интеллисенсом, разумеется), руками получается гораздо быстрее.визуальный редактор удобен при демонстрации того, что написалось руками.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260461
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyвизуальный редактор удобен при демонстрации того, что написалось руками.ну так назовем вещи своими именами - визуальный просмотрщик, а не редактор
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260565
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyрекомендую забить. а если кровь из носу хочется веб-стиля, использовать вебброузер и html.

хочется не веб-стиль, а UI без виндовых контролов и с 2D графикой. Диаграммы, анимация и т.д.

...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260595
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eoltбез виндовых контроловА что это за контролы будут? Предоставленные тем самым поставщиком коммерческого ни с чем не совместимого движка?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260660
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltAntonariyрекомендую забить. а если кровь из носу хочется веб-стиля, использовать вебброузер и html.

хочется не веб-стильавторХочу сделать весь UI-интерфейс приложения на XAML. В WEB-стиле ,:)

Eoltбез виндовых контролов и с 2D графикой. Диаграммы, анимация и т.д.HTML же. Там нет контролов, 2D (при желании и 3D) графика, диаграммы, анимация и даже т.д.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260662
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и кстати эту картинку проще нарисовать в html, чем в xaml.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260667
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyи кстати эту картинку проще нарисовать в html, чем в xaml.XAML - это не WPF. Точнее, не обязательно WPF. Это просто стандарт для автогенерации дерева классов. Так что утверждение некорректное.
Вот я и пытаюсь понять, что конкретно Eolt подразумевает под XAML.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260787
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyи кстати эту картинку проще нарисовать в html, чем в xaml.XAML - это не WPF. Точнее, не обязательно WPF. Это просто стандарт для автогенерации дерева классов.а где-то кроме wpf оно используется?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39260903
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа где-то кроме wpf оно используется?EoltЕсть коммерческие движки для VB6.
Ну и вообще - ты в состоянии и сам погуглить.
Из того, с чем сталкивался лично - Xamarin Forms.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39261100
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyи кстати эту картинку проще нарисовать в html, чем в xaml.

А как евенты обрабатывать в HTML? Допустим создал я там кнопку, как по-клику вызвать событие в VB?
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39261125
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltДопустим создал я там кнопку, как по-клику вызвать событие в VB?
Код: vbnet
1.
WithEvents MyButton As MSHTML.HTMLInputButtonElement


ну и дальше как обычно
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39264584
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая модель/паттерн должен быть в XAML приложении? Форм и контролов же нет.

Какой-то вариант PageObject? Для начала хочу сделать плывущие титры в стиле Звездных воин.
Можно конечно по-таймеру генерировать XAML разметку для каждого "кадра", и тупо кидать ее в движок.
Получится анимация со скоростью 1-2 фпс. Но это же какой-то дурной вариант.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39264728
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
<Window
  x:Class="StarWars.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="MainWindow" Height="480" Width="640" Background="Black">

    <Viewport3D ClipToBounds="True" Width="Auto" Height="Auto">
        <Viewport3D.Triggers>
            <EventTrigger RoutedEvent="Viewport3D.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="Translation" Storyboard.TargetProperty="OffsetY" To="10" Duration="0:1:0" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Viewport3D.Triggers>
        <Viewport3D.Camera>
            <PerspectiveCamera FarPlaneDistance="100" NearPlaneDistance="1" FieldOfView="30" LookDirection="0,25,-13" UpDirection="0,1,0" Position="0,2,1.5" />
        </Viewport3D.Camera>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <Model3DGroup>
                    <Model3DGroup.Children>
                        <AmbientLight Color="#FF808080" />
                        <GeometryModel3D>
                            <GeometryModel3D.Transform>
                                <TranslateTransform3D x:Name="Translation" OffsetY="3" />
                            </GeometryModel3D.Transform>
                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D Positions="-1,-2,0 1,-2,0 1,1,0 -1,1,0" TriangleIndices="0 1 2  0 2 3" TextureCoordinates="0,1 1,1 1,0 0,0" Normals="0,0,1 0,0,1" />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <VisualBrush>
                                            <VisualBrush.Visual>
                                                <TextBlock Foreground="Yellow" FontFamily="Consolas" TextAlignment="Center">
                          Lorem ipsum dolor sit amet,<LineBreak/>
                          consectetur adipiscing elit.<LineBreak/>
                          Integer malesuada, massa<LineBreak/>
                          vitae suscipit dictum, purus<LineBreak/>
                          dolor volutpat arcu, ac<LineBreak/>
                          tincidunt erat mauris sed nisi.<LineBreak/>
                          Sed ac eros ac augue<LineBreak/>
                          ullamcorper sodales sed id leo.<LineBreak/><LineBreak/>
                          Suspendisse nibh enim,<LineBreak/>
                          hendrerit vitae pretium et,<LineBreak/>
                          gravida in tortor. Lorem ipsum<LineBreak/>
                          dolor sit amet, consectetur<LineBreak/>
                          adipiscing elit. Maecenas<LineBreak/>
                          condimentum enim eu tellus<LineBreak/>
                          feugiat mollis ac ut arcu.<LineBreak/>
                          Ut fringilla tempus volutpat.<LineBreak/>
                          Duis elementum convallis<LineBreak/>
                          tincidunt.<LineBreak/><LineBreak/>

                          Mauris lacus tortor,<LineBreak/>
                          tristique nec congue at,<LineBreak/>
                          adipiscing sed eros.<LineBreak/><LineBreak/>

                          In volutpat eros id nunc<LineBreak/>
                          hendrerit eget aliquet nisi<LineBreak/>
                          lacinia.<LineBreak/><LineBreak/>

                          Suspendisse et lorem augue, non eleifend est.
                                                </TextBlock>
                                            </VisualBrush.Visual>
                                        </VisualBrush>
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                    </Model3DGroup.Children>
                </Model3DGroup>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>
</Window>
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39264909
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

к сожалению, движок xaml который я использую, не знает что такое Viewport3D, нет этого в его неймспейсах :(
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39264918
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пичалька, чо.

значит спрашивать нужно на фанатских форумах этого движка.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39264921
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

Еще раз. XAML - это просто формат для создания дерева классов. Сам по себе XAML не является ни UI-интерфейсом, ни какой-то библиотекой классов, твое выражение "XAML приложение" не является корректным. К примеру, вышеприведенный Антонарием пример для WPF не обязательно писать на XAML-е, все абсолютно то же самое можно сделать с помощью прямого создания экземпляра класса Window из кода и присвоения его свойствам нужных значений (БЕЗ использования XAML).

Ты используешь некий движок, который использует КАКУЮ-ТО библиотеку классов и позволяет с помощью интерпретации XAML построить дерево классов, которые она поддерживает.

Чтобы понять, что ты можешь с помощью этой библиотеки - нужно изучать сами эти классы, а не XAML и задавать этот вопрос на форуме разработчика самой библиотеки, на не в VB6 очевидно...
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39265650
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Все что ты пишешь мне и так понятно. Меня не интересуют возможности библиотеки класса. Меня интересует механизм взаимодействия VB приложения и этого WPF движка. Есть два варианта и оба хреновые:

1. Генерация XAML разметки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
Public Function GenerateXML(ByVal W As Long, ByVal H As Long) As String
    Dim sCellXML     As String
    Dim sSelectedXML As String
    Dim sOutput      As String
    Dim iCol         As Long
    Dim iRow         As Long
    Dim lColWidth    As Long
    Dim lRowHeight   As Long
    Dim sTemp        As String
    Dim sTemp2       As String

    If W < 1 Or H < 1 Then
        Err.Raise ERR_BASE + 2, "cMarkupLevelsMeter.GenerateXML", _
                "Invalid input parameter"
    End If

    W = W - (p_Margin * 2) + 1
    H = H - (p_Margin * 2) + 1
    lColWidth = Int((W - 4) / p_Columns)
    lRowHeight = Int((H - 4) / p_Rows)

    If lColWidth < 4 Then lColWidth = 4
    If lRowHeight < 4 Then lRowHeight = 4
    W = (lColWidth * p_Columns) + 4
    H = (lRowHeight * p_Rows) + 4

    If p_ShowGridLines Then
        sCellXML = _
                "<Border Grid.Column='%COLUMN%' Grid.Row='%ROW%' Margin='-1,-1,0,0' BorderThickness='1' BorderBrush='" _
                & p_HTMLCellBorderColor & "'>%CELLVALUE%</Border>"
    Else
        sCellXML = _
                "<Border Grid.Column='%COLUMN%' Grid.Row='%ROW%' Margin='0' BorderThickness='1'>%CELLVALUE%</Border>"
    End If

    sSelectedXML = _
            "<Border Margin='%MARGIN%'><Border.Background><LinearGradientBrush StartPoint='0, 0' EndPoint='0,1'><GradientStop Color='" _
            & p_HTMLSelectedStartColor & "' Offset='0'/><GradientStop Color='" & _
            p_HTMLSelectedEndColor & _
            "' Offset='0.8'/></LinearGradientBrush></Border.Background></Border>"
    sOutput = "<Border>" & vbCrLf & "    <Border.Background>" & vbCrLf & _
            "        <LinearGradientBrush StartPoint='0, 0' EndPoint='0,1'>" & vbCrLf & _
            "            <GradientStop Color='" & p_HTMLBackcolor & "' Offset='0'/>" & _
            vbCrLf & "            <GradientStop Color='" & p_HTMLBackcolor2 & _
            "' Offset='1'/>" & vbCrLf & "        </LinearGradientBrush>" & vbCrLf & _
            "    </Border.Background>" & vbCrLf & "    <Border Width='" & W & _
            "' Height='" & H & "' Padding='0' BorderThickness='2' BorderBrush='" & _
            p_HTMLBorderColor & "' CornerRadius='1'>" & vbCrLf & _
            "        <Grid VerticalAlignment='Stretch' HorizontalAlignment='Stretch' Margin='1'>" _
            & vbCrLf & "                <Grid.ColumnDefinitions>" & vbCrLf

    For iCol = 1 To p_Columns
        sOutput = sOutput & "                    <ColumnDefinition Width='" & lColWidth _
                & "'/>" & vbCrLf
    Next

    sOutput = sOutput & "                </Grid.ColumnDefinitions>" & vbCrLf & _
            "                <Grid.RowDefinitions>" & vbCrLf

    For iRow = 1 To p_Rows
        sOutput = sOutput & "                    <RowDefinition Height='" & lRowHeight _
                & "'/>" & vbCrLf
    Next

    sOutput = sOutput & "             </Grid.RowDefinitions>" & vbCrLf

    For iCol = 1 To p_Columns
        For iRow = 1 To p_Rows
            'sCellXML = "<Border Grid.Column='%COLUMN%' Grid.Row='%ROW%' Margin='%MARGIN%' BorderThickness='1' BorderBrush='" & p_HTMLCellBorderColor & "'>%CELLVALUE%</Border>"
            sTemp = Replace$(sCellXML, "%COLUMN%", Trim$(Str$(iCol - 1)), 1, 1, _
                    vbBinaryCompare)
            sTemp = Replace$(sTemp, "%ROW%", Trim$(Str$(iRow - 1)), 1, 1, vbBinaryCompare)

            If p_CellValues(iCol, (p_Rows - iRow) + 1) Then
                If iCol * iRow = 1 Then
                    sTemp2 = Replace$(sSelectedXML, "%MARGIN%", "1,1,2,2", 1, 1, _
                            vbBinaryCompare)
                ElseIf iCol = 1 Then
                    sTemp2 = Replace$(sSelectedXML, "%MARGIN%", "1,2,2,2", 1, 1, _
                            vbBinaryCompare)
                ElseIf iRow = 1 Then
                    sTemp2 = Replace$(sSelectedXML, "%MARGIN%", "2,1,2,2", 1, 1, _
                            vbBinaryCompare)
                Else
                    sTemp2 = Replace$(sSelectedXML, "%MARGIN%", "2,2,2,2", 1, 1, _
                            vbBinaryCompare)
                End If

                sTemp = Replace$(sTemp, "%CELLVALUE%", sTemp2, 1, 1, vbBinaryCompare)
            Else
                sTemp = Replace$(sTemp, "%CELLVALUE%", "", 1, 1, vbBinaryCompare)
            End If

            sOutput = sOutput & sTemp & vbCrLf
        Next
    Next

    sOutput = sOutput & "      </Grid>" & vbCrLf & "    </Border>" & vbCrLf & "</Border>"
    GenerateXML = sOutput
End Function 



2. Второй вариант создавать объекты в рантайме

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   Dim Hyperlink As MarkupHyperlink
   Dim TextBlock As MarkupTextBlock
   Dim Run As MarkupRun
   
         Set Run = Me.ML.MarkupContext.CreateObject("Run")
             Run.Text = "&#209;&#241;&#251;&#235;&#234;&#224;" & vbCrLf & vbCrLf & vbCrLf
    
         Set Hyperlink = Me.ML.MarkupContext.CreateObject("Hyperlink")
             Hyperlink.Inlines.Add Run
             Hyperlink.Tag = "http://www.google.com"
             Hyperlink.AddHandler Hyperlink.ClickEvent, "HyperlinkClicked"
         
         Set TextBlock = Me.ML.MarkupContext.CreateObject("TextBlock")
             TextBlock.Inlines.Add Hyperlink



Оба варианты неудобны в разработке. Нужен какой-то третий вариант.
...
Рейтинг: 0 / 0
XAML UI на VB6
    #39265702
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltОба варианты неудобны в разработке. Нужен какой-то третий вариант.xml-шаблоны + xsl = разметка. вот как я например экселевские файлы создаю:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<NML:TEMPLATE xmlns:NML="http://tempuri.org/NML" xmlns="urn:schemas-microsoft-com:office:spreadsheet">
  <NML:STYLESHEET BUILTIN="1" CONTENTTYPE="text/xml" >
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:x="urn:schemas-microsoft-com:office:excel">
      <xsl:output method="xml" indent="yes"/>
      <xsl:template match="/">
        <xsl:processing-instruction name="mso-application">progid="Excel.Sheet"</xsl:processing-instruction>
        <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
          <xsl:call-template name="doc_props"/>
          <Worksheet ss:Name="Акт сверки">
            <Table ss:ExpandedColumnCount="256" ss:ExpandedRowCount="{38 + count(Root/Balance/*)}" x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="10.5">
              <xsl:call-template name="tbl_props"/>
              <xsl:apply-templates select="Root"/>
            </Table>
            <xsl:call-template name="sh_props"/>
          </Worksheet>
        </Workbook>
      </xsl:template>
    </xsl:stylesheet>    
  </NML:STYLESHEET>
  <NML:BLOCK TAG="Root">
    <NML:GET SAMETAG="1" ARG="BDate" FORMAT="FORM" />
    <NML:GET SAMETAG="1" ARG="ClientName" />
    <NML:RS TAG="Balance" SOURCE="rsBalance" TYPE="RECORDSET">
      <NML:BLOCK TAG="row">
        <NML:GET SAMETAG="1" FIELD="ID"/>
        <NML:GET SAMETAG="1" FIELD="DN"/>
        <NML:GET SAMETAG="1" FIELD="DNR"/>
        <NML:GET SAMETAG="1" FIELD="DDate" FORMAT="FORM"/>
        <NML:GET SAMETAG="1" FIELD="Balance" FORMAT="FORXML"/>
        <NML:GET SAMETAG="1" FIELD="LN1"/>
        <NML:GET SAMETAG="1" FIELD="LN2"/>
        <NML:GET SAMETAG="1" FIELD="CD" FORMAT="FORXML"/>
        <NML:GET SAMETAG="1" FIELD="DB" FORMAT="FORXML"/>
      </NML:BLOCK>
    </NML:RS>
  </NML:BLOCK>
</NML:TEMPLATE>

NML - изобретенный мной язык разметки данных. У него есть схема, которая в студии подсказывает что писать, и парсер. В данном случае в парсер передается два параметра (BDate и ClientName) и уже готовый рекордсет. Так же в качестве источника данных можно использовать запрос к одной или боле базам, http-запрос, возвращающий xml или файловую систему. В .net-реализации в добавок можно делать запросы к программным объектам с помощью dynamic linq. И все данные оказываются в составе одного xml-документа, который с помощью xsl-шаблона преобразуется к нужному виду.

Этот шаблон формирует документ вида
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<Root>
    <BDate>11.11.1111</BDate>
    <ClientName>test</ClientName>
    <Balance>
        <row>
            <ID>111</ID>
            <DN>111</DN>
            <DNR>111</DNR>
            ....
        </row>
        <row>
            ....
        </row>
    </Balance>
</Root>

А встроенный xsl-шаблон (тут его фрагмент) делает из него экселевский файл формата SpreadheetML.
Само собой с таким же успехом можно из него сделать xaml.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / XAML UI на VB6
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]