Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 5

Автор: Jj7777
Дата сообщения: 19.03.2010 21:15
Подскажите, пожалуйста, как сделать так, чтобы моя программа закрывалась вместе с другой программой, блокнотом тем же, например?

Т.е. в блокноте мы жмем на крестик и он закрывается вместе с моей программой.


procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, 'Untitled - Notepad');
if (hwndHandle <> 0) then

А дальше не знаю как писать (( Подскажите, плиз
Автор: Frodo_Torbins
Дата сообщения: 19.03.2010 22:16
Jj7777
Судя по всему вам помогут хуки: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=548
Автор: cepbl
Дата сообщения: 20.03.2010 13:08
Посоветуйте, как мне отобразить avi, чтобы снизу был ползунок, позволяющий переходить на нужное время. Я использовал компоненты Tpanel для отображения видео и Tmediaplayer. Нужен только ползунок.
Автор: mdid
Дата сообщения: 20.03.2010 16:46
cepbl
раскопки в сторону trackbar...
Автор: cepbl
Дата сообщения: 20.03.2010 23:58
Спасибо, теперь работает.
Еще вопрос: если я задаю тип видео(dtAVIVideo), тогда ничего не воспроизводится(хотя формат avi), поэтому формат стоит автоматический, но тогда если я хочу задать имя открываемого файла в программе, то возникает ошибка, говорит, что не может определить формат видео. Как это можно обойти?
Автор: zakov
Дата сообщения: 21.03.2010 03:13
С DCOM разобрался, грабли были в настройках компонента на сервере, надо было поставить в свойствах компонента / удостоверение / запуск от имени текущего пользователя

Возник другой вопрос. Поместил сервер на MIDAS в System Tray. При старте сервера запретил отображение формы
Application.ShowMainForm := false;
Ну а дальше стандартно - щелчки по иконке, popup и т.д... Все работает отменно, если заведомо стартовать сервер...
А вот когда сервак стартуется клиентом (клиентами) и когда при закрытии последнего клиента сервер также автоматически останавливается как и стартовал, вылетает ошибка:
Code 1400. Недопустимый дескриптор окна.

Догадываюсь, что при таком запуске, у удаленного модуля неверный HANDLE окна приложения, но как отладить, узнать где грабли не знаю... помоги-и-и-те!!!
Автор: mdid
Дата сообщения: 21.03.2010 12:24
cepbl
если вы хотите нормально воспроизводить видео и аудио то советовал бы раз и навсегда забыть про Tmediaplayer...читайте про DirectShow...она только на первый взгляд сложна
http://directshow.wonderu.com/ тут можно черпнуть основную инфу...
Автор: zakov
Дата сообщения: 21.03.2010 17:30

Цитата:
А вот когда сервак стартуется клиентом (клиентами) и когда при закрытии последнего клиента сервер также автоматически останавливается как и стартовал, вылетает ошибка:
Code 1400. Недопустимый дескриптор окна.

Неужели никто не может подсказать новичку?

Пока сделал так:
закоментил строчку Application.ShowMainForm := false;
именно из-за нее вылетала ошибка.
Бросил на форму таймер, который активируется при formOnCreate... В OnTimer:


Код: procedure Tform1.timeMainTimer(Sender: TObject);
begin
timeMain.Enabled:=false;
self.Hide;
end;
Автор: cepbl
Дата сообщения: 21.03.2010 19:57
mdid
Спасибо, но мне надо только один раз этим воспользоваться, если еще понадобится, тогда изучу тот материал. Проблему с форматом я кое-как решил.
Остался последний вопрос, в чем надо отображать документ rtf, чтобы картинки тоже отображались. Пробовал TRichEdit, так там текст выводится, а картинки нет.
Автор: Odysseos
Дата сообщения: 21.03.2010 21:43
cepbl

Остался последний вопрос, в чем надо отображать документ rtf, чтобы картинки тоже отображались. Пробовал TRichEdit, так там текст выводится, а картинки нет.

Вот мой наследник от TJvRichEdit c некоторым количеством дополнений - и, в частности, вставкой картинок.

Работа с картинками - через свойство TaggedText, которое "понимает" некое упрощенное подмножество HTML и форматирует текст в контроле в соответствии с тегами. Для вставки картинки - в TaggedText в нужном месте вставляется тег <img img_id>, где img_id - произвольный текст, соответствующий вставляемой картинке. После этого, надо создать обработчик события OnGetImage - в котором анализировать параметр Link (который как раз и есть img_id) и в зависимости от него передавать нужную картинку.

Внимание! В том же архиве - модифицированный JvRichEdit.pas, которым надо заменить оригинальный, без этого наследник не откомпилируется, потому как некоторые нужные методы не помечены, как виртуальные.
Автор: zakov
Дата сообщения: 22.03.2010 15:29
Народ! Просвятите! Что такое MidasSpeedFix.pas, для чего енто надо???
Автор: volser
Дата сообщения: 22.03.2010 16:50
zakov
Ссылка
Автор: zakov
Дата сообщения: 22.03.2010 17:34
volser
Спасибо за ссылку!
Как я понял модуль решает проблему тормозов ClientDataSet, особенной при больших объемах данных...
Автор: delover
Дата сообщения: 22.03.2010 21:46
У меня вопрос такой, про интерфейсы. Допустим я пишу:

Код:
var
StrL1 : TStringList;
procedure p1(outk :TComponent);
begin
if (outk <> nil) and (outk is TStringList) then begin
if TStringList(outk).name='StrL1' then ShowMessage('StrL1') else
if TStringList(outk).name='StrL2' then ShowMessage('StrL2');
end;
end;
var
v1: Variant;
begin
StrL1 := TStringList.Create;
try
VarCast(StrL1 as IUnknown, v1, varNull);
p1(v1);
finally
FreeAndNil(StrL1);
end; // try/finally
end;
Автор: greenpc
Дата сообщения: 23.03.2010 07:52
delover

Код: procedure Tf1.test;
var
StrL1 : TStringList;
procedure p1(outk :TComponent);
begin
if (outk <> nil) and (outk is TStringList) then begin
if TStringList(outk).name='StrL1' then ShowMessage('StrL1') else
if TStringList(outk).name='StrL2' then ShowMessage('StrL2');
end;
end;
begin
StrL1 := TStringList.Create;
try
p1(StrL1);
finally
FreeAndNil(StrL1);
end; // try/finally
end;
Автор: ShIvADeSt
Дата сообщения: 23.03.2010 08:19
cepbl

Цитата:
Остался последний вопрос, в чем надо отображать документ rtf, чтобы картинки тоже отображались. Пробовал TRichEdit, так там текст выводится, а картинки нет.

Я использовал в свое время RxRichEdit из RxLib и у меня нормально отображались картинки
Автор: Man_Without_Face
Дата сообщения: 23.03.2010 09:46
Доброго времени суток, такой вот вопрос: поставил Фаст репорты 4.8 (BDS 2006), стояли 3+. Для запуска проекта пришлось поменять:

implementation
uses
frxFormUtils на frxFileUtils
На машинах пользователей проект не запускается, выдает ошибку:
"Точка входа в процедуру @Frxformutils@frxErrorMsg$qqrx17System@AnSistring не найдена в библиотеке DLL frx10.bpl."
Пбэльку эту закидывал в корневой каталог программы и в System32, тоже самое. Можно ли это как то исправить, заранее спасибо.
Автор: SIgor33
Дата сообщения: 23.03.2010 10:45
Man_Without_Face
В дельфи при компиляции можно в ехешник включить все bpl и билдере скорее всего это есть
Автор: snike555
Дата сообщения: 23.03.2010 11:38
Man_Without_Face

SIgor33 хотел сказать что нужно убрать галочку Build with runtime packages которая находится в опциях проекта project -> options
Автор: psa1974
Дата сообщения: 23.03.2010 12:04
Man_Without_Face

Цитата:
"Точка входа в процедуру @Frxformutils@frxErrorMsg$qqrx17System@AnSistring не найдена в библиотеке DLL frx10.bpl."


Цитата:
Пбэльку эту закидывал в корневой каталог программы и в System32, тоже самое.

frx10.bpl ты подкинул то новую и программа ее замечательно находит... только... Смущает в этом сообщении ссылка на модуль @Frxformutils@.
Такое впечатление, что ты откомпилировал каким-то образом со старой frx10.bpl... Прога пытается найти в frx10.bpl точку входа в модуль frxFormUtils, которого в новой БПЛ уже нет и который ты заменил на frxFileUtils... вот и ругается... Поищи у себя на компе, где компилировал эту БПЛ-ку во всех возможных местах, сравни их...
Также проверь список рунтайм-пакетов, кот. не дожны включаться в экзешник и которые надо таскать с собой, и надо ли оно вообще (речь о списке под галочкой Build with runtime packages)...
Автор: Man_Without_Face
Дата сообщения: 23.03.2010 12:35
psa1974
Немного не так написал: у меня такая ошибка (как писал выше), если старые версии экзешников запускаю. А у пользователей: "Точка входа в процедуру @Frxpngimage@initialization$ggrv не найдена в библиотеке DLL frx10.bpl." (вроде так, по памяти писал). Проект не мой, я его доробатываю. Помимо экзешника еще два модуля есть: ERPC_Interface и ERP_Types (при компиляции создаются две бпэльки). Вот что в рантайм-пакетах: ERPC_Interface;ERP_Types;rtl;dbrtl;HCN696_D2006Demo
Может сюда наоборот добавить что нужно?


Добавлено:
Всем спасибо, вопрос решен.
Автор: emo
Дата сообщения: 23.03.2010 13:33
delover


Цитата:
У меня вопрос такой, про интерфейсы. Допустим я пишу:

....

нужен реальный объект-интерфейс? Иначе не работает. Встречали ли Вы множественный out и как с ним быть?


А причем тут интерфейсы? Почему не объявить параметр (outk:TStringList) без дальнейшего привидения типов? Или это просто какой-то упрощенный код? Что имеете ввиду под "множественный out"?

Автор: delover
Дата сообщения: 23.03.2010 13:33
greenpc
Ладно, я наверное неправильно выражаю свою мысль. Все одно придется делать для шрифтов иначе.

Добавлено:

Цитата:
Что имеете ввиду под "множественный out"?

Ну так может быть
Такой например:

Код: procedure T2.Func3(out CI1, CI2: set of TMyEnum);
Автор: Odysseos
Дата сообщения: 23.03.2010 14:45
delover

Запросто. Сколько угодно out-ов (равно как и var-ов, и const-ов) - в том и отличие возврата значений через var/out от возврата результата функции (который может быть только один, ессно).
Автор: delover
Дата сообщения: 23.03.2010 15:56
Odysseos
Правда, придётся признать "множественный out" несостоятельное выражение. Я спрашивал именно про то что Вы ответили. Спасибо.
Автор: Odysseos
Дата сообщения: 23.03.2010 16:13
delover

И out a, b, c: <тип|класс|интерфейс> тоже может быть - это, собственно, то же самое с точки зрения компилятора, что и out a: <тип|класс|интерфейс>; out b: <тип|класс|интерфейс>; out c: <тип|класс|интерфейс>, просто более короткая форма записи.
Автор: delover
Дата сообщения: 23.03.2010 21:37
Odysseos
Меня иногда смущает то обстоятельство, что до некоторого времени нельзя было писать следующим образом:

Код: ...
case Str1 of
'abc': ; 'de': ; 'fgh': ;
else Exit;
end;
Автор: Odysseos
Дата сообщения: 24.03.2010 02:02
delover

Подозреваю что <тип|класс|интерфейс> мне не одолеть.

Что ж не понятного-то? Имелось в виду, что можно написать out a, b, c: Integer, out a, b, c: TDateTime, out a, b, c: String (типы - точней, простые типы), out a, b, c: TObject, out a, b, c: TControl, даже out a, b, c: TClass (классы и классовые типы), out a, b, c: IUnknown, out a, b, c: IStream (интерфейсы).


Трудно укладывается в голове интерфейс без класса.

Представьте абстрактный класс, вообще без полей данных, только с методами, причем не реализованными, а объявленными как virtual; abstract;, и потом наследуйте от этого класса свои классы - причем, с возможностью множественного наследования - вот это и есть интерфейс.


И ещё труднее строка как тип.

А, страшусь спросить - что же тогда такое строка? Если это массив символов - статический, по указателю, динамический - но, тем не менее, массив символов - то что это, если не тип данных?

...Каша у Вас в голове, уж простите, сударь, по поводу данных и их типов
Автор: MSx213
Дата сообщения: 24.03.2010 13:52
ребята! как на delphi сделать так, чтобы конвертился русский текст вот так:

тестовая >>>> %F2%E5%F1%F2%EE%E2%E0%FF
т.е. например в поисковике вбиваешь русский текст, в браузере в адресной строке он так конвертится =)
Автор: AviDen
Дата сообщения: 24.03.2010 15:45
MSx213, готовой функции не скажу, но по факту эта строка из 16-ричных кодов указанной строки в кодировке utf8, с префиксом "%". Байты с кодом <128 включаются в результат непосредственно, без конвертации.

Т.е., напр., имеем строку "Тестовая", конвертим в UTF8, получаем последовательность байт "D0 A2 D0 B5 D1 81 D1 82 D0 BE D0 B2 D0 B0 D1 8F", каждый байт <$80 включаем в "сыром" ASCII-виде, все прочие - в 16-ричном с префиксом, т.е. %D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B0%D1%8F.

Добавлено:
upd: хотя в приведённом Вами примере строка кодировалась не в utf-8, а в codepage 866... Скорее всего, кодировка в адресной строке зависит от кодировки страницы...
upd2: в описанном мною алгоритме непонятно, как кодировать символ "%". хотя он в строке адреса недопустим, как я понял.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Clipper 5


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.