Вопрос № 101541: Здравствуйте Уважаемые!После ответа мне на вопрос № 101217 у меня возник следующий вопрос.Если я не размещаю объекта StringGrid на форме,а создаю его из кода:
st:=TStringGrid.Create(Self); //создаем объект
Как мне вызвать его события ,ну нап...Вопрос № 101550: Доброго времени суток уважаемые эксперты!
Как можно, используя Delphi открыть стандартный редактор реестра(regedit) и перейти в редакторе реестра к нужному ключу? Заранее спасибо!
..Вопрос № 101577: Есть 2 программы. Одна всегда запущена и невидима(№1), другая визуальная(№2). Нужно чтобы прога №1 проверяла запущена ли прога №2 и если нет, то запускала ее. Можно какнибудь сделать такое общение через TEvent ?...
Вопрос № 101.541
Здравствуйте Уважаемые!После ответа мне на вопрос № 101217 у меня возник следующий вопрос.Если я не размещаю объекта StringGrid на форме,а создаю его из кода:
st:=TStringGrid.Create(Self); //создаем объект
Как мне вызвать его события ,ну например DrawCell?
Отвечает: Coupler
Подобный вопрос уже задавался (см. приложение) - надо самому создать процедуру, а потом назначить ее обработчиком события OnDrawCell.
Приложение:
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 10.09.2007, 17:27 Оценка за ответ: 5 Комментарий оценки: Спасибо я подписывался гораздо позже № 35180 и не читал поэтому его
Отвечает: Mishell
Здравствуйте, Зотов Геннадий Александрович!
создайте свою процедуру отрисовки ячеек и после создания компонента назначьте ее на соотв. событие - см. пример в приложении
Приложение:
Ответ отправил: Mishell (статус: 6-ой класс)
Ответ отправлен: 10.09.2007, 17:31 Оценка за ответ: 5 Комментарий оценки: Спасибо за быстрый ответ
Отвечает: Alexey Bednov
Здравствуйте, Зотов Геннадий Александрович!
Может быть, имелось ввиду не "вызвать событие", а обработка события?
Необходимо в программе создать процедуру
procedure .StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
А после создания объекта назначить обработчик:
ST.OnDrawCell := StringGrid1DrawCell;
Ответ отправил: Alexey Bednov (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 10:15 Оценка за ответ: 3 Комментарий оценки: А чем твой ответ отличается от предидущих,только названием процедуры не
MyGridDrawCell а StringGrid1DrawCell или ...
Вопрос № 101.550
Доброго времени суток уважаемые эксперты!
Как можно, используя Delphi открыть стандартный редактор реестра(regedit) и перейти в редакторе реестра к нужному ключу? Заранее спасибо!
Отправлен: 10.09.2007, 18:10
Вопрос задал: Falameezar (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss
Здравствуйте, Falameezar!
В приложении приведена функция JumpToKey (взята из DRKB). Для работы функции, требуется прописать в uses модуль ShellAPI.
Пример использования функции: JumpToKey(Edit1.Text);
(в Edit следует прописывать полный путь к ключу, так, как это отображается в Regedit. Например: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrent VersionRun).
Принцип работы функции такой:
1. Находим Regedit (если не найден, то запускаем и находим).
2. Сворачиваем все ветки реестра (30 раз повторяем нажатие кнопки влево).
3. Отправляем по буквам весь путь, указанный в параметре Key. Вместо символа '' отправляем нажатие кнопки вправо.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ---- Ответ отправлен: 10.09.2007, 19:02 Оценка за ответ: 5
Отвечает: Coupler
Здравствуйте, Falameezar!
Regedit хранит ветвь реестра, к которой обращались в последний раз, в HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionAppletsRegedit (параметр LastKey). Можно самим записать в этот параметр нужное значение (оно выглядит как 'Мой компьютер'+нужный ключ, запустить regedit, и он откроется на нужном ключе. Реализация в приложении (в edit1 - нужный ключ реестра, например HKEY_CURRENT_USERSoftwareAlcohol Soft).
Приложение:
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 11.09.2007, 12:29
Вопрос № 101.577
Есть 2 программы. Одна всегда запущена и невидима(№1), другая визуальная(№2). Нужно чтобы прога №1 проверяла запущена ли прога №2 и если нет, то запускала ее. Можно какнибудь сделать такое общение через TEvent ?
Отвечает: din
Здравствуйте, Зощенко Алексей!
Во второй программе при запуске создаем семафор CreateSemaphore(nil, 0, 1, 'Program2');
Впервой программе тоже самое и тогда, когда хотим проверить работает вторая или нет, например через таймер. CreateSemaphore(nil, 0, 1, 'Program2'); if GetLastError = ERROR_ALREADY_EXISTS then // здесь действия, которые нужно сделать при уже запущенной программе else // программа не запущена, запускаем
Можно по другому, считывать список процессов и искать в нем имя нашей программы, как получить список процессов написано в ответе на вопрос 73980.
Запуск программы можно сделать несколькими методами, не буду заниматься плагиатом, вот здесь то что Вам нужно.
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Специалист)
Ответ отправлен: 11.09.2007, 04:56 Оценка за ответ: 4