Вопрос № 39264: Здравствуйте уважаемые эксперты!
Не могу отловить нажатие Alt+F4, необходимо, чтобы программа не закрывалась по Alt+F4. Использовал такой код: (см прил.), нашел в одном из FAQ'ов, но он не работает :(. Вариант OnCloseQuery => CanClose:=False н...Вопрос № 39277: Уважаемые эксперты,
Как присоединить файл с кодеком к проекту, например, присоединить кодек. Или Разные DLL??...Вопрос № 39280: Добрый день! Можно ли записывать string переменные в файл в интернете и с помощью какой функции можно закачать файл на сайт? Заранеее спасибо!
...Вопрос № 39282: Здраствуйте.
Подскажите, что не правильно в этом куске кода (в приложении)?
Пытаюсь подставить эту процедуру в обработчик OnKeyPress Edit'a, вылетает ошибка: '('expected but ')' found. (Чёт я не пойму чё за error, откуда он взялся?)
Как э...Вопрос № 39304: Здравствуйте, уважаемые эксперты!
Мне нужно заполнить определенный участок Canvas при помощи FloodFill Как пользоваться этой функцией: procedure TCanvas.FloodFill(X, Y: Integer; Color: TColor;
FillStyle: TFillStyle); x,y - внутренняя область...Вопрос № 39311: Доброго времени суток.
Ув. эксперты опять прошу у вас помощи.
Закачал с нета компонент ComboBoxEx
Но вот как его установит, не знаю.
В компоненте есть такие файлы:
ComboBoxX.dcr
ComboBoxX.dcu
ComboBoxX.pas
FlatComboBox...Вопрос № 39326: Доброго здоровья всем!
Как отследить открытие ЛЮБЫМ ПРИЛОЖЕНИЕМ диалога Open(Save).
Хочу пристроить рядом свою форму, как это сделано в 'ImageFox' (примочка к ACDSee 4.0).
Извините, если подобный вопрос уже задавался. Не нашёл...
Спас...
Вопрос № 39.264
Здравствуйте уважаемые эксперты!
Не могу отловить нажатие Alt+F4, необходимо, чтобы программа не закрывалась по Alt+F4. Использовал такой код: (см прил.), нашел в одном из FAQ'ов, но он не работает :(. Вариант OnCloseQuery => CanClose:=False не подходит, т.к. при завершении винды программа закрывается. Что посоветуете?
Приложение:
Отправлен: 03.04.2006, 10:49
Вопрос задал: AnD1 (статус: 4-ый класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Jadd
Здравствуйте, And1!
Нужно обработать сообщение WM_QUERYENDSESSION. В дельфи нужно написать обработчик. Выглядеть это будет примерно так:
procedure TMyClass.WMQueryEndSession(var Message: TMessage);
begin
//your code here
end;
Успехов.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 03.04.2006, 11:17 Оценка за ответ: 5
Отвечает: Евгения
Здравствуйте, And1!
посмотрите еще ответ на вопрос 37894
там несколько вариантов - может что-то подойдет.
Ответ отправила: Евгения (статус: 2-ой класс)
Ответ отправлен: 03.04.2006, 11:18 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, And1!
Пиши обработчик на событие OnClose:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
end;
Еще можеш обработать сообщение WM_QUIT
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 2-ой класс)
Ответ отправлен: 03.04.2006, 11:20 Оценка за ответ: 5
Отвечает: Артём Шегеда
Здравствуйте, And1!
Для того, чтобы приложение закрывалось по завершения сеанса Windows, почитай это:
http://rusfaq.ru/?Step=info&Action=Question&ID=39097
А вообще, отключить Alt+F4 можно, перехватив обработчик сообщения WM_SYSCOMMAND и отфильтровав по команде SC_CLOSE. Подробнее - в справке по Win32 API, раздел "Keyboard Accelerators"
Ответ отправил: Артём Шегеда (статус: 4-ый класс)
Ответ отправлен: 03.04.2006, 11:32 Оценка за ответ: 5
Отвечает: Злоумышленник
Здравствуйте, And1!
Твой код не будет работать, если ты с-во формы KeyPreview не поставил в true (в инспекторе объектов можно это сделать). И я бы вместо MessageBeep(0); Key := 0;
поставил бы просто abort
Ответ отправил: Злоумышленник (статус: 5-ый класс)
Ответ отправлен: 03.04.2006, 21:21
Вопрос № 39.277
Уважаемые эксперты,
Как присоединить файл с кодеком к проекту, например, присоединить кодек. Или Разные DLL??
Отправлен: 03.04.2006, 15:15
Вопрос задал: ErBep (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Артём Шегеда
Элементарно, Ватсон!
Создаёшь файл в каталоге проекта с именем 1.rc, пишешь в нём приблизительно следующее:
FILE1 EXECUTABLE codec.ax
Затем добавляешь этот ресурсный файл к проекту. Проследи, чтобы в каталоге проекта лежал файл codec.ax
В тексте программы пишешь кусок из приложения. После выполнения этого кода у тебя в каталоге приложения появится файл codec.ax
Приложение:
Ответ отправил: Артём Шегеда (статус: 4-ый класс)
Ответ отправлен: 03.04.2006, 16:11
Отвечает: Delphin
Здравствуйте, ErBep!
Я так понял тебе нужно нести вместе с вашим проектом какие0либо файлы?
Сделать это можно с помощью ресурсов. Самый легкий способ - это найти в каталоге с программой файл .res и открыть его в редакторе ресурсов и добавить то что тебе нужно. Мой выбор - Restorator.
Второй способ это создать файл xxx.rc добавить в него слудующие строки:
ИМЯ ТИП ПУТЬ_К_ФАЙЛУ
Например:
codec1 CODEC file.ax
Компилируеш его brcc.exe.
В проект добавляеш:
{$R xxx.res}
Там уже есть такое рядом с глобальным VAR. Тока вместо xxx.res имя_проекта.res
Приложение:
--------- Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Delphin (статус: Студент)
Ответ отправлен: 03.04.2006, 18:45
Вопрос № 39.280
Добрый день! Можно ли записывать string переменные в файл в интернете и с помощью какой функции можно закачать файл на сайт? Заранеее спасибо!
Отвечает: Лучников Ю.В.
Здравствуйте, Грицай Алексей Юрьевич!
Загружать файлы на сайт можно через протокол FTP.
Для работы с FTP в Делфи есть копмонент TIdFTP с вкладки Indy Clients.
Исходные коды примеров по работе с компонентами Indy вы можете скачать тут, раздел Downloads.
Запись string в txt-файл, расположенный на сервере можно осуществить так:
Закачиваете нужный файл себе в Memo, добавляете в Memo нужные строки, сохраняете содержимое Memo методом Memo1.Lines.SaveToFile(), полученный файл закачиваете снова на сервер вышеупомянутым способом.
Успехов!
Ответ отправил: Лучников Ю.В. (статус: *Администратор) Россия, Киров WWW:Чат Кировской молодежи ICQ: 176308580 ---- Ответ отправлен: 03.04.2006, 17:58 Оценка за ответ: 5
Отвечает: Delphin
Смотря через что ты хочеш выгружать файлы. Большинство хостеров предоставляют доступ к файлам через FTP. Для этого можно легко использовать компонент Indy Clients -> TIdFTP.
Так же можно написать скрипт на PHP или CGI который будет изменять переданный параметром файл на переданное содержимое. Тогда можно использовать тоже компоненты Indy, но для работы с http серверами.
И еще, для того чтобы что-то выгрузить на сервер его нужно перед этим сохранить. Например в типизированный файл. (var F: TextFile )
--------- Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Delphin (статус: Студент)
Ответ отправлен: 03.04.2006, 18:36
Отвечает: AnD1
Здравствуйте, Грицай Алексей Юрьевич!
Проще сохранить строковую переменную в файл т.о.:
var
f: TextFile;
s: string;
...
AssignFile (f, 'ИМЯ_ФАЙЛА');
Reset (f); {открываем файл для записи, уничтожаея его содержимое, или можно так: Append (f) - дописать в конец файла}
Writeln (s); {записываем стр. перем.}
CloseFile (f);
А на вторую часть вопроса, Вам уже ответели :), хотя что-нибудь из компонентов еще можно посмотреть здесь - http://www.torry.net/pages.php?s=90
Ответ отправил: AnD1 (статус: 4-ый класс)
Ответ отправлен: 03.04.2006, 18:39 Оценка за ответ: 5
Вопрос № 39.282
Здраствуйте.
Подскажите, что не правильно в этом куске кода (в приложении)?
Пытаюсь подставить эту процедуру в обработчик OnKeyPress Edit'a, вылетает ошибка: '('expected but ')' found. (Чёт я не пойму чё за error, откуда он взялся?)
Как это вылечить?
Спасибо.:)
Приложение:
Отправлен: 03.04.2006, 17:02
Вопрос задал: Yarking (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Yarking!
Ошибка у Вас здесь и должна быть. Когда процедура является методом формы, то Text - это второе наименование свойства Caption формы (опеределено глубоко в VCL). А когда это отдельная процедура, то компилятор не может найти в списке доступных переменных Text, и считает этот идентификатор каким-то типом, приведение к которому не закончено.
Исправление - вместо Text подставить Edit1.Text (для вашего случая). Но вариантов много
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 2-ой класс)
Ответ отправлен: 03.04.2006, 17:10 Оценка за ответ: 5
Отвечает: Проходящий Мимо
Здравствуйте, Yarking!
Процедура TForm3.Edit1KeyPress получает значение text из поля объекта TControl, который есть предком ТEdit. Поэтому, нужно в процедуру DecimalSeparatorKeyPress передавать значение key и text самому, например так:
procedure DecimalSeparatorKeyPress(Text: string; var Key: Char);
begin
if ((Key = DecimalSeparator) or
(Key in [',', '.'])) and
(Pos(DecimalSeparator, Text) <> 0)
then Key := #0;
if not (Key in ['0'..'9', DecimalSeparator, #8])
then Key := #0;
end;
Здесь Key передается в качестве параметра внешней процедурой
--------- Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 1-ый класс)
Ответ отправлен: 04.04.2006, 09:29
Вопрос № 39.304
Здравствуйте, уважаемые эксперты!
Мне нужно заполнить определенный участок Canvas при помощи FloodFill Как пользоваться этой функцией: procedure TCanvas.FloodFill(X, Y: Integer; Color: TColor;
FillStyle: TFillStyle); x,y - внутренняя область закрашиваемой поверхности Color -- цвеи границы. а как задать FillStyle? как мне изсестно там указывается цвет и метод закраски.
Спасибо.
Отвечает: Евгения
Здравствуйте, Граур Василий Олегович!
procedure FloodFill (X, Y: Integer; Color: TColor; FillStyle: Tf illStyle) ; TFillstyle="(fsSurface," fsBorder);
Производит заливку области текущей кистью. Процесс начинается с точки (X, Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color. Работает примерно как заливка в Paint.
например FloodFill(ClientWidth,ClientHeight,clWhite,fsSurface);
Ответ отправила: Евгения (статус: 2-ой класс)
Ответ отправлен: 03.04.2006, 22:36
Отвечает: Полховский Александр Владимирович
Здравствуйте, Граур Василий Олегович!
Добавлю, что закраска идёт с использованием палитры, установленной для данной канвы (Brush) (Fills an area of the canvas using the current brush). А уже изменяя саму палитру, можно выбрать цвет и стиль заливки (свойствами Bush.Color и Brush.Style). Насколько мне известно, нельзя сделать свой стиль заливки (по крайней мере при использовании процедуры FloodFill), только выбрать из существующих.
Дополню предыдущий ответ: FloodFill(5, 5, clWhite, fsBorder) - будет заливать область, ограниченную белым цветом, начиная с точки. с координатами (5,5). FloodFill(5, 5, clWhite, fsSurface) - будет заливать область, имеющую белый цвет, начиная с точки. с координатами (5,5). (Будьте внимательны, так как если пиксель (5,5) не будет белым, то есть clWhite, то закраска не будет произведена. Для этого лучше сначала взять значение цвета точки, с которой начинается закраска, и уже потом поставить его в параметры).
Удачи.
--------- Спасём нашу хрупкую планету !
Доброго времени суток.
Ув. эксперты опять прошу у вас помощи.
Закачал с нета компонент ComboBoxEx
Но вот как его установит, не знаю.
В компоненте есть такие файлы:
ComboBoxX.dcr
ComboBoxX.dcu
ComboBoxX.pas
FlatComboBoxX.dcu
FlatComboBoxX.pas
RES_CBX.RES
Отвечает: Timoshin A.B.
Здравствуйте, Алексеев Александр Владимирович!
Меню Component->New Component. Желательно предварительно скопировать файлы компонента в папку $(DELPHI)Imports.
--------- СЭ отбивает желание, отвечать на вопросы посетителей...
Ответ отправил: Timoshin A.B. (статус: 10-ый класс)
Ответ отправлен: 03.04.2006, 22:56 Оценка за ответ: 5
Отвечает: Евгения
Здравствуйте, Алексеев Александр Владимирович!
http://logic-bratsk.ru/radio/progr/comp_ust/comp_ust.htm
поглядите тут - тут вроде понятно растолковано :)
Ответ отправила: Евгения (статус: 2-ой класс)
Ответ отправлен: 03.04.2006, 23:05 Оценка за ответ: 4
Отвечает: Cheater76
Здравствуйте, Алексеев Александр Владимирович!
"Component" -> "Install component" -> Указываешь pas файл в котором есть
procedure Register;
Выбраешь закладку "Into new Package"
Имя файла пекета указываешь и Ок.
Незабудь пути прописать к файлам в "Environment Option"-> "Library"-> "Library Path"
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 03.04.2006, 23:05 Оценка за ответ: 5
Отвечает: Артём Шегеда
Здравствуйте, Алексеев Александр Владимирович!
Возможности скачать компоненту не было, однако, основываясь на опыте, подскажу:
- выбираете в меню "Компоненты" пункт "Установить компонент".
- по умолчанию предлагается установить в пакет dclusr.dpk (пакет пользовательских компонент) - это нормально.
- необходимо указать имя модуля, содержищего код регистрации компоненты (обычно в имени модуля имеется слог REG - например, CompReg.pas), если таких модулей нет, то стоит просмотреть модули на предмет наличия процедуры Register - это верный признак установки.
- нажимаем "ОК" и видим окно пакета с модулями. Файлы с расширением DCR автоматически вносятся в проект - это пиктограммы компонент для отрисовки на палитре и на форме (если компонента невизуальная)
- нажимаем "Компилировать" или "Установить" в окне пакета, соглашаемся с закрытием открытых форм и...
- вуаля: компонента установлена.
В процессе установки могут возникнуть проблеммы, в частности, нехватка модулей, наличие уже установленной компоненты в другом пакете... Но это другая история..
Ответ отправил: Артём Шегеда (статус: 4-ый класс)
Ответ отправлен: 03.04.2006, 23:18 Оценка за ответ: 5
Вопрос № 39.326
Доброго здоровья всем!
Как отследить открытие ЛЮБЫМ ПРИЛОЖЕНИЕМ диалога Open(Save).
Хочу пристроить рядом свою форму, как это сделано в 'ImageFox' (примочка к ACDSee 4.0).
Извините, если подобный вопрос уже задавался. Не нашёл...
Спасибо.
Отвечает: AnD1
Здравствуйте, Фомичёв Вячеслав Степанович!
Необходимо использовать API для работы с окнами. Посмотрите слылки, первая- статья по ф-ям, вторая сорец показывающий работу с окнами.
Приложение:
Ответ отправил: AnD1 (статус: 4-ый класс)
Ответ отправлен: 04.04.2006, 08:13 Оценка за ответ: 5