Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.03.2012, 03:12
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию XML-редактор

Здравствуйте. я пытаюсь работать над созданием простого XML-редактора.работаю с классом TXmlDocument,на данный момент программа читает заданый файл,вкидывает в Memo,мне нужно сделать подсветку синтаксиса,и открытие файла из папки,вместо открытия прописаного файла...
программа работает немного кривовато...помогите кто чем может...

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, ComCtrls, Buttons;

type
  TForm2 = class(TForm)
    Button1: TButton;
    XMLDocument1: TXMLDocument;
    Memo1: TMemo;
    FileOpenDialog1: TFileOpenDialog;
    Button2: TButton;
    BitBtn1: TBitBtn;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}



procedure TForm2.Button1Click(Sender: TObject);
begin
XMLDocument1.Active := true;
XMLDocument1.FileName:='C:\Users\Admin\Desktop\x\default-capability.xml';
Memo1.Text:=XMLDocument1.xml.Text ;
XMLDocument1.Active := false;
end;



procedure TForm2.Button2Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('C:\Users\Admin\Desktop\x\def.xml');

end;


 procedure TForm2.Button3Click(Sender: TObject);
begin
XMLDocument1.xml.Text:=BoolToStr(FileOpenDialog1.Execute);
Memo1.Text:=XMLDocument1.xml.Text;
end;

END.






к сообщению добавил архив с проектом программы..работаю в delphi XE...

добавляю текст моего XML:

