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

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


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

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

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

Выпуск № 266
от 16.10.2005, 15:06

Администратор:Калашников О.А.
В рассылке:Подписчиков: 256, Экспертов: 43
В номере:Вопросов: 5, Ответов: 13


Вопрос № 27522: Здравствуйте, уважаемые эксперты. Существует такая проблема, необходимо сообщить окну о событии WM_KEYDOWN, если фокус занят одним из его дочерних элементов управления (т.е. WM_KEYDOWN приходит не окну, а именно этому элементу управления). В нали...
Вопрос № 27530: Уважаемые Гуру! В базе Paradox надо поставить фильтр по двум полям, имею 3 самоучителя и ни в одном нет простенького примера, либо "не в ту степь", либо слишком утяжелёны. Пытался сделать "по логике вещей" упорно даёт ошибку.<...
Вопрос № 27537: Трабла такая: > Нужно несжатый *.avi разбить на кадры-рисунки... после некой их доработки собрать их в новый мегафайл.avi ЗЫ: Слышал, что в этом может помочь DirectShow!?.. Но как? И где скачать компонент? Пишу на Delph...
Вопрос № 27549: Здравствуйте, пишу прогу типа FAR или TotalComander хочю встроить выполнение команд cmd, как сделать ввод и вывод через мою прогу. (Т. е. чтобы не запускать cmd, пользователь сам вводить команду и получает результат напремер в поле Memo1)...
Вопрос № 27551: Здраствуйте Lector ! у меня проблемы с inifiles не читает вы отправили мне письмо и просили выслать исходник у меня система ХР, delphi 7 посмотрите пожалуйста заранее благодарен! ..

