Консультация № 140721
25.07.2008, 16:38
0.00 руб.
0 1 1
Добрый день, эксперты.
Подскажите, пожалуйста, как получить данные из чужого StringGrid'a, конкретно из его ячеек, т.е. StringGrid находится в чужом запущенном приложении, Handle его я нахожу, и всё :(
Как вытягивать данные из Edita, чужого, впринципе, знаю, а вот с эти возникла проблема.
Спасибо.

Обсуждение

Неизвестный
27.07.2008, 12:30
общий
это ответ
Здравствуйте, [b]Семенов Андрей Викторович[/b]!

Принцип "вытягивания" данных из полей ввода (TEdit) приблизительно такой:

1. Вы получаете идентификатор (HWND) нужного поля ввода.
2. Отправляете этому полю сообщение WM_GETTEXT (либо напрямую, используя функцию SendMessage, либо с помощью функции GetWindowText, либо используете какую-то другую функцию).
3. Edit получает сообщение WM_GETTEXT и выдает соответствующий текст (кстати говоря, Вы можете создать собственный Edit со своим обработчиком сообщения WM_GETTEXT и будете выдавать любой текст, который Вам вздумается).

К сожалению, если Вы просмотрите реализацию класса TStringGrid (в файле [Delphi]\Source\Vcl\Grids.pas), то увидите, что никаких дополнительных обработчиков сообщений в нем нет. Обработчик сообщения WM_GETTEXT унаследован классом TStringGrid от класса TControl.
Т.е. Вам либо придется создавать собственный компонент, унаследованный от TStringGrid, обрабатывающий пользовательские сообщения (см. WM_USER), либо программа, содержащая StringGrid, должна передавать каким-либо образом данные из него второй программе (можно опять же с помощью пользовательских сообщений, например).

Успехов!
Форма ответа