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

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


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

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

Выпуск № 777
от 11.04.2007, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 463, Экспертов: 93
В номере:Вопросов: 7, Ответов: 13


Вопрос № 81182: Подскажите пожалуйста. Если у меня есть на форме Memo, Edit, Label, Raddiobutton и т.д, то как сделать так чтобы по нажатию кнопки форма полностью очищалась, от всего этого?...
Вопрос № 81188: Здраствуй народ. У меня пара вопросов: 1. На период выполнении опрерации в программе я блокирую на форме кнопку CLOSE на полосе заголовка окна: EnableMenuItem(GetSystemMenu(Handle,false),SC_CLOSE, MF_DISABLED or MF_GRAYED); затем пос...
Вопрос № 81200: Прошу прислать коротенький текст программы простых звуков на Delphi для компьютера без колонок....
Вопрос № 81260: Здравствуйте! Мне нужно убрать процесс моей программы из списка таскменеджера. Смотрел работу с процессами в DelphiWorld, но там примеры скрытия процессов только для win9x-ME, а мне нужно под XP. Если можно, то покажите конкретный пример. Зар...
Вопрос № 81261: Уважаемые эксперты! Подскажите как сделать: 1) Чтобы при нажатии на строку ListBox'a, загружалось штук пять картинок, причем для каждой строчки другие картинки и все это на одной форме! 2) Что прописать кнопке, чтобы при ее нажатии изменя...
Вопрос № 81305: Здравствуйте, уважаемые эксперты! Разъясните, пожалуйста, как использовать докачку с сервера. Например, использую процедуру idFTP.Get. Дальше хочу остановить закачку файла. Как это сделать? После чего возобновить её (Примерно как в Download ...
Вопрос № 81319: Доброе время !!!!! У меня к Вам вопрос . Мне нужно организовать цик. как сделать не знаю. Есть база данных. в которой есть название товара, и т.д. Мне нужно чтоб при работе с сканеромна форме отображалось время 1 и время 2 и дата.<...

Вопрос № 81.182
Подскажите пожалуйста. Если у меня есть на форме Memo, Edit, Label, Raddiobutton и т.д, то как сделать так чтобы по нажатию кнопки форма полностью очищалась, от всего этого?
Отправлен: 05.04.2007, 14:37
Вопрос задал: Soadbest (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Soadbest!
for i := 0 to Form.ComponentsCount-1 do begin
try (Form.Component[i] as TWinControl).Visible := False; except end;
// либо
Form.Component[i].Free;
end;


Не уверен насчет названий — уточните в справке.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 05.04.2007, 14:43

Отвечает: Сарумян
Здравствуйте, Soadbest!

Я незнаю зачем Вам все усложнять, но поставьте у всех обьъектов которые подвержены сокрытию свойство visible в значение false.

Приложение:

---------
Жизнь коротка, чтобы писать на ассемблере.

Ответ отправил: Сарумян (статус: 2-ой класс)
Ответ отправлен: 05.04.2007, 14:47

Отвечает: xackera
Здравствуйте, Soadbest!
Необходимо какждый контроль очищать отдельно... то есть допустим некая форма From1 на ней расположены Edit1, Memo1 и RadioGroup1, а так же кнопкаю тогда обработчик нажатия кнопки будет выглядеть следующим образом

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Clear ; // очистка Edit
memo1.Clear; // очистка Memo
RadioGroup1.ItemIndex :=-1; // очистка Radiogroup
end;

в случае если используешь RaddioButton, то так же каждый должен очистить по отдельности.
Ответ отправил: xackera (статус: 2-ой класс)
Ответ отправлен: 05.04.2007, 15:04

Отвечает: Menand
Здравствуйте, Soadbest!

Можно сделать их невидимыми.

Про всего сделать отдельную процедуру, в которой просто перечислить все эл-ты в виде имя_элемента.visible=false;
Ответ отправил: Menand (статус: 7-ой класс)
Ответ отправлен: 05.04.2007, 15:26


Вопрос № 81.188
Здраствуй народ. У меня пара вопросов:
1. На период выполнении опрерации в программе я блокирую на форме кнопку CLOSE на полосе заголовка окна:
EnableMenuItem(GetSystemMenu(Handle,false),SC_CLOSE, MF_DISABLED or MF_GRAYED);

затем после выполнения операции разблокирую:

EnableMenuItem(GetSystemMenu(Handle,false),SC_CLOSE, MF_ENABLED);

Вот ерунда получается в том, что если я сверну програму во время блокировки CLOSE то уже не могу ее развернуть, не во время выполнения операции ни после завершения, в контектсном меню программы (тот что появляется по правой кнопке в панеле задач) пункт "Развернуть" блокирован. Что не так?
2. Как мне на время блокировать в контекстном меню пункт "Закрыть".
Отправлен: 05.04.2007, 15:17
Вопрос задал: Карасев Алексей Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Карасев Алексей Александрович!

А может лучше блокировать возможность закрытия формы

Приложение:

---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО

Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 05.04.2007, 15:35


Вопрос № 81.200
Прошу прислать коротенький текст программы простых звуков на Delphi для компьютера без колонок.
Отправлен: 05.04.2007, 15:49
Вопрос задал: Ayupov (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: chikanok
Здравствуйте, Ayupov!
Я понял что вы хотите выводить звуки через внутренний динамик(системного блока).
Для этого сушествует процедура beep модуля Windows. У неё два параметра:dwFreq и dwDuration. Подавая разные числа в них вы будете получать разные звуки.
Вызывать нужно Windows.beep иначе вызовете другую процедуру модуля SysUtil.
Удачи!

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 3-ий класс)
Ответ отправлен: 05.04.2007, 16:54
Оценка за ответ: 2
Комментарий оценки:
Спасибо.

Отвечает: Bingo
Здравствуйте, Ayupov!
Если я Вас правильно понял, то Вы желаете услышать звук на встроенном динамике ПК. Для этого воспользуйтесь следующей функцией:
---
procedure Sound(Frequency, Duration: Integer);
asm
push edx
push eax
mov eax, Win32Platform
cmp eax, VER_PLATFORM_WIN32_NT
jne @@9X
call Windows.Beep
ret
@9X:
pop eax
pop edx
push ebx
push edx
mov bx, ax
mov ax, 34DDh
mov dx, 0012h
cmp dx, bx
jnc @@2
div bx
mov bx, ax
in al, 61h
test al, 3
jnz @@1
or al, 3
out 61h, al
mov al, 0B6h
out 43h, al
@1:
mov al, bl
out 42h, al
mov al, bh
out 42h, al
call Windows.Sleep
in al, 61h
and al, 0FCh
out 61h, al
jmp @@3
@2:
pop edx
@3:
pop ebx
end;
---
Здесь: Frequency - частота звука, измеряющаяся в герцах (20Нz-20KHz), Duration - задержка (продолжительность звучания). Таким образом можно сделать свой неболольшой синтезатор, если окно будет обрабативать событие OnKeyPress. Ниже приведена таблица основных звуков c их частотами:
***
262 = До
294 = Ре
330 = Ми
349 = Фа
392 = Соль
440 = Ля
494 = Си
***
Если понадобиться сыграть звуки на октаву выше (то есть ноты будут те же, но звучание будет отличаться тембром), то домножьте эти значения на 2.
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 3-ий класс)
Ответ отправлен: 05.04.2007, 17:52
Оценка за ответ: 3
Комментарий оценки:
Спасибо.


Вопрос № 81.260
Здравствуйте!
Мне нужно убрать процесс моей программы из списка таскменеджера. Смотрел работу с процессами в DelphiWorld, но там примеры скрытия процессов только для win9x-ME, а мне нужно под XP.
Если можно, то покажите конкретный пример. Заранее спасибо!
Отправлен: 06.04.2007, 04:59
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: василий1
Здравствуйте, Red Spirit!

как раз то что вы просили

Приложение:

Ответ отправил: василий1 (статус: 2-ой класс)
Ответ отправлен: 06.04.2007, 05:09
Оценка за ответ: 5
Комментарий оценки:
Спасибо, все отлично работает!


Вопрос № 81.261
Уважаемые эксперты!
Подскажите как сделать:
1) Чтобы при нажатии на строку ListBox'a, загружалось штук пять картинок, причем для каждой строчки другие картинки и все это на одной форме!
2) Что прописать кнопке, чтобы при ее нажатии изменялся размер WebBrowser'a
3) Чтобы у WebBrowser'a небыло 3D бордера?
Заранее спасибо!
Отправлен: 06.04.2007, 05:46
Вопрос задал: Artem (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Artem!
2)
TForm1.Button5Click(Sendet: TObject);
begin
WebBrowser1.Width := 800;
WebBrowser1.Height := 600;
end;

3)
http://delphiworld.narod.ru/base/wb_change_border_color_style.html
http://delphiworld.narod.ru/base/flat_webbrowser.html
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 06.04.2007, 08:44
Оценка за ответ: 4
Комментарий оценки:
Спасибо, но с webbrowserpm, так почему-то не канает!

Отвечает: Сарумян
Здравствуйте, Artem!
1) Создайте для элемента ListBox событие OnClick.

procedure TForm1.ListBox1Click(Sender: TObject);
var
Loop: Integer; // переменная с номеров выделенной строки
begin
for Loop := 0 to Listbox1.Items.Count - 1 do // перебор строк
if Listbox1.Selected[0] then // при выборе 1 строки (в Делфи нумерация идет с нуля) выполняются...
.... //какие-то действия
Else If Listbox1.Selected[1] then //при выборе 2 строки..
.... /какие-то действия.

///и так далее, смотря сколько у Вас строк.
end;

Как действие Вам надо прописать загрузку каких либо изображений в TImage
image1.Picture.LoadFromFile(ЗДЕСЬ ПУТЬ К ФАЙЛУ!!!);

2. ВебБраузера?? Как что, компонент Делфи или уже запущенное стороннее приложение?? Если компонент Делфи то вот так...
procedure TForm1.Button1Click(Sender: TObject);
begin
webbrowser1.Height:=AAA;
webbrowser1.Width:=BBB;
end;

В место ААА и ВВВ необходимые Вам размеры.

---------
Жизнь коротка, чтобы писать на ассемблере.
Ответ отправил: Сарумян (статус: 2-ой класс)
Ответ отправлен: 06.04.2007, 08:47
Оценка за ответ: 4
Комментарий оценки:
Насчет веббраузера, я так и делал, но почему-то не работает!


Вопрос № 81.305
Здравствуйте, уважаемые эксперты!

Разъясните, пожалуйста, как использовать докачку с сервера. Например, использую процедуру idFTP.Get. Дальше хочу остановить закачку файла. Как это сделать? После чего возобновить её (Примерно как в Download Master). Если можно накидайте "в двух кодах" процедурки.

Заранее спасибо!

Использую: Delphi 7.1
Отправлен: 06.04.2007, 13:27
Вопрос задал: Подболотов Иван Алексеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: SashaFAN
Здравствуйте, Подболотов Иван Алексеевич!

Условия задачи:

Скачиваемый файл сохраняется как c:123.tmp
При очередном старте скачки идет проверка на наличие оного файла на винте, если он есть, считаем что надо докачивать. Размер этого файла является признаком того, с какого места надо качать.
Требуемые материалы:

Форма (TForm)-1 шт.
Кнопки (TButton)-2 шт.
Строка ввода (TEdit)-1 шт.
Progress bar для красоты (TProgressBar)-1 шт.
Метки (TLabel)-по необходимости.

Далее идет полный код программы

Приложение:

Ответ отправил: SashaFAN (статус: 1-ый класс)
Ответ отправлен: 06.04.2007, 14:42

Отвечает: Sosedov
Здравствуйте, Подболотов Иван Алексеевич!

Остановить закачку можно методом idFTP.Abort.

Продолжить закачку вариантом метода idFTP.Get с параметрами:
(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean = false; AResume: Boolean = true)
Предварительно проверьте свойство idFTP.CanResume, которое скажет Вам, поддерживает ли сервер докачку.

Сам не проверял, потому текст программы не привожу. Не ругайте, если что не так! :)

Удачи!
Ответ отправил: Sosedov (статус: 1-ый класс)
Ответ отправлен: 06.04.2007, 15:14


Вопрос № 81.319
Доброе время !!!!!
У меня к Вам вопрос .
Мне нужно организовать цик. как сделать не знаю.
Есть база данных. в которой есть название товара, и т.д.
Мне нужно чтоб при работе с сканеромна форме отображалось время 1 и время 2 и дата.

Дату я беру системную, время тоже, но проблемы две.
1 время не останавливается в EDITE а продолжает идти.
2 чтоб при повторной проводки сканером выводилось новое время в EDITE и тоже было фиксированно.
Отправлен: 06.04.2007, 14:19
Вопрос задал: кадекин Александр Геннадиевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Menand
Здравствуйте, кадекин Александр Геннадиевич!

очень жаль что вы не привели код как вы это время берёте - но уверен что у вас оно берётся в цикле, а не одноразово

а 2 вытекает из 1 - просто обновляйте время не в цикле а при сканировании
Ответ отправил: Menand (статус: 7-ой класс)
Ответ отправлен: 06.04.2007, 14:38
Оценка за ответ: 4


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.47 от 06.04.2007
Яндекс Rambler's Top100

В избранное