IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите! редактор текста в VB используя XML (http://www.imho.ws/showthread.php?t=112340)

Absolut 09.12.2006 16:36

Помогите! редактор текста в VB используя XML
 
Нужно написать текстовой редактор с простыми возможностями редактирования (изменять размер текста, шрифт - Times New Roman, Verdana и т.д, цвет, bold, italic) в Visual Basic 6, используя в качестве поля для текста RTF - Rich Text Format, эти возможности редактирования будут браться программой из XML-файла, в котором будут разные определения, его тоже нужно сделать.
Без CSS и XSL можно обойтись.
Подскажите как это сделать, и обьясните каким образом это должно работать.
как должен выглядеть этот ХМЛ файл, какие должны быть в нём определения
Заранее Спасибо!

ЕЖ 09.12.2006 17:41

Ну XML будет выглядеть как-то так:
PHP код:

<?xml version="1.0" encoding="utf-8" ?>
<controls>
   <font>true</font>
   <size>true</size>
   <color>true</color>
   <bold>true</bold>
   <italic>true</italic>
</controls>

Само приложение будет состоять из формы, на которой - контрол RichTextBox, кнопки Bold и Italic, ComboBox с предопределенными значениями размера шрифта, и контролы выбора шрифта и цвета, которые в своих событиях будут применять соответствующие свойства к выделенному в данный момент в RichTextBox тексту. Показ на форме этих контролов зависит от соответствующих значений true/false в XML.

C реализацией помоч не смогу, т.к. на VB6 не пишу.

Absolut 09.12.2006 19:31

Цитата:

Сообщение от ЕЖ
Ну XML будет выглядеть как-то так:
PHP код:

<?xml version="1.0" encoding="utf-8" ?>
<controls>
   <font>true</font>
   <size>true</size>
   <color>true</color>
   <bold>true</bold>
   <italic>true</italic>
</controls>

Само приложение будет состоять из формы, на которой - контрол RichTextBox, кнопки Bold и Italic, ComboBox с предопределенными значениями размера шрифта, и контролы выбора шрифта и цвета, которые в своих событиях будут применять соответствующие свойства к выделенному в данный момент в RichTextBox тексту. Показ на форме этих контролов зависит от соответствующих значений true/false в XML.

C реализацией помоч не смогу, т.к. на VB6 не пишу.

Cпасибо.

мне VB.NET тоже сойдёт, хоть VB6 предпочительнее

я также сделаю меню, и кнопки

допустим я выделил текст и нажал на bold, каким образом на ето должен среагировать сам RTF?
как он идёт к функции текста и меняет её на болд?

ЕЖ 09.12.2006 19:43

Пишешь обработчики событий для контролов, в которых и меняешь нужные свойства выделенного текста.

У RichTextBox для этого есть свойства:

SelText - сам выделенный текст
SelBold - жирность выделенного текста
SelItalic - наклонность выделенного текста
SelColor - цвет выделенного текста
SelFontSize - размер выделенного текста

Absolut 09.12.2006 22:00

эти функции я знаю
как эти обработчики событий должны действовать? как именно они должны реагировать?

1)я нажимаю на кнопку Bold
2)програма что-то считывает из XML
3)и лишь затем она вызывает эти приведённые Вами команды для текста:
Цитата:

SelText - сам выделенный текст
SelBold - жирность выделенного текста
SelItalic - наклонность выделенного текста
SelColor - цвет выделенного текста
SelFontSize - размер выделенного текста
так вот, что происходит и как между пунктами 2) и 3) ?

PS. это можно сделать и без XML, используя CommonDialogBox и таблицу
http://i12.tinypic.com/433gvv6.jpg
, но нужно использовать собственные кнопки и комбобоксы (это не основная проблема) используя хмл

ЕЖ 09.12.2006 23:27

Зачем тебе при каждом нажатии кнопки считывать XML? Достаточно это сделать один раз при старте программы. Как прочитать XML на VB6 не подскажу, так как уже говорил, что на VB6 никогда не писал. Могу на C# если очень надо, накидать пример чтения такого XML. Для VB6 такое естественно не подойдет.

Что там происходит? По нажатию кнопок происходят события, в которых и устанавливаются нужные свойства. Но до всего этого, при старте программы, программа считывает из XML несколько флагов (true/false), отвечающих за доступность той или иной функции. Если false - то соответсвующий контрол (например кнопка Bold) скрывается (Visible), и пользователь не сможет ее нажать.

Вроде же простейшие вещи приходится объяснять...

Absolut 10.12.2006 01:05

Цитата:

Сообщение от ЕЖ
Зачем тебе при каждом нажатии кнопки считывать XML? Достаточно это сделать один раз при старте программы. Как прочитать XML на VB6 не подскажу, так как уже говорил, что на VB6 никогда не писал. Могу на C# если очень надо, накидать пример чтения такого XML. Для VB6 такое естественно не подойдет.

Что там происходит? По нажатию кнопок происходят события, в которых и устанавливаются нужные свойства. Но до всего этого, при старте программы, программа считывает из XML несколько флагов (true/false), отвечающих за доступность той или иной функции. Если false - то соответсвующий контрол (например кнопка Bold) скрывается (Visible), и пользователь не сможет ее нажать.

Вроде же простейшие вещи приходится объяснять...

пусть все кнопки будут доступны

как эти свойства устанавливаются?
1)как изменения вводятся в текст? - они происходят автоматически?
или
2)каким образом в РТФ контроле обозначается что эта выделеная часть слова/абзац следует сделать наклонным (италик)
если не сложно накидай в Си#, думаю разберусь, главное принцип понять.

вот я например в форуме пишу, делаю Bold, и вставляются теги
Код:

<B>blabla</B> - (заменил [ на < т.к не даёт)
что соответственно и как происходит при таком же в RTF

Thanks!

ЕЖ 10.12.2006 01:16

Я в шоке :eek: :confused:

Объясни мне, как соотносятся твои фразы:
Цитата:

Absolut:
эти функции я знаю
и
Цитата:

Absolut:
как эти свойства устанавливаются?
1)как изменения вводятся в текст? - они происходят автоматически?
или
2)каким образом в РТФ контроле обозначается что эта выделеная часть слова/абзац следует сделать наклонным (италик)
если не сложно накидай в Си#, думаю разберусь, главное принцип понять.

вот я например в форуме пишу, делаю Bold, и вставляются теги
Код:

<B>blabla</B> - (заменил [ на < т.к не даёт)

что соответственно и как происходит при таком же в RTF
Эти свойства RichTextBox и есть ответ на твой вопрос как изменить то или иное свойство выделенного текста. И делать надо это в событиях, например по нажатию на кнопку.

Так ты умеешь пользоваться приведенными свойствами?!
Ты вообще знаешь что такое события?!

Absolut 10.12.2006 02:39

что такое событие знаю.

тоже знаю как без ХМЛ написать.

Не понимаю каким образом и какой ХМЛ нужно вставить (образец ХМЛ ты уже дал...), как програма будет использовать этот ХМЛ , как это событие будет реализовано.

может я хожу вокруг да около...

ЕЖ 10.12.2006 03:40

Вот код VB.NET, в VB6 работать не будет, т.к. в в VB.NET совсем другая модель классов!

Тут на форме Form1 компонет RichTextBox1 и кнопка btnColor. При загрузке формы происходит событие Form1_Load, в котором читается вышеприведенный XML-файл и в нем ищется нода <color>. Если в ней прописана строка "false" то кнопка btnColor дизейблится, чтобы пользователь не мог ее нажать (по умолчанию может). Далее, набрав какой-то текст в RichTextBox1 и выделив его часть, пользователь нажимает кнопку btnColor. Тогда происходит событие btnColor_Click. В нем у RichTextBox1, его свойству SelectionColor (в VB6 будет SelColor), которое как раз и дает доступ к цвету выделенного текста, присваивается новый цвет - Blue. Всё. Если и так не понятно, то я умываю руки...
Код:

Imports System.Xml

Public Class Form1

        Private xmlConfig As XmlDocument

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                xmlConfig = New XmlDocument()
                xmlConfig.Load("config.xml")
                If xmlConfig.Item("controls").Item("color").InnerText() = "false" Then btnColor.Enabled = False
        End Sub

        Private Sub btnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click
                RichTextBox1.SelectionColor = Color.Blue
        End Sub

End Class


Absolut 11.12.2006 22:15

Цитата:

Сообщение от ЕЖ
Вот код VB.NET, в VB6 работать не будет, т.к. в в VB.NET совсем другая модель классов!

Тут на форме Form1 компонет RichTextBox1 и кнопка btnColor. При загрузке формы происходит событие Form1_Load, в котором читается вышеприведенный XML-файл и в нем ищется нода <color>. Если в ней прописана строка "false" то кнопка btnColor дизейблится, чтобы пользователь не мог ее нажать (по умолчанию может). Далее, набрав какой-то текст в RichTextBox1 и выделив его часть, пользователь нажимает кнопку btnColor. Тогда происходит событие btnColor_Click. В нем у RichTextBox1, его свойству SelectionColor (в VB6 будет SelColor), которое как раз и дает доступ к цвету выделенного текста, присваивается новый цвет - Blue. Всё. Если и так не понятно, то я умываю руки...
Код:

Imports System.Xml

Public Class Form1

        Private xmlConfig As XmlDocument

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                xmlConfig = New XmlDocument()
                xmlConfig.Load("config.xml")
                If xmlConfig.Item("controls").Item("color").InnerText() = "false" Then btnColor.Enabled = False
        End Sub

        Private Sub btnColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click
                RichTextBox1.SelectionColor = Color.Blue
        End Sub

End Class


Большое Спасибо. Разберусь :yees:

вобщем я прочитал, вроде понял, сейчас соображаю как дописывать дальше. Спасибо!


Часовой пояс GMT +4, время: 08:31.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.