Код:
<?xml version="1.0" encoding="UTF-8"?>
<devices>
  <version>0.4</version>
  <device>
    <identification>
      <model>G700</model>
      <manufacturer>SonyEricsson</manufacturer>
      <vendor>Sony Ericsson</vendor>
      <brand>Generic</brand>
    </identification>
    <storage>
      <type>MSD</type>
      <max-full>100</max-full>
    </storage>
    <display index="0">
      <height unit="pixels">320</height>
      <width unit="pixels">240</width>
      <colors>262144</colors>
    </display>
    <image>
      <format id="JPEG" preferred="true">
        <maxwidth>2592</maxwidth>
        <maxheight>1944</maxheight>
        <extension>jpg</extension>
        <mime-type>image/jpeg</mime-type>
      </format>
      <format id="BMP" preferred="false">
        <extension>bmp</extension>
        <mime-type>image/bmp</mime-type>
        <mime-type>image/x-bmp</mime-type>
        <mime-type>image/x-ms-bmp</mime-type>
      </format>
      <format id="GIF" preferred="false">
        <extension>gif</extension>
        <mime-type>image/gif</mime-type>
      </format>
      <format id="PNG" preferred="false">
        <extension>png</extension>
        <mime-type>image/png</mime-type>
      </format>
      <format id="MNG" preferred="false">
        <extension>mng</extension>
        <mime-type>image/mng</mime-type>
      </format>
      <format id="SVG" preferred="false">
        <extension>svg</extension>
        <mime-type>image/svg+xml</mime-type>
      </format>
      <format id="ICO" preferred="false">
        <extension>ico</extension>
        <mime-type>image/ico</mime-type>
      </format>
      <format id="TIFF" preferred="false">
        <extension>tif</extension>
        <mime-type>image/tiff</mime-type>
      </format>
      <format id="MBM" preferred="false">
        <extension>mbm</extension>
        <mime-type>image/x-epoc-mbm</mime-type>
      </format>
      <format id="WMF" preferred="false">
        <extension>wmf</extension>
        <extension>apm</extension>
        <extension>clp</extension>
        <mime-type>image/x-wmf</mime-type>
      </format>
      <format id="OTA" preferred="false">
        <extension>ota</extension>
        <extension>otb</extension>
        <mime-type>image/x-ota-bitmap</mime-type>
        <mime-type>image/vnd.nokia.ota-bitmap</mime-type>
      </format>
      <format id="WBMP" preferred="false">
        <extension>wbmp</extension>
        <mime-type>image/vnd.wap.wbmp</mime-type>
      </format>
    </image>
    <audio>
      <format id="Windows Media" preferred="false">
        <extension>wma</extension>
        <extension>asf</extension>
        <mime-type>audio/wma</mime-type>
        <mime-type>audio/x-ms-wma</mime-type>
        <mime-type>audio/x-ms-asf</mime-type>
      </format>
      <format id="MP4" preferred="false">
        <extension>mp4</extension>
        <mime-type>audio/mp4</mime-type>
        <mime-type>audio/mp4-latm</mime-type>
        <mime-type>audio/mpeg4</mime-type>
      </format>
      <format id="m4a" preferred="false">
        <extension>m4a</extension>
        <mime-type>audio/mp4</mime-type>
        <mime-type>audio/mpeg4</mime-type>
      </format>
      <format id="3GPP" preferred="false">
        <extension>3gp</extension>
        <extension>3ga</extension>
        <mime-type>audio/3gpp</mime-type>
      </format>
      <format id="AAC" preferred="false">
        <extension>aac</extension>
        <mime-type>audio/aac</mime-type>
        <mime-type>audio/x-aac</mime-type>
        <mime-type>audio/x-pv-aac</mime-type>
      </format>
      <format id="MP3" preferred="true">
        <extension>mp3</extension>
        <extension>mpg</extension>
        <extension>mpeg</extension>
        <mime-type>audio/mpeg</mime-type>
        <mime-type>audio/x-mpeg</mime-type>
        <mime-type>audio/mp3</mime-type>
        <mime-type>audio/mpeg3</mime-type>
        <mime-type>audio/mpg</mime-type>
        <mime-type>audio/x-mp3</mime-type>
      </format>
      <format id="Real8 audio" preferred="false">
        <extension>ra</extension>
        <mime-type>audio/x-pn-realaudio</mime-type>
        <mime-type>audio/vnd.rn-realaudio</mime-type>
        <mime-type>audio/vnd.m-realaudio</mime-type>
      </format>
      <format id="AMR" preferred="false">
        <extension>amr</extension>
        <mime-type>audio/amr</mime-type>
        <mime-type>audio/x-amr</mime-type>
      </format>
      <format id="RMF" preferred="false">
        <extension>rmf</extension>
        <mime-type>audio/rmf</mime-type>
        <mime-type>audio/x-rmf</mime-type>
        <mime-type>audio/x-beatnik-rmf</mime-type>
      </format>
      <format id="XMF" preferred="false">
        <extension>xmf</extension>
        <mime-type>audio/xmf</mime-type>
        <mime-type>audio/xmf0</mime-type>
        <mime-type>audio/xmf1</mime-type>
        <mime-type>audio/mobile-xmf</mime-type>
      </format>
      <format id="MIDI" preferred="false">
        <extension>mid</extension>
        <extension>midi</extension>
        <extension>imy</extension>
        <mime-type>audio/mid</mime-type>
        <mime-type>audio/midi</mime-type>
        <mime-type>audio/x-mid</mime-type>
        <mime-type>audio/x-midi</mime-type>
        <mime-type>audio/sp-midi</mime-type>
        <mime-type>audio/imelody</mime-type>
        <mime-type>audio/x-imelody</mime-type>
        <mime-type>audio/x-nokia-rng</mime-type>
        <mime-type>audio/vnd.semc.melody</mime-type>
      </format>
      <format id="SMAF" preferred="false">
        <extension>mmf</extension>
        <mime-type>application/vnd.smaf</mime-type>
        <mime-type>application/vnd.x-smaf</mime-type>
        <mime-type>audio/smaf</mime-type>
      </format>
      <format id="AU" preferred="false">
        <extension>au</extension>
        <mime-type>audio/basic</mime-type>
        <mime-type>audio/x-basic</mime-type>
        <mime-type>audio/au</mime-type>
        <mime-type>audio/x-au</mime-type>
     </format>
      <format id="WAV" preferred="false">
        <extension>wav</extension>
        <mime-type>audio/wav</mime-type>
        <mime-type>audio/x-wav</mime-type>
      </format>
    </audio>
    <video>
      <format id="MPEG4" preferred="true">
        <extension>mp4</extension>
        <mime-type>video/mpeg4</mime-type>
        <mime-type>video/mp4</mime-type>
        <mime-type>video/mpeg</mime-type>
        <mime-type>application/mpeg4</mime-type>
        <encoding>mpeg-4</encoding>
        <sound>AAC</sound>
        <kbits>96</kbits>
      </format>
      <format id="ASF" preferred="false">
        <extension>wmv</extension>
        <mime-type>video/wmv</mime-type>
        <mime-type>video/x-ms-wmv</mime-type>
        <mime-type>video/x-ms-asf</mime-type>
      </format>
      <format id="3GPP" preferred="false">
        <extension>3gp</extension>
        <mime-type>video/3gp</mime-type>
        <mime-type>video/3gpp</mime-type>
        <encoding>h264</encoding>
        <part>10</part>
        <profile>0</profile>
        <sound>AAC</sound>
        <kbits>96</kbits>
      </format>
      <format id="Real Video" preferred="false">
        <extension>rm</extension>
        <mime-type>application/x-pn-realmedia</mime-type>
        <mime-type>application/vnd.rn-realmedia</mime-type>
        <mime-type>video/3gpp</mime-type>
      </format>
    </video>
    <filesystem>
      <filename maxlength="256" />
      <folder maxlength="256" />
      <path>
      <camera>\DCIM\</camera>
      <image>\Picture\</image>
      <video>\Video\</video>
      <sound>\Music\</sound>
      <feedsound>\music\podcasts\</feedsound> 
      <feedvideo>\video\podcasts\</feedvideo> 
      <feedimage>\picture\podcasts\</feedimage> 
      <feeds>\other\podcasts\</feeds> 	  
      </path>
    </filesystem>
    <drm>
      <oma-v1>true</oma-v1>
    </drm>
    <store name="Media Store" url="www.sonyericsson.com/mediastore">
      <launchstoreexternally>true</launchstoreexternally> 
    </store>
  </device>
</devices>

Надеюсь на любую вашу помощь...
Вложения
Тип файла: rar x.rar (952.1 Кбайт, 19 просмотров)
Ответить с цитированием
  #2  
Старый 28.03.2012, 03:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Для подсветки синтаксиса скачай и поставть компонент(ы) SynEdit. Это самое простое решение.
2. Для выбра файла для чтения/сохранения есть такие компоненты TOpenDialog/TSaveDialog. Пример использования см. в справке.
3. Редактировать xml как текст конечно приколько, но лучше в добавок к этому иметь редактор в виде дерева.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #3  
Старый 28.03.2012, 08:07
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

PHP код:
открытие файла из папки,вместо открытия прописаного файла 
это можно сделать на дельфи (ShellTreeView), а запускать другой редактор, который уже с подсветкой итп
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #4  
Старый 28.03.2012, 09:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

можно сделать что-то навроде Mitec XML Viewer (не сочтите за рекламу ). но это только просмотрщик. мультидокументный. виды: дерево, текст, браузер.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #5  
Старый 28.03.2012, 12:49
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

уважаемый lmikle,можете подсказать где можно найти SynEdit для Delphi XE 2010?

и если можно покажите пример использования TOpenDialog на моем коде,чтобы содержимое файла читалось в Memo1.

Последний раз редактировалось Jaroslav285, 28.03.2012 в 12:52.
Ответить с цитированием
  #6  
Старый 28.03.2012, 12:57
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
PHP код:
открытие файла из папки,вместо открытия прописаного файла 
это можно сделать на дельфи (ShellTreeView), а запускать другой редактор, который уже с подсветкой итп

если можно,покажите наглядно как ето можно сделать,на сколько я понял ето осуществляется с помощью компонента TTreeView либо IwTreeView.
Ответить с цитированием
  #7  
Старый 28.03.2012, 15:27
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

у меня есть shelltreeview на вкладке samples
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #8  
Старый 28.03.2012, 22:13
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
у меня есть shelltreeview на вкладке samples
а как им пользоватся,я когда кидаю его на форму,он мне выдает дерево папок...
Ответить с цитированием
  #9  
Старый 28.03.2012, 22:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Jaroslav285
уважаемый lmikle,можете подсказать где можно найти SynEdit для Delphi XE 2010?

и если можно покажите пример использования TOpenDialog на моем коде,чтобы содержимое файла читалось в Memo1.


Пример:
Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
  If OpenDialog1.Execute Then
    Begin
      XMLDocument1.Active := true;
      XMLDocument1.FileName := OpenDialog1.FileName;
      Memo1.Text:=XMLDocument1.xml.Text ;
      XMLDocument1.Active := false;
    End;
end;

SynEdit здесь: http://sourceforge.net/apps/mediawik...Edit_Home_Page
Он в сырцах, так что должно и так все встать.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #10  
Старый 29.03.2012, 00:55
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Пример:
Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
  If OpenDialog1.Execute Then
    Begin
      XMLDocument1.Active := true;
      XMLDocument1.FileName := OpenDialog1.FileName;
      Memo1.Text:=XMLDocument1.xml.Text ;
      XMLDocument1.Active := false;
    End;
end;

SynEdit здесь: http://sourceforge.net/apps/mediawik...Edit_Home_Page
Он в сырцах, так что должно и так все встать.

Спасибо,все получается,подсветка работает,есть пара вопросов:почему файл через диалог FileDialog открывается только с второго раза и для SaveDialog вообще не сохраняет,я думаю что надо как то описать тип файлов или что-то еще,но не знаю как ето сделать...

прилагаю Код:
Код:
procedure TForm2.Button2Click(Sender: TObject);
begin
If SaveDialog1.Execute Then
    Begin
      XMLDocument1.Active := true;
      XMLDocument1.FileName := SaveDialog1.FileName;
      SynMemo1.Text:=XMLDocument1.xml.Text ;
      XMLDocument1.Active := false;
    End;

end;


 procedure TForm2.Button3Click(Sender: TObject);
begin
  If OpenDialog1.Execute Then
    Begin
      XMLDocument1.Active := true;
      XMLDocument1.FileName := OpenDialog1.FileName;
      SynMemo1.Text:=XMLDocument1.xml.Text ;
      XMLDocument1.Active := false;
    End;
end;
Ответить с цитированием
  #11  
Старый 29.03.2012, 01:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А вам не кажется, что для сохранения код надо писать немного другой? Компоненты диалогов обеспечивают ТОЛЬКО выбор имени файла. Для сохранения надо сделать обратную операцию чтению.

Тип файла описывается в свойствах диалога - Filter и DefaultExtention (кажется так).
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Jaroslav285 (29.03.2012)
  #12  
Старый 29.03.2012, 01:48
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А вам не кажется, что для сохранения код надо писать немного другой? Компоненты диалогов обеспечивают ТОЛЬКО выбор имени файла. Для сохранения надо сделать обратную операцию чтению.

Тип файла описывается в свойствах диалога - Filter и DefaultExtention (кажется так).

Спасибо,буду пытатся сделать что-то подобное.

Последний раз редактировалось Jaroslav285, 29.03.2012 в 01:56.
Ответить с цитированием
  #13  
Старый 29.03.2012, 23:24
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Можете подсказать как сделать древовидную структкуру XML файла какой компонент нужно для етого?
я пробовал ShellTreeView,он мне выдает при помещении на форму древовидную структуру файлов проводника.
Либо обьясните что нужно сделать чтобы он читал структуру файла пожалуйста.
Извините что задаю очень много вопросов.
Ответить с цитированием
  #14  
Старый 30.03.2012, 00:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Просто TreeView.
При этом в самом TreeView выводишь теги целиком, а рядом брось какой-нить property editor, в котором можно редактировать все свойства тега.
Ответить с цитированием
  #15  
Старый 30.03.2012, 00:15
Jaroslav285 Jaroslav285 вне форума
Прохожий
 
Регистрация: 26.03.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Просто TreeView.
При этом в самом TreeView выводишь теги целиком, а рядом брось какой-нить property editor, в котором можно редактировать все свойства тега.

Извините,а можно какой-то пример?
Я нашел что-то похожее до того что вы написали,но не то:
http://parsing-and-i.blogspot.com/20...ew-delphi.html
я так понял вы имели в виду что можно сделать переход по тегам из TreeView в Memo.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter