imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 09.12.2006, 16:36     # 1
Absolut
Guest
 
Сообщения: n/a

Помогите! редактор текста в VB используя XML

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

Последний раз редактировалось Absolut; 09.12.2006 в 16:39.
 
Старый 09.12.2006, 17:41     # 2
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Ну 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 не пишу.
ЕЖ вне форума  
Старый 09.12.2006, 19:31     # 3
Absolut
Guest
 
Сообщения: n/a

Цитата:
Сообщение от ЕЖ
Ну 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     # 4
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

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

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

SelText - сам выделенный текст
SelBold - жирность выделенного текста
SelItalic - наклонность выделенного текста
SelColor - цвет выделенного текста
SelFontSize - размер выделенного текста
ЕЖ вне форума  
Старый 09.12.2006, 22:00     # 5
Absolut
Guest
 
Сообщения: n/a

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

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     # 6
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

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

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

Вроде же простейшие вещи приходится объяснять...
ЕЖ вне форума  
Старый 10.12.2006, 01:05     # 7
Absolut
Guest
 
Сообщения: n/a

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

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

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

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

вот я например в форуме пишу, делаю Bold, и вставляются теги
Код:
 <B>blabla</B> - (заменил [ на < т.к не даёт)
что соответственно и как происходит при таком же в RTF

Thanks!

Последний раз редактировалось Absolut; 10.12.2006 в 01:08.
 
Старый 10.12.2006, 01:16     # 8
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Я в шоке

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

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

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

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

Так ты умеешь пользоваться приведенными свойствами?!
Ты вообще знаешь что такое события?!
ЕЖ вне форума  
Старый 10.12.2006, 02:39     # 9
Absolut
Guest
 
Сообщения: n/a

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

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

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

может я хожу вокруг да около...
 
Старый 10.12.2006, 03:40     # 10
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Вот код 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
ЕЖ вне форума  
Старый 11.12.2006, 22:15     # 11
Absolut
Guest
 
Сообщения: n/a

Цитата:
Сообщение от ЕЖ
Вот код 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
Большое Спасибо. Разберусь

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


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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