Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1101
от 25.03.2008, 06:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 441, Экспертов: 60
В номере:Вопросов: 2, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 128107: Здраствуйте уважаемые экперты. Мне нужно написать написать программу для работы с xml файлями. Точнее мне нужно вытянуть данные из xml в удобоваримый вид. Для работы использую объект XMLDOMDocument. Вроде как разобрасля как эта штука работает. пробле...
Вопрос № 128208: Здравствуйте, уважаемые эксперты. Ситуация: на форме лежит ImageL: TImage, в котором лежит картинка pic: TBitmap, причём картинка меньше, чем сам ImageL, и в оставшемся пространстве видна форма. В процедуре TForm1.ImageLMouseMove я отрисовываю ра...

Вопрос № 128.107
Здраствуйте уважаемые экперты. Мне нужно написать написать программу для работы с xml файлями. Точнее мне нужно вытянуть данные из xml в удобоваримый вид. Для работы использую объект XMLDOMDocument. Вроде как разобрасля как эта штука работает. проблема состоит в том как мне получить все данные если, я не знаю уровень вложенности узлов и их количество и их название. То есть можно сделать что то типа как в ADO GetTableNames и GetFieldNames. Заранее спасибо;)
Отправлен: 19.03.2008, 13:36
Вопрос задал: Dmitry015kdi (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: PavelGM
Здравствуйте, Dmitry015kdi!

Поскольку структура XML древовидная, используйте обход дерева. На любом уровне можно вызвать ChildNodes и получить доступ к следущему уровню вложенности. Например так (рекурсивный обход)

function EnumNodes(XNode : IXMLNode);
var ANode : IXMLNode;
begin
for i := 0 to XNode.ChildNodes.Count-1 do begin
ANode := XNode.ChildNodes.Get(i);
Memo.Lines.Add(ANode.NodeName);
EnumNodes(ANode);
end;
end;

Ну и стартовать по первому уровню (AXML : TXMLDocument)

for i := 0 to AXML.ChildNodes.Count-1 do begin
ANode := AXML.ChildNodes.Get(i);
Memo.Lines.Add(ANode.NodeName);
EnumNodes(ANode);
end;

Исправление автора ответа.
-----
∙ Отредактировал: sir henry (Академик)
∙ Дата редактирования: 20.03.2008, 14:13
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 20.03.2008, 10:28


Вопрос № 128.208
Здравствуйте, уважаемые эксперты.
Ситуация: на форме лежит ImageL: TImage, в котором лежит картинка pic: TBitmap, причём картинка меньше, чем сам ImageL, и в оставшемся пространстве видна форма. В процедуре TForm1.ImageLMouseMove я отрисовываю рамку для последующего масштабирования изображения.
Проблема: мерцание изображения при перерисовывании.
Подскажите как от него избавиться.

Приложение:

Отправлен: 20.03.2008, 00:12
Вопрос задал: Хукаленко Дмитрий (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Drbear
Здравствуйте, Хукаленко Дмитрий!

На Вашу тему есть непложая статья:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=881
Недеюсь, что это поможет
Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 20.03.2008, 10:42
Оценка за ответ: 4
Комментарий оценки:
Эту статью я читал перед тем как задать вопрос. Но к сожалению я не обладаю достатьчно прямыми руками, чтобы реализовать её советы в программный код :(

Отвечает: PavelGM
Здравствуйте, Хукаленко Дмитрий!

Да TImage всю жизнь мерцает, если часто обновляется.

Можно снизить мерцание (но не избавиться) формируя картинку с рамкой в отдельном битмапе, а его уже присваивая TImage.

Могу посоветовать от TImage отказаться и все делать "руками" через TBitmap.Draw или WinAPI BitBlt/StretchBlt на OnPaint (или написать свой компонент, от TCustomPanel, например). Совет с предварительной картинкой в отдельном битмапе и тут актуален, иначе прорисовка будет идти по частям.

P.S. А еще можно использовать "резиновую" рамку при масштабировании и перерисовывать только результат.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 20.03.2008, 10:44
Оценка за ответ: 4
Комментарий оценки:
Ясно. Придётся попариться. P.S. Я думал, что то, что я сделал, и есть "резиновая" рамка. А как её можно реализовать по другому?


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.6 beta от 22.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное