Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
привет всем. Интересует компонент или там исходники, чтобы были следующие возможности:
1) выбрать какой-то объект из списка и поставить его на холст (ну что-то типа нужно нарисовать схему)
2) положить на холст еще один компонент
3) нарисовать у них связи (ну например как сделано в редакторе SQL)
4) Если двигаешь объект (как угодно), то и все связи перерисовывались или там доп. изменялись связи между объектами, дабы обойти другие объекты.
Ну опять же, так, как сделано в SQL редакторе в Дельфе.
Есть у кого-нибудь наработки такие или кто-то знает, где их можно взять? Плиз.
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
Member
Статус: Не в сети Регистрация: 01.07.2006 Откуда: Челябинск
Забыл как объявлять и использовать глобальные переменные, ещё про них вычитал что их настоятельно не рекомендуется использовать.
Так вот хотелось бы узнать как их объявлять/использовать и почему не рекомендуется, если не их то как лучше реализовать передачу данных из одной процедуры в другую, причом вызов процедур происходит не из одной другую а независимо.
Все знают програму клиентскую UTM5 wintray,выдает инфу по трафику и цене позволяет вкл и выкл инет не заходя в билинг...
Но есть проблема она очень часто выключает инет (не сама канешно) сам провайдер перегружает сервак пытаясь экономить на трафике так как у него днем он платит за трафик а ночью нет, у меня безлимитка часто ставлю на закачку фильм днем и под вечер прихожуа утм выключен но VPN-соединение есть и там настроено автоматом при разрыве реконект короче.
так вот вопрос Можна както програмно на делфи сделать что программа сама включала тот утм в заданый интервал времени а еще лучше по умному чтоб програма отслеживала или в утм установлено соединение или нет.
если Да то нечего не делать а если нет тогда если возможен вариант програмно включить инет(в трее меню есть вкл инет ловить методом ловушки hook) или простой вариант просто перезагрузить ее в конфиге у нее стаит при загрузке включать инет.
Member
Статус: Не в сети Регистрация: 22.09.2007 Откуда: Отсюда
Тут у меня опять вопрос появился.
У меня есть TMemo, в котором записан текст. Мне надо по нажатию кнопки вставить в него строку. Притом, чтобы она вставилось в то место, где находится курсор. т.е. было:
Код:
1 2 3
Стало:
Код:
1 2 строка 3
Вся сложность заключается в определении номера поля в TMemo, куда наждо вставить строку.
Member
Статус: Не в сети Регистрация: 26.01.2006 Откуда: Одесса
Доброго времени суток!
Подскажите, как проверить, существует ли в данный момент (т.е. не был ли еще разрушен или завершен) объект класса поток? Дело в том, что необходимо при выходе из программы, завершить все дополнительно созданные потоки, для чего я использую функцию Win API TerminateThread(Thread1.Handle,0). Но, если потока уже не существует, то применение данной функции приводит к ошибке.
_________________ Съешь еще этих мягких французских булок, да выпей чаю.
WerW0LF 1. Вроде бы лучше установить обработчик исключений.
2. Я бы вообще не стал использовать объект TThread, т.к. есть обычные API для этого дела.
Вообще использование TerminateThread не очень правильное дело
Цитата:
TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination. For example, TerminateThread can result in the following problems: - If the target thread owns a critical section, the critical section will not be released. - If the target thread is allocating memory from the heap, the heap lock will not be released. - If the target thread is executing certain kernel32 calls when it is terminated, the kernel32 state for the thread's process could be inconsistent. - If the target thread is manipulating the global state of a shared DLL, the state of the DLL could be destroyed, affecting other users of the DLL.
Лучше наверное использовать объект Event для того, чтобы просигналить каждому потоку что надо завершиться и завершаться через ExitThread внутри каждого потока. Ну хотя и так всё работает, но всё же...
Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
Люди, есть мини проблема. Нужно получить в любом методе объекта получить название этого метода. НУ пример - Button1Click.
Нашел решение, но оно правда не совсем подходит. Нужно это сделать минимальный количеством кода и минимальной кровью. Стало быть - как сделать?
Вот тот пример, который нашел, но который не подходит:
Код:
procedure TForm1.Button3Click(Sender: TObject); var P: record case Integer of 1: (E: TNotifyEvent); 2: (P: Pointer); end; begin P.E := Button1.OnClick; Panel1.Caption := 'Обработчик события = ' + MethodName(P.P); ShowMessage(Format('%p', [P.P])); end;
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
Максим В чем проблема непонятно) Поглядел MethodName итак содержит всего около 30-40 строк ассемблерного кода. Разве что сократить запись до вида что-то типа
Код:
ShowMessage(MethodName(@(Sender as TButton).OnClick));
но сути это не меняет Вообще-то непонятно, что хочется:wink:
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения