Вопрос № 142229: Здравствуйте, эксперты! Во время выполнения программы загружаю в TImage расположенный на форме картинку jpeg. Как сделать так, чтобы Timage и форма подстраивались под размер картинки?...Вопрос № 142247: Добрый вечер. Мне нужно удалить из реестра один ключ. Он точно там есть, но у меня не получается его удалить. Подскажите, что не так. Также результат Reg.KeyExists('Mes') все время дает значение false....Вопрос № 142255: Уважаемые эксперты. У меня к вам следующий вопрос. Я необходимо написать программу, которая, при нажатии кнопки, будет имитировать нажатия кнопки клавиатуры либо мыши, с частотой заданной в настройках. То есть некое подобие автокликера.Если не тру...Вопрос № 142261: Решили написать с другом систему в которой существует сервер который принимает и обрабатывает текстовые сообщ
ения от клиентов. Реализация писалась через Indy компонентыюю IdTCPServer и IdTCPClient. В процессе написания столкнулись со следующей пробл...
Вопрос № 142.229
Здравствуйте, эксперты! Во время выполнения программы загружаю в TImage расположенный на форме картинку jpeg. Как сделать так, чтобы Timage и форма подстраивались под размер картинки?
Отвечает: Troyan
Здравствуйте, Марков Александр Сергеевич! Простейшим вариантом будет установка свойства AutoSize вашего TImage и формы в положение True. Строки в приложении делают именно это
Приложение:
--------- Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!
Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 25.08.2008, 19:30 Оценка за ответ: 5 Комментарий оценки: А я вот сразу не додумался:((
Отвечает: -=Dr. Штопор=-
Здравствуйте, Марков Александр Сергеевич! Для работы с JPEG нужно подключить модуль jpeg (добавить его в раздел uses). Следующим шагом нужно задекларировать переменную типа TJpegImage. Работа с TJpegImage происходит по следующему сценарию: 1. Создание J := TJpegImage.Create; 2. Открытие файла J.LoadFromFile(filename: string); 3. Созданный с помощью bm := TBitMap.Create; битмап сзязываем с TJpegImage bm.Assign(JpegIm); 4. По окончании работы уничтожаем TJpegImage
методом Destroy
Вот, наверное, и всё, что нужно знать о JPEG (подробнее - в файле справки )
Теперь о том, как подогнать: У компонента TImage есть свойство AutoSize, если оно равно True, размер подгоняется под изображение. Чтобы подогнать форму, можно сделать так:
Данный метод гибче, чем Form1.AutoSize:=true, так как можно оставить поле сбоку от изображения, сделав, например, так:
Код:
Form1.Width:=Form1.Image1.Width+40;
Желаю удачи!
--------- Tantum possumus, quantum scimus
Ответ отправил: -=Dr. Штопор=- (статус: Студент)
Ответ отправлен: 25.08.2008, 19:47 Оценка за ответ: 5 Комментарий оценки: Спасибо:))
Вопрос № 142.247
Добрый вечер. Мне нужно удалить из реестра один ключ. Он точно там есть, но у меня не получается его удалить. Подскажите, что не так. Также результат Reg.KeyExists('Mes') все время дает значение false.
Приложение:
Отправлен: 25.08.2008, 22:10
Вопрос задал: Vassea (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PavelGM
Здравствуйте, Vassea!
Вы хотите удалить ключ или раздел реестра? - Если ключ, то надо использовать DeleteValue, а не DeleteKey. Поэтому и KeyExists возвращает ложь, так как она тоже для разделов. - Если нужно удалить раздел, то надо открывать родительский раздел OpenKey('Software'), а потом DeleteKey('Builder')
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 26.08.2008, 10:36 Оценка за ответ: 5 Комментарий оценки: Спасибо. Теперь понятно. Буду знать.
Вопрос № 142.255
Уважаемые эксперты. У меня к вам следующий вопрос. Я необходимо написать программу, которая, при нажатии кнопки, будет имитировать нажатия кнопки клавиатуры либо мыши, с частотой заданной в настройках. То есть некое подобие автокликера.Если не трудно, не могли бы вы написать укороченную версию сей программы, либо элемент кода, который будет отвечать за симуляцию нажатия кнопок клавиатуры, левой кнопки мыши, правой кнопки мыши. Заранее благодарен.
Отвечает: Troyan
Здравствуйте, Гардукевич Роман Эдуардович! Для совершения нужных вам действий нужно этому объекту отправить сообщение. Вам понадобятся лишь три константы сообщений: WM_Char, говорящее объекту о "нажатии клавиши" и сочетание WM_LButtonDown и WM_LButtonUp (они в сочетании дают клик мыши - сначала мышь нажимается, потом ее отпускают). Если объект, на который вы хотите отправить сообщение, находится в вашей программе (вы можете напрямую к нему обратиться), то удобнее использовать метод Perform,
например: Button2.Perform(WM_LButtonDown,0,0); Button2.Perform(WM_LButtonUp,0,0); Эта запись имитирует "клик" на кнопке Button2. Edit1.Perform(WM_Char,Ord('!'),0); Эта запись отправляет полю Edit1 символ "!". Если же объект находится вне вашей досягаемости, то требуется сначала найти его. Как искать эти объекты и отправлять им сообщение хорошо написано на сайте DelphiWorld, ссылка на статью в приложении
Приложение:
--------- Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!
Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 26.08.2008, 10:42 Оценка за ответ: 5 Комментарий оценки: Спасибо!Ответ достаточно полный с ссылкой на дополнительный источник и решает именно поставленную проблему.
Отвечает: PavelGM
Здравствуйте, Гардукевич Роман Эдуардович!
Вам помогут функции keybd_event и mouse_event. При такой общей постановке задачи сложно предложить какой-то конкретный код. Частные примеры как просили:
Для регулировки частоты
используйте таймер, вставив указанные функции в его обработчик OnTimer.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 26.08.2008, 10:45 Оценка за ответ: 4 Комментарий оценки: Спасибо.Но было бы неплохо, если бы Вы написали объяснения значения по параметрам или ссылку на источник.Большое спасибо!
Вопрос № 142.261
Решили написать с другом систему в которой существует сервер который принимает и обрабатывает текстовые сообщения от клиентов. Реализация писалась через Indy компонентыюю IdTCPServer и IdTCPClient. В процессе написания столкнулись со следующей проблемой: программа идеально работала в локальной сети и в случаях если сервер не был спрятан за роутером, в случаях с роутером решили использовать параметр BoundIP в параметрах IdTCPClient, но при это начала вылетать 10049 ошибка при попытке соединения. Собственно вопрос,
в чем может быть проблема и как иначе можно реализовать соединение двух компьютеров находящихся за роутерами?
В приложении Button2 отвечает за отправку сообщений от клиента. Button1 за ввод параметров соединения из трех полей.
Приложение:
Отправлен: 26.08.2008, 00:54
Вопрос задал: Lyoshaha (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: monah
Здравствуйте, Lyoshaha! При подобной задаче я использовал компоненты ClientSocket и ServerSocket. Они отключены по умолчанию, поэтому необходимо и установить. Для делфи 7 они находятся в папке Lib директории Делфи. файл dclSocket7, если не ошибаюсь.
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 26.08.2008, 18:49 Оценка за ответ: 4 Комментарий оценки: Хороша бы ещё хоть чуть чуть реализации, а так безусловно спасибо :)