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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 259
от 08.10.2005, 18:09

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


Вопрос № 27136: Здравствуйте, уважаемые эксперты, вопрос таков: одна форма (назовем ее форма2) передает хендел какого-либо своего объекта(например контрол-бара или тулбара) другой форме (форма1). Форма1 создает у себя панель (TPanel) и переданный объект делает р...
Вопрос № 27147: Здравствуйте уважаемые эксперты. Хотел бы узнать, как можно создать в системе виртуальный com-порт. Программно естественно. Встречал программу (TCPCom) которая так делала... Причем этот виртуальный порт мог подменять реальный существующий, если т...
Вопрос № 27158: Здравствуйте, мне требуется компонент или набор функций для хранения небольшой но несколько нестандартной базы данных. В общем строка содержащая два поля по 256 сиволов и поле 2^16 символов. Количество строк не определено. Количество таких таблиц...

Вопрос № 27.136
Здравствуйте, уважаемые эксперты, вопрос таков:
одна форма (назовем ее форма2) передает хендел какого-либо своего объекта(например контрол-бара или тулбара) другой форме (форма1). Форма1 создает у себя панель (TPanel) и переданный объект делает родителем эту панель, после чего объект успешно переносится на эту панель, в этом проблем нет. Проблема вот в чем: объектов перенесенных на эту панель может быть несколько, соответственно панель должна изменять свои размеры. свойство autosize панели работает некорректно (видимо оно ищет у себя не хенделы объекта, а контролы, но я не уверенна) - результат таков, размер панели при этом меняется так, как-будто этих объектов у нее и нет. Хотелось бы узнать варианты выходов из этой ситуации, конечно можно устанавливать размер вручную, правда боюсь, что потом могут возникнуть проблемы с синхронизацией (например, дочерний объект имеет возможность изменять свой размер). Надеюсь, я достаточно корректно объяснилась :). Заранее спасибо за ответы
Отправлен: 02.10.2005, 22:20
Вопрос задала: Татьяна (статус: 3-ий класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Jadd
Здравствуйте, Татьяна!
xlcoder@mail.ru с примером кода. Постараюсь помочь. Пока из формулировки мало что понятно.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 02.10.2005, 23:13
Оценка за ответ: 5

Отвечает: Bob Johnson
Здравствуйте, Татьяна!
Что имеется в виду под "хендел какого-либо своего объекта"? Window Handle (HWND)? Если да, то так под дельфи работать нельзя. В дельфи у визуального компонента есть свойство Parent, которое тебе и нужно менять (просто установить панель, как parent переносимому компоненту). Любой визуальный компонент наследуется от класса TWinControl, поэтому в качестве типа следует выбирать его для унификации процедуры переноса.
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 02.10.2005, 23:31
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Татьяна!
Не совсем понятно, отчего такая сложность? Если нужно создать новый элемент по образцу и подобию элемента другой формы, то не проще ли снять его основные хар-ки (размеры, например) и просто создать этот элемент с взятыми хар-ками?
Может быть у Вас определенные параметры связаны включенным свойством Align? Тогда возможна некорректная отработка авторазмера.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 03.10.2005, 05:36

Отвечает: Lector
Здравствуйте, Татьяна!
Попробуйте использовать функции RemoveControl и InsertControl.
Конечено придётся передавать не handle, а ссылку на объект, но должно помочь.
---------
Хочешь помочь дураку - сам дурак
Ответ отправил: Lector (статус: 4-ый класс)
Отправлен: 03.10.2005, 12:13

Отвечает: mvp
Здравствуйте, Татьяна!
Попытайтесь использовать FindControl (см. help и приложение)

Приложение:

---------
Моя совесть чиста - не бывшая в употреблении

Ответ отправил: mvp (статус: 7-ой класс)
Отправлен: 03.10.2005, 21:01
Оценка за ответ: 5


Вопрос № 27.147
Здравствуйте уважаемые эксперты.
Хотел бы узнать, как можно создать в системе виртуальный com-порт. Программно естественно. Встречал программу (TCPCom) которая так делала... Причем этот виртуальный порт мог подменять реальный существующий, если тот в данный момент не занят др. процессом. Но вот пояснений как подобное реализовать в сети не нашел.
Может, кто-нибудь уже решал подобную задачу?
Спасибо.

ЗЫ Извиняюсь за повтор, прошлый раз задал вопрос, и руссфак закрылся на профилактику =) не знаю успешно отправился или нет. Если что, сорю.
Отправлен: 03.10.2005, 08:32
Вопрос задал: akaDemik (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Delphin
Здравствуйте, akaDemik!
Есть несколько путей решения:
1. Написать свой драйвер на C++ ( C ? ).
2. Перехватывать API работы с портом. ( Типа CreateFile ).

#1 : Довольно сложен и требует знания C++.
#2 : Тоже не прост и требует знания API функций.

Лучше использовать #1.

Подменять? Наверно он удалял его и ставил свой драйвер к этому порту.

И почему "TCPCom" ? TCP - Ведь это к сетям относится? Или я не прав.

Можеш попробовать перехватывать API функции и фильтровать их в соответсвии с твоими нуждами. Допустим перехватил.
1. Смотри на какой COM порт. Если то что нужен то идем дальше иначе передаем на нормальную функцию.
2. Обрабатываеш данные которые пришли. Записываеш их.
3. Если надо то вызываеш исходную процедуру чтобы все ушло в порт.

На этом все. Больше как сделать я даже не знаю. И учти перед тем как браться подумай нужно ли оно тебе и сможеш ли ты довести до конца свой проект.

Удачи!!!
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: Студент)
Отправлен: 03.10.2005, 12:51
Оценка за ответ: 5
Комментарий оценки:
Ну, хотя бы очертил основные направления раскопок, спасибо. А вообще хотелось конечно про написание драйверов поподробнее =)
Кстати, а почему только на С++ (С)?


Вопрос № 27.158
Здравствуйте, мне требуется компонент или набор функций для хранения небольшой но несколько нестандартной базы данных.
В общем строка содержащая два поля по 256 сиволов и поле 2^16 символов. Количество строк не определено. Количество таких таблиц тоже. Я думаю с задачей программы лучше всего справится компонент для работы с xml, хотя могу ошибаться.
посоветуйте чего нибудь
ps delphi 7и желательно, но необязательно отсутствие требования компонентом vcl (forms)

Заранее спасибо
Отправлен: 03.10.2005, 14:27
Вопрос задал: Alexkht (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Werewolf
Здравствуйте, Alexkht!
На http://sourceforge.net/projects/jvcl есть библиотека компонентов JVCL содержащая TJvSimpleXML и многое другое.
С другой стороны если количество записей в таблице не будет слишком велико можно воспользоваться RxMemTable (Библиотека RX много где выложена в инете) для обработки данных в памяти программы.
Ответ отправил: Werewolf (статус: 9-ый класс)
Отправлен: 03.10.2005, 14:41

Отвечает: sir henry
Здравствуйте, Alexkht!
Хм. Несколько сумбурное изложение вопроса. :)
"...желательно, но необязательно отсутствие требования компонентом vcl (forms)" - т.е. в Вашем приложении должны полностью отсутствовать Дельфийские компоненты VCL и, в частности, формы?
Тогда пишете консольное приложение. Для доступа к таблицам берете какой-нибудь компонент с sourceforge.net для прямого доступа (например, для таблиц DBF есть компонент TDBF), ну и, в общем, все. Остальное будет зависить от решаемой Вами задачи.
Хотите использовать XML - пожалуйста. Ищите там же парсер для XML.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 03.10.2005, 16:03

Отвечает: Delphin
Здравствуйте, Alexkht!
Да вы правы можно использовать XML.

В Windows XP SP2 уже есть ActiveX компонент для работы с XML.
Так же вам поможет мастер "XML Binding".

Я надеюсь вы знает формат XML ?

После установки этого ActiveX вы сможете обращаться кнему.
Он VCL компонент.
Там все интуитивно понятно.

Но если что непонятно то стучите в ICQ: 66550088 или в ту которая написана в подписи.

Удачи!!!
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: Студент)
Отправлен: 03.10.2005, 16:47

Отвечает: Warrior
Здравствуйте, Alexkht!
Вот пример, где показано, как записать в BLOB поле большой текст (более 255)
Компоненты стандартные сюда подойдут :)

Приложение:

Ответ отправил: Warrior (статус: 1-ый класс)
Отправлен: 03.10.2005, 18:13
Оценка за ответ: 4
Комментарий оценки:
Спасибо попробую


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное