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

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


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

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

Выпуск № 577
от 30.08.2006, 11:35

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


Вопрос № 53113: Сложилась такая ситуация, вообщем есть программа которую необходимо закрывать и запусакть каждые 30 минут. Я уже написал отсчет времени и запуск программы через определенный интерввал времени. Осталось только закрыть программу. Но посколько программа...
Вопрос № 53121: Здравствуйте Подскажите как написать процедуру которая после слова ставила пробел и вставляла слова "тел", и ее использывание, просто есть тесктовые файла, там каждая фамилия начинаеться с новой строки...
Вопрос № 53122: Использую КOL, и вот теперь удмаю как можно использовать его вместе с VCL, где читал,что можно. Стоит D7. Помогите если знаете чем....
Вопрос № 53169: Привет, коллеги. Присоветуйте компонент - нужно подобие StringGrid'а, но чтобы можно было в заголовке в две строки писать. Вообще хотелось бы подобие DBGridEh, но без привязки к Dataset. Чтобы можно было напрямую в Grid писать, без таблицы. Спасибо.<...
Вопрос № 53181: Здравствуйте. Хотелось бы узнать, как можно добавить свой пункт в контекстное меню проводника, поискал в нете ничего путного не нашел. Если не трудно с примером. ..
Вопрос № 53189: Добрый день, уважаемые! КАк отследить, попадает ли мышь в регион... Проблема такая, на канве форме нарисованы прямоугольник, эллипс и много угольник. ТАк вот, нужно сделать так: если мышь попадает в прямоугольник, то прямоугольник закрашивает...

Вопрос № 53.113
Сложилась такая ситуация, вообщем есть программа которую необходимо закрывать и запусакть каждые 30 минут. Я уже написал отсчет времени и запуск программы через определенный интерввал времени. Осталось только закрыть программу. Но посколько программа все время находится в трее то через FindWindow не получиться сделать.
Я знаю имя этой программы и имя процесса (IpmSrv.exe), так вот как мне выключать эту программу снятием процесса,

Пожалуйста помогите, срочно нужно.
Отправлен: 24.08.2006, 13:09
Вопрос задал: Пономарев Евгений Виктороич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: sir henry
Здравствуйте, Пономарев Евгений Виктороич!
Процесс можно закрыть либо с помощью универсальной функции CloseHandle(), либо с помощью функции TerminateProcess(). Параметром и там и там служит хэндл процесса. Кроме того второй функции нужно задать код выхода, который сообщает ОС причину выхода. Вторая функция предпочтительнее, т.к. она завершает все связанные с процессом потоки, если у Вас программа многопоточная.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 24.08.2006, 13:34

Отвечает: Coupler
Здравствуйте, Пономарев Евгений Виктороич!
Функция для закрытия - в приложении. Так можно убить прогу, которая не запрещает открытие своего процесса с флагом PROCESS_TERMINATE. Допишите в uses модуль tlhelp32!
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 24.08.2006, 14:07


Вопрос № 53.121
Здравствуйте
Подскажите как написать процедуру которая после слова ставила пробел и вставляла слова "тел",
и ее использывание, просто есть тесктовые файла, там каждая фамилия начинаеться с новой строки
Отправлен: 24.08.2006, 14:25
Вопрос задал: Сергей Викторович (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Taha
Здравствуйте, Сергей Викторович!

FIO:=trim(FIO)+' тел.'

Если с чтением из файла, то

procedure Obr(fileName:string);
var Tf:TextFile;
A:array of string;
i:integer;
begin
i:=0;
Setlength(A,i);
AssignFile(Tf,FileName);
reset(Tf);
while not(eof(Tf)) do begin
inc(i);
Setlength(A,i);
readln(Tf,A[i]);
A[i]:=trim(A[i])+' тел.';
end;
CloseFile(TF)
end;

---------
Даже если тебя съели, у тебя есть два выхода
Ответ отправила: Taha (статус: 1-ый класс)
Ответ отправлен: 24.08.2006, 15:28


Вопрос № 53.122
Использую КOL, и вот теперь удмаю как можно использовать его вместе с VCL, где читал,что можно. Стоит D7. Помогите если знаете чем.
Отправлен: 24.08.2006, 14:32
Вопрос задал: CJ (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, CJ!
Не надо его вместе с VCL использовать, т.к. смысл в использовании KOL полностью пропадет. Вместе с KOL идет специальная библиотека зеркальных классов для визуального проектирования, используйте ее.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 25.08.2006, 07:13


Вопрос № 53.169
Привет, коллеги. Присоветуйте компонент - нужно подобие StringGrid'а, но чтобы можно было в заголовке в две строки писать. Вообще хотелось бы подобие DBGridEh, но без привязки к Dataset. Чтобы можно было напрямую в Grid писать, без таблицы. Спасибо.
P. S. Скоро кончится лето...

Приложение:

Отправлен: 24.08.2006, 21:52
Вопрос задал: Zлоумышленник (статус: 9-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Zлоумышленник!
http://www.torry.net/pages.php?id=114
Выбирайте, к чему душа лежит. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 25.08.2006, 07:19

Отвечает: Taha
Здравствуйте, Zлоумышленник!
а вас не устроит такой вариант:
StrinGrid1.FixedRows=2 ;
?
---------
Даже если тебя съели, у тебя есть два выхода
Ответ отправила: Taha (статус: 1-ый класс)
Ответ отправлен: 25.08.2006, 12:46


Вопрос № 53.181
Здравствуйте.
Хотелось бы узнать, как можно добавить свой пункт в контекстное меню проводника, поискал в нете ничего путного не нашел. Если не трудно с примером.
Отправлен: 24.08.2006, 23:42
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Mo-skin
Здравствуйте, Dimon007!
Пример ContMenu (поставляется с Delphi в папке DEMOSACTIVEX SHELLEXT). В этом примере для объектов типа "проект Delphi" добавляется возможность запуска компилятора в командной строке. При вызове метода QueryContextMenu нужный пункт добавляется с помощью функции InsertMenu.

function QueryContextMenu (Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT) : HResult; stdcall;
Добавляет пункт к системному контекстному меню

function InvokeCommand(var- Ipici: TCMInvokeCommandlnfo): HResult; stdcall;
Осуществляет вызов обработчика

function GetCommandString (idCmd, uType: UINT; pwReserved: POINT; PszName: LPSTR; cchMax: UINT) : HResult; stdcall;
Возвращает описание добавленного пункта меню (подсказку или полное название)
Параметры метода QueryContextMenu означают следующее:

Menu — дескриптор системного меню;
IndexMenu — позиция в меню, в которую следует вставить пункт (пункты);
IdCmdFirst,IdCmdLast — диапазон допустимых значений для идентификаторов вставляемых пунктов меню;
uFlags — набор флагов, главные из которых означают:
CMF_NORMAL — обычный вызов контекстного меню, пункты могут быть добавлены. Значение этого флага нулевое, проверять его следует, очистив все биты в параметре uFlags, кроме пяти младших (маска $1F);
CMF_DEFAULTONLY — устанавливается, если пользователь задал с объектом действие по умолчанию (например, двойной щелчок). В этом случае пункты меню добавляться не должны;
CMF_VERBSONLY — устанавливается, если меню создается для ярлыка объекта, а не для самого объекта. В этом случае многие пункты меню создаваться не должны;
CMF_EXPLORE — устанавливается, если меню создается для объекта, находящегося на левой панели Проводника.

//[Иллюстрированный самоучитель по Delphi для профессионалов ]

Приложение:

---------
Чем больше женщину мы меньше, тем больше меньше мы ее!

Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 25.08.2006, 00:15


Вопрос № 53.189
Добрый день, уважаемые!
КАк отследить, попадает ли мышь в регион...
Проблема такая, на канве форме нарисованы прямоугольник, эллипс и много угольник. ТАк вот, нужно сделать так: если мышь попадает в прямоугольник, то прямоугольник закрашивается зеленым, если в эллипс- красным, в многоугольник- синим.

С уважением и надеждой, Гном..
Отправлен: 25.08.2006, 06:14
Вопрос задал: Gnom (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: sir henry
Здравствуйте, Gnom!
У формы есть событие OnMouseMove, в качестве параметров которого есть и координаты мыши (X, Y). Внесите в этот метод проверку, попадают ли эти координаты в заданый прямоугольник и если да, то тут же его и раскрашивайте.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 25.08.2006, 07:25

Отвечает: Mexes
Здравствуйте, Gnom!
Можно воспользоваться функциями WinAPI. Находится ли точка в прямоугольнике можно функцией PtInRect(const Rect: TRect; const P: TPoint): Boolean.
Для более сложных фигур есть функция PtInRegion(RGN:HRGN;X,Y:Integer):BOOL. Первый параметр - дескриптор региона. Создать эллиптический регион можно функцией CreateEllipticRgn(p1,p2,p3,p4:Integer): HRGN, в параметрах которой надо указать координаты противоположных углов прямоугольника, в который будет вписан эллипс. Для многоугольника надо воспользоваться функцией CreatePolygonRgn(const Points;Count,FillMode:Integer):HRGN. Первый параметр - массив точек TPoint, второй - количество этих точек. Третий парметр должен быть равен ALTERNATE или WINDING. Он будет иметь значение, если многоугольник имеет самопересечения. В первом случае можно получить "дырявый" многоугольник, во втором многоугольник заполняется полностью (можно посмотреть пример: http://club.shelek.com/print.php?id=98).
К слову, способ с PtInRegion можно применять вместо PtInRect, создав прямоугольный регион функцией CreateRectRgn.
После работы с созданными регионами их следует удалить функцией DeleteObject. Успешно ли созданы регионы можно выяснить, сравнив результат функции сравнения с нулем (если 0 - регион не создан).

Думаю, с координатами вершин Вы разберетсь, они должны соответствовать координатам на клиентской области компонента, отлавливающего координаты мыши (OnMouseDown, OnMouseMove и т. д.).
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 25.08.2006, 11:19

Отвечает: Melamed
Здравствуйте, Gnom!
В допольнении к предыдущему ответу, посоветую для каждой фигуры создать свой регион с помошью таких API функций, как CreateRectRgn, CreatePoligonRgn, CreateEllipticRgn и другиx, в зависимости от фигур. Координаты  080; размеры регионов должны соответствовать размерам и месторасположению фигур в окне. С помошью API функции PtInRegion определяешь, находится точка внутри региона или за его пр& #1077;делами.
Ответ отправил: Melamed (статус: 3-ий класс)
Ответ отправлен: 25.08.2006, 11:20


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное