Помощь начинающему

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: Помощь начинающему

Сообщение Little_Roo » 03.12.2012 02:37:23

Leon писал(а):.Отдельная программа имет окно с таблицей,в которую вручную с клавиатуры заносятся некоторые значения.

А что подразумевается под таблицей ??? :shock:

Leon писал(а):Все скатано из Интернета.

Нижние полушария головного мозга отсюда растут?
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Помощь начинающему

Сообщение Vadim » 03.12.2012 05:31:26

Вопрос №1. Таблиц бывает много. Какая имеено у Вас?
Вопрос №2. Вы таблицу хотите заполнять именно с помощью WinAPI?
Vadim
долгожитель
 
Сообщения: 2563
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помощь начинающему

Сообщение Leon » 03.12.2012 16:16:06

Ну как что подразумевается под таблицей? Структура типа StringGrid в Делфи.Внешняя программа,похоже,писана на Си.Требовалось путем эмуляции нажатий на определенные клавиши заполнить эту таблицу данными.Вот я и попробовал.А как еще иначе? В Интернете только и советуют через АРI.А насчет "нижних полушарий" хорошо говорить тем,кто имеет спецобразование в информатике.Я - любитель.А значит многого не знаю.Читаю литературу,ищу в сети или вот спрашиваю у знающих людей.Что-то получается,что-то нет.Такова она жисть...
Кстати,прошлой ночью пробовал создать свою внешнюю структуру.Открыл новый проект,поместил на форму табличку StringGrid,выставил ей опции на возможность ввода с клавиатуры,откомпилировал.В модуле переноса в команде FinfWindows выставил название окошка новосозданной таблички.Запускаю первой мою самопальную внешнюю табличку.Потом запускаю модуль переноса.И Ок! Как по маслу!.Видно как сработала команда
SetForegroundWindow(WND). Формочка получила фокус и начался перенос данных через API.
Закрываю мою формочку,открываю программу со злочасной таблицей.И снова... Вручную все идет гладко.А по переносу - никак! SetForegroundWindow(WND) вообще не работает,данные отсылаются невесть куда.При ручной отладке они пишутся мне прям в окно редактора,хотя он имеет совсем другой wnd.Что за :?: ,извините?
Leon
новенький
 
Сообщения: 65
Зарегистрирован: 30.03.2011 09:27:02

Re: Помощь начинающему

Сообщение Vadim » 04.12.2012 08:35:11

Т.е. у Вас есть готовая, кем-то другим написанная программа, с таблицей, похожей на StringGrid и вы хотите эту, похожую на StringGrid, таблицу заполнять из своей собственной программы?
Vadim
долгожитель
 
Сообщения: 2563
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помощь начинающему

Сообщение Leon » 04.12.2012 12:59:54

Таки так.Причем с писанной мной внешней таблицей StringGrid все идет "на-ура".Сегодня ночью выудил еще кое что неожиданное.Дело в том,что когда запустить мою программу и тут же щелкнуть на таблице посторонней программы,то перенос идет ... :shock: Оказывается постороннее окно просто не получает фокуса,а щелчек на нем мышью придает ему фокус и все Ок! Только вот не пойму,почему писаной мной посторонней таблице этот фокус придается,а чужой посторонней нет.Команды API ведь одни и те же.Когда решим этот вопрос,выложу код здесь.Авось кому-то тоже придется.Абы не мучались такие неучи как я. :oops:

Добавлено спустя 9 минут 10 секунд:
PS. Кстати,господа эксперты.Я тут на страничке загрузки обовлений Лазаруса,поскольку пользуюсь им,http://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/Lazarus%201.0.4/ нашел ссылки на два файла.Первый - разумеется,сам Лазарус.А зачем второй файл lazarus-1.0.4-fpc-2.6.0-cross-arm-wince... Кто-нить может подсказать? Его скачивать и устанавливать обязательно или можно обойтись? Спасибо.
Leon
новенький
 
Сообщения: 65
Зарегистрирован: 30.03.2011 09:27:02

Re: Помощь начинающему

Сообщение Vadim » 04.12.2012 13:14:20

А Вы попробуйте заносить данные без всякого фокуса. Для занесения данных в любое окно, нужно его хэндл и ничего более.

Добавлено спустя 3 минуты 1 секунду:
lazarus-1.0.4-fpc-2.6.0-cross-arm-wince... - это файл для кросскомпиляции из обычной винды в WindowsCE. Если Вы не собираетесь писать проги для всяких там смартфонов, то оно Вам не нужно.
Vadim
долгожитель
 
Сообщения: 2563
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помощь начинающему

Сообщение Leon » 04.12.2012 17:01:47

Вадим,спасибо за внимание.В том-то и дело,что хэндл почему-то не работает.То есть на мою постороннюю табличку он работает,а на чужую - нет.Нашел тут WinSpy,попробовал посмотреть структуру окна этой злочасной программы.Нашел,что таблица,которая никак не хочет заполняться по пересылке принадлежит классу TDBGRIDEh,в Делфи я такого класса не знаю,например.Пробовал определить хэндл главного окна.Выдало большущее число.Потом по этому хэндлу пробовал искать таблицу TDBGRIDEh командой FindWindowEx(wnd,0,'TDBGRIDEh',nil),то есть искал объекты этого хэндлового окна.Выдало "0".Похоже,что таблица хэндла не имеет.Или параметры в команде задал неравильно. :x
Вобщем,если вовремя кликнуть на этой таблице,то пересылка идет.А как чтобы без кликания,просто по команде - пока не знаю.
Leon
новенький
 
Сообщения: 65
Зарегистрирован: 30.03.2011 09:27:02

Re: Помощь начинающему

Сообщение Little_Roo » 04.12.2012 19:42:41

Leon писал(а):TDBGRIDEh,в Делфи я такого класса не знаю,


Это сторонняя библиотека (платная :( ) EhLib
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Помощь начинающему

Сообщение Leon » 05.12.2012 12:54:15

Вобщем бог там с той библиотекой.Просто перед отсылкой данных я даю Sleep(10000) чтобы успеть щелкнуть мышкой на таблице и все идет чин-чином.
Пока будет так,если нет лучше...
Тут другой вопрос назрел.В моей программе есть StringGrid,как бы его сказать,усложненный.То есть я завел там колонки,котрым можно придавать каждой отдельное имя и свойства.Это не таблица с обычными колонками.Я думаю понятно в чем дело.Стал вопрос раскрашивать каждую ячейку соответственно величины числа,которое в ней записано.Посоветовали OnDrawCell. Попробовал.И ничего из этой затеи не вышло.То ли баг в Лазарусе,то ли команда эта для таких таблиц не проходит.Вобщем при запуске таблица отрисовала только одну полупрозрачную сетку.Без предписанной ей структуры.
Пробовал несколько раз и все попусту.Что бы это значило? Может как-то можно выйти из положения.Или все-таки рисовать обычную Стринггрид без всяких навороченных колонок? Спасибо.
Leon
новенький
 
Сообщения: 65
Зарегистрирован: 30.03.2011 09:27:02

Re: Помощь начинающему

Сообщение Leon » 07.12.2012 20:47:10

Кому интересно,подскажу некую мелочь.Долго я с этим стринггридом цацкался,пока меодом тыка не нашел одну полезную команду.
Итак - сегмент кода,где вы раскрашиваете свою табличку.Это необязательно делать в OnDrawCell. Моя таблица от одного наличия скелета begin end этой процедуры конфузится и не хочет правильно прорисовываться.Тогда я даю таблице прорисоваться как ей предписано,заполняю ее данными,а потом в отдельной процедуре,которую взавершение всех табличных работ расписываю раскраску квадратиков и обязательно завершаю процедуру раскраски командой StringGrid1.Updatе. Без этих магических слов таблица не раскрасится и вы долго будете ломать гоову почему при правильном коде ничего не работает.А снимается раскраска прям враз командой StringGrid1.Repaint или StringGrid1.Paint.
Leon
новенький
 
Сообщения: 65
Зарегистрирован: 30.03.2011 09:27:02

Re: Помощь начинающему

Сообщение nikolay61 » 09.12.2012 01:51:32

Доброго! А как убрать такие кракозябры
http://img-fotki.yandex.ru/get/4116/104 ... fb12_L.jpg
nikolay61
новенький
 
Сообщения: 27
Зарегистрирован: 15.08.2012 16:58:46

Re: Помощь начинающему

Сообщение Vadim » 09.12.2012 11:43:53

nikolay61 писал(а): А как убрать такие кракозябры

Закрыть окно консоли. :D
Вы бы хоть вопрос сформулировали внятно,что ли... ;)
Vadim
долгожитель
 
Сообщения: 2563
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помощь начинающему

Сообщение nikolay61 » 09.12.2012 12:25:34

Vadim писал(а):Вы бы хоть вопрос сформулировали внятно,что ли..

Прошу прощения. Когда запускаю програму на выполнение и вместо, например: "Введите три числа через пробел", выскакивают такие крякозябры.
nikolay61
новенький
 
Сообщения: 27
Зарегистрирован: 15.08.2012 16:58:46

Re: Помощь начинающему

Сообщение Vadim » 09.12.2012 13:05:41

У Вас в консоли какая кодировка?
Vadim
долгожитель
 
Сообщения: 2563
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помощь начинающему

Сообщение nikolay61 » 09.12.2012 13:17:29

А как узнать какая?
nikolay61
новенький
 
Сообщения: 27
Зарегистрирован: 15.08.2012 16:58:46

Пред.След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru