Вопрос № 128107: Здраствуйте уважаемые экперты. Мне нужно написать написать программу для работы с xml файлями. Точнее мне нужно вытянуть данные из xml в удобоваримый вид. Для работы использую объект XMLDOMDocument. Вроде как разобрасля как эта штука работает. пробле...Вопрос № 128208: Здравствуйте, уважаемые эксперты.
Ситуация: на форме лежит ImageL: TImage, в котором лежит картинка pic: TBitmap, причём картинка меньше, чем сам ImageL, и в оставшемся пространстве видна форма. В процедуре TForm1.ImageLMouseMove я отрисовываю ра...
Вопрос № 128.107
Здраствуйте уважаемые экперты. Мне нужно написать написать программу для работы с xml файлями. Точнее мне нужно вытянуть данные из xml в удобоваримый вид. Для работы использую объект XMLDOMDocument. Вроде как разобрасля как эта штука работает. проблема состоит в том как мне получить все данные если, я не знаю уровень вложенности узлов и их количество и их название. То есть можно сделать что то типа как в ADO GetTableNames и GetFieldNames. Заранее спасибо;)
Поскольку структура 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;
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 20.03.2008, 10:28
Вопрос № 128.208
Здравствуйте, уважаемые эксперты.
Ситуация: на форме лежит ImageL: TImage, в котором лежит картинка pic: TBitmap, причём картинка меньше, чем сам ImageL, и в оставшемся пространстве видна форма. В процедуре TForm1.ImageLMouseMove я отрисовываю рамку для последующего масштабирования изображения.
Проблема: мерцание изображения при перерисовывании.
Подскажите как от него избавиться.
На Вашу тему есть непложая статья:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=881
Недеюсь, что это поможет
Ответ отправил: Drbear (статус: 8-ой класс)
Ответ отправлен: 20.03.2008, 10:42 Оценка за ответ: 4 Комментарий оценки: Эту статью я читал перед тем как задать вопрос. Но к сожалению я не обладаю достатьчно прямыми руками, чтобы реализовать её советы в программный код :(
Да TImage всю жизнь мерцает, если часто обновляется.
Можно снизить мерцание (но не избавиться) формируя картинку с рамкой в отдельном битмапе, а его уже присваивая TImage.
Могу посоветовать от TImage отказаться и все делать "руками" через TBitmap.Draw или WinAPI BitBlt/StretchBlt на OnPaint (или написать свой компонент, от TCustomPanel, например). Совет с предварительной картинкой в отдельном битмапе и тут актуален, иначе прорисовка будет идти по частям.
P.S. А еще можно использовать "резиновую" рамку при масштабировании и перерисовывать только результат.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 20.03.2008, 10:44 Оценка за ответ: 4 Комментарий оценки: Ясно. Придётся попариться.
P.S. Я думал, что то, что я сделал, и есть "резиновая" рамка. А как её можно реализовать по другому?