Вопрос № 27.522
Здравствуйте, уважаемые эксперты.
Существует такая проблема, необходимо сообщить окну о событии WM_KEYDOWN, если фокус занят одним из его дочерних элементов управления (т.е. WM_KEYDOWN приходит не окну, а именно этому элементу управления). В наличии есть только хэндл окна, в переопределенной wndproc окна, это событие не приходит. Keypreview в свойтсвах формы не помогает.
Отправлен: 10.10.2005, 19:09
Вопрос задала: Татьяна (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Татьяна!
Даже если этому окну насильно послать сообщение?
postmessage(HWND, wm_KEYDOWN,wParam,lParam);
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 10.10.2005, 19:31

Отвечает: Boriss
Здравствуйте, Татьяна!
А каким именно элементом управления занят фокус? Напишите - легче будет искать решение проблемы. Как понимаю из анализа текста - не дочерное окно, но ... . Простое тестирование показывает, что TEdit не мешает
И еще: возможное решение - искать окно не по имени, а по классу
---------
Прорвемся! (Быть может :(( )
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 11.10.2005, 13:07


Вопрос № 27.530
Уважаемые Гуру!
В базе Paradox надо поставить фильтр по двум полям, имею 3 самоучителя и ни в одном нет простенького примера, либо "не в ту степь", либо слишком утяжелёны. Пытался сделать "по логике вещей" упорно даёт ошибку.
Только пожалуйста пропишите код с пояснением, сделайте снисхождение по моей "квалификации".
И посоветуйте хорошую литературу.
Отправлен: 10.10.2005, 22:19
Вопрос задал: LBV (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Werewolf
Здравствуйте, Щербаков Сергей Николаевич!
Можно написать обработчик OnFilterRecord компонента TTable
так например
procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept:=(Table1SIZE.AsInteger>0)and(Table1BMP.IsNull)
end;
Ответ отправил: Werewolf (статус: 10-ый класс)
Отправлен: 11.10.2005, 01:10

Отвечает: sir henry
Здравствуйте, Щербаков Сергей Николаевич!
А почему бы Вам не сделать снисхождение экспертам и не написать, по каким полям Вы хотите сделать фильтр, что делаете и какую ошибку видите? Чай не с экстрасенсами разговариваете и мысли Ваши никто читать не может.
Лично я пользуюсь книгой Фаронова "Программирование баз данных в Delphi 7". И степь там та и не тяжело.
По такому вопросу ответ можно дать только в общем виде и от того что приводится в литературе он совершенно не будет отличаться. А с чтением литературы, как я понял, у Вас полный напряг.
Поэтому, давайте конкретный вопрос.
Теперь теория.
Фильтрацию можно делать кучей разных способов. Все зависит от того, какой набор данных Вы используете:
- TTable
- TQuery
Для TTable:
1. Свойство Filter. Заносите туда что-то типа (Field1>100) and (Field2=0), а свойство Filtered ставите равным True.
2. Для сложных случаев фильтрации, когда выражение фильтра громоздко, это выражение помещаете в событие OnFilterRecord:
Accept:=(Field1>100) and (Field2=0);
Фильтрование начнется как только Вы поставите Filtered:=True;
Для TQuery:
Это вообще классика и пользоваться им одно удовольствие.
Вся фильтрация задается после ключевого слова WHERE
SELECT Field1, Field2 FROM Table1
WHERE (Field1>100) and (Field2=0)
Здесь Вы получаете набор данных, готовый к немедленному употреблению, в то время как при использовании фильтров в TTable, если таблица очень большая, работа с НД получается несколько тормознутая, т.к. приходится тратить время на обработку КАЖДОЙ записи по условию фильтра.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 11.10.2005, 06:36
Оценка за ответ: 5
Комментарий оценки:
Уважаемый!
Напряг у меня или нет, это я как нибудь сам разберусь, и вообще, с этим делом разберусь сам, если надо.
Вы здесь для того что бы очки набирать или как?
Почитайте моё вступление на наш корпоративный сайт, и поучитесь общению с людьми.
http://www.lazerlink.ru/
Мой ник: Father.


Вопрос № 27.537
Трабла такая: > Нужно несжатый *.avi разбить на кадры-рисунки...
после некой их доработки собрать их в новый мегафайл.avi

ЗЫ: Слышал, что в этом может помочь DirectShow!?.. Но как? И где скачать компонент?


Пишу на Delphi 7
Отправлен: 11.10.2005, 06:10
Вопрос задал: Force User (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Энный Энн!
Как - вопрос слишком специфичный и в двух словах ответить нельзя. А вот где скачать DirectX для Дельфи - пожалуйста:
http://clootie.narod.ru/delphi/download_dx90.html
или тут:
http://www.clootie.ru
Там демки есть, разберите их.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 11.10.2005, 07:49

Отвечает: Rusland
Здравствуйте, Энный Энн!
У меня есть исходник, где из bmp-файлов собирается avi файл (без DirectShow). Если нужно, давай email, вышлю.
---------
Пресловутое недостающее звено между обезьяной и цивилизованным человеком - это как раз мы. (Конрад Лоренц)
Ответ отправил: Rusland (статус: Студент)
Отправлен: 11.10.2005, 09:30


Вопрос № 27.549
Здравствуйте, пишу прогу типа FAR или TotalComander хочю встроить выполнение команд cmd, как сделать ввод и вывод через мою прогу. (Т. е. чтобы не запускать cmd, пользователь сам вводить команду и получает результат напремер в поле Memo1)
Отправлен: 11.10.2005, 12:05
Вопрос задал: Bini33 (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Bini33!
Здесь уже был такой вопрос. Ищи по слову CreatePipe. Я даже отвечал на него. Если не найдешь, пиши мне на мыл и я пришлю тебе пример на дельфях.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 11.10.2005, 12:11

Отвечает: Татьяна
Здравствуйте, Bini33!
ну например, так выполнить последнюю строку в мемо:
winexec(pchar(memo1.Lines[memo1.lines.count - 1]),SW_HIDE);
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 4-ый класс)
Отправлен: 11.10.2005, 12:13

Отвечает: Bob Johnson
Здравствуйте, Bini33!
Думаю, что без запуска cmd.exe ты не обойдешь, т.к. только он в состоянии выполнять такие команды как mkdir, type, delete и т.п. Я бы преложил такой алгоритм - пользователь вводит команду, ты запускаешь cmd.exe /c{команда}, при этом если у тебя консольное приложение, то команда сама будет выполнять в твоей консоли, если же графическое, то надо подсовывать переопределенные хэндлы на stdin, stderr и stdout, через которые с программой можно будет взаимодействовать.
отдельно следует выполнять команду cd, т.к. менять каталог придется вручную (ведь cmd.exe запущенный в твоем процессе не в состоянии сменить твой текущий каталог).
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 11.10.2005, 12:20

Отвечает: Romodos
Здравствуйте, Bini33!
А может использовать winexec('your command',0);
И в зависимости от возвращаемого значения выводить текст в memo?
---------
FAQ me off!
Ответ отправил: Romodos (статус: 10-ый класс)
Отправлен: 11.10.2005, 13:02

Отвечает: sir henry
Здравствуйте, Bini33!
Чтобы выполнить ту или иную команду есть прекрасная функция ShellExecute() в модуле ShellAPI.
Как альтернативу можно использовать WinExec() - но эта функция позиционируется как устаревшая и вызывает на самом деле CreateProcess(). И, наконец, непосредственно CreateProcess() - но эта функция настолько навороченая и имеет столько параметров, что лучше ее оставить в покое. :)
А результат какой Вы хотите получить? если создается после запуска какре-то окно или Вы открываете документ Word, то Мемо Вам не нужно. Если результатом будет выполнение како-либо консольной проги, то можно переназначить хэндл StdOut на хэндл Мемо, однако проще будет сделать при запуске перенаправление в текстовый файл, а потом этот файл загрузить в Мемо:
ShellExecute(0, 'open', 'arj', 'a -r -y c:arch c:windows*.* > c:file.txt', NIL, SW_HIDE);
Memo1.LoadFromFile('c:file.txt');
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 11.10.2005, 14:46

Отвечает: Schmak
Здравствуйте, Bini33!
Для запуска программ можно использовать ShellExecute из модуля ShellAPI.
Пример: ShellExecute(0, 'open',pchar('program.exe'),pchar(parameters), nil, SW_SHOWNORMAL);

Или же Winexec.
Пример: WinExec( 'program.exe ' ,0 ) ; //без параметров
WinExec( 'program.exe /params ' ,0 ); //c параметрами
Лучше конечно же использовать ShellExecute.
Ответ отправил: Schmak (статус: 1-ый класс)
Отправлен: 11.10.2005, 16:23


Вопрос № 27.551
Здраствуйте Lector !
у меня проблемы с inifiles не читает вы отправили мне письмо и просили выслать исходник у меня система ХР, delphi 7
посмотрите пожалуйста
заранее благодарен!

Приложение:

Отправлен: 11.10.2005, 14:02
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lector
Здравствуйте, ERA!
Испоьзуй TTntIniFiles из http://www.tntware.com/delphicontrols/unicode/.
Он специально предназначен для юникодовских файлов и с лёгкостью решает подобные проблемы.
---------
Хочешь помочь старику - сделай вместо него.
Хочешь помочь новичку - сделай вместе с ним.
Хочешь помочь мастеру - отойди и не мешай,
а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 5-ый класс)
Отправлен: 11.10.2005, 15:47


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

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

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

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

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


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


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

Rambler's Top100 Яндекс


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

В избранное