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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1033
от 13.01.2008, 12:35

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 117363: Здравствуйте! Нужна функция определяющая, находится ли в данный момент курсор мыши над контролом. Что-нибудь типа: Function CursorHere(cmpnt:TComponent):bool; ..
Вопрос № 117370: Доброго времени суток, коллеги! Скажите пожалуйста как на Дельфи сделать окно программы намертво прилепленым к верху экрана, чтобы его нижняя граница была верхним краем для всех остальных приложений. Так например сделана программа CashFiesta...
Вопрос № 117440: Уважаемые эксперты!у Меня вопрос следующего содержания! 1.Как защитить свою програмульку(например таймером)или другими несложныни способами. ..
Вопрос № 117441: Уважаемые експерты!Помогите решить следующий вопрос Каким образом "привязать" програмульку к конкретной машине(например по "железу")...
Вопрос № 117442: Уважаемые експерты!Помогите! Как задать чтобы в поле Edit первым вводимым знаком была цифра(ести запятая, то чтобы перед ней автоматически проставлялся 0 )....
Вопрос № 117443: Уважаемые експерты!Вопрос зледующего содержания Как задать чтобы в поле Edit после запятой разрешалось вводить только две цифры....
Вопрос № 117444: Уважаемые експерты!Помогите с решением проблемы Как задать чтобы в поле Edit допускалось вводить определенное количество цифр (напр. 9)...

Вопрос № 117.363
Здравствуйте!
Нужна функция определяющая, находится ли в данный момент курсор мыши над контролом.
Что-нибудь типа: Function CursorHere(cmpnt:TComponent):bool;
Отправлен: 07.01.2008, 16:47
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Red Spirit!
Один из вариантов - можно обрабатывать событие OnMouseMove нужного объекта. Оно происходит когда мышь двигается над объектом.
Думаю, должно подойти.

Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Практикант)
Ответ отправлен: 07.01.2008, 17:18
Оценка за ответ: 3
Комментарий оценки:
События не подойдут, к сожалению..

Отвечает: Markedone
Здравствуйте, Red Spirit!
Используй событие OnMouseMove у компонента
Если курсор мышы будет над контролом, то запустится обработчик этого события
Ответ отправил: Markedone (статус: 2-ой класс)
Ответ отправлен: 07.01.2008, 17:18
Оценка за ответ: 3
Комментарий оценки:
Я уже думал над таким подходом, но мне нужно именно функция булева типа. Дело в том, что у меня установлен таймер и в какихто промежутках он будет срабатывать и проверять, над каким именно контролом находится мышь. Тут нужна только функция проверки...

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

1 пример возвращает имя контрола под мышкой, в bool преобразовать несложно
2 пример возвращает ссылку на контрол под мышкой
3 подразумевает создание нового класса

Приложение:

Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 07.01.2008, 17:23
Оценка за ответ: 3
Комментарий оценки:
Благодарю за ответы, но:
1. Функция возвращает лишь заголовок компонента, минус, что далеко не все компоненты имеют свойство Caption.
2. Возвращает имя класса, но как быть сли на форме несколько, к примеру, TListBox-ов? Таким образом их друг от друга не отличить.
3. События входа и покидания тут тоже не подходят


Вопрос № 117.370
Доброго времени суток, коллеги!

Скажите пожалуйста как на Дельфи сделать окно программы намертво прилепленым к верху экрана, чтобы его нижняя граница была верхним краем для всех остальных приложений. Так например сделана программа CashFiesta. Посмотреть что я имею ввиду можно здесь
http://rsfgroup.net/1.JPG
Отправлен: 07.01.2008, 17:54
Вопрос задал: Remnew Anatoliy (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Remnew Anatoliy!

Попробуйте развить такой код: на форме 2 кнопки: BTop и BClose остальное в приложении

Приложение:

Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 09:51


Вопрос № 117.440
Уважаемые эксперты!у Меня вопрос следующего содержания!
1.Как защитить свою програмульку(например таймером)или
другими несложныни способами.
Отправлен: 08.01.2008, 10:45
Вопрос задал: Viktuk viktor viktorovich (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Viktuk viktor viktorovich!
я так понял, что при запуске программы необходимо некоторое время показывать какое-то окошко, которое не даст пользоваться программой заданное время.
Создаете ещё одну форму, на которой размещаете компонент TTimer (вкладка на панели компонентов System). В свойстве таймера Interval задаете время в миллисекундах, Active - true.
В событии OnTimer пишете код закрывающий вторую форму (Close).
В свойствах второй формы отключаете все системные кнопки на ней (в BorderIcons - все ставите false), чтобы нельзя было ее закрыть.
В событии OnShow главной формы пишете Form2.ShowModal. Этот метод покажет вторую форму без возможности перехода на первую до закрытия второй.

Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Практикант)
Ответ отправлен: 08.01.2008, 11:13
Оценка за ответ: 4


Вопрос № 117.441
Уважаемые експерты!Помогите решить следующий вопрос
Каким образом "привязать" програмульку к конкретной машине(например по "железу")
Отправлен: 08.01.2008, 10:46
Вопрос задал: Viktuk viktor viktorovich (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Viktuk viktor viktorovich!

Почитайте статьи на:
http://www.dotfix.net/
http://delphi.od.ua/article/a-48.html
http://www.codenet.ru/progr/delphi/stat/delphi.php
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=846
...
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 11:28
Оценка за ответ: 5

Отвечает: Markedone
Здравствуйте, Viktuk viktor viktorovich!
Могу предложить вам как вариант серийный номер жесткого диска. Он уникален для каждого диска.
Ответ отправил: Markedone (статус: 2-ой класс)
Ответ отправлен: 08.01.2008, 16:37
Оценка за ответ: 1


Вопрос № 117.442
Уважаемые експерты!Помогите!
Как задать чтобы в поле Edit первым вводимым знаком была цифра(ести запятая, то чтобы перед ней автоматически проставлялся 0 ).
Отправлен: 08.01.2008, 10:47
Вопрос задал: Viktuk viktor viktorovich (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Viktuk viktor viktorovich!

попробуйте развить такую функцию

Приложение:

Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 11:11
Оценка за ответ: 5

Отвечает: Denisss

Здравствуйте, Viktuk viktor viktorovich!

В приложении два примера.
Первый - в введенном тексте всегда будет ноль первым.

Пример второй - по аналогии с Калькулятором Windows. Если ничего не введено, то появляется 0. Если первой введена запятая, то перед ней ставится 0.
В обоих случаях выполнено как обработчик события OnChange Edit-a.

Удачи!

Приложение:

---------
Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
----
Ответ отправлен: 08.01.2008, 11:18
Оценка за ответ: 5

Отвечает: Esi
Здравствуйте, Viktuk viktor viktorovich!
if (length(edit1.text)>0)and(copy(edit1.text,1,1)=',') then edit1.text:='0'+edit1.text;

Удачи!
Ответ отправил: Esi (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 13:01
Оценка за ответ: 5

Отвечает: Genia007
Здравствуйте, Viktuk viktor viktorovich!
Испробуйте мой код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44: begin
if Edit1.Text = '' then
Edit1.SelText := '0';
end; клавиша < , >
else Key := Chr(0); // символ не отображать
end;
end;
Ответ отправил: Genia007 (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 20:36
Оценка за ответ: 5


Вопрос № 117.443
Уважаемые експерты!Вопрос зледующего содержания
Как задать чтобы в поле Edit после запятой разрешалось вводить только две цифры.
Отправлен: 08.01.2008, 10:48
Вопрос задал: Viktuk viktor viktorovich (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Viktuk viktor viktorovich!

в продолжение предыдущего ответа: попробуйте добавить такой код

Приложение:

Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 11:23
Оценка за ответ: 3

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Viktuk viktor viktorovich!
В событии OnChange пишете код из приложения.

Удачи!

Приложение:

Ответ отправил: Николай Владимирович / Н.В. (статус: Практикант)
Ответ отправлен: 08.01.2008, 11:25
Оценка за ответ: 5

Отвечает: Esi
Здравствуйте, Viktuk viktor viktorovich!
Попробуйте в процедуре ONChange написать одну строчку.
If (pos(',',edit1.text)>0) and(length(edit1.text)-pos(',',edit1.text)>2) then edit1.text:=copy(edit1.text,1,pos(',',edit1.text)+2);
Хотя эта строка не проверяет ввод символов: буквы или цифры.

Удачи!
Ответ отправил: Esi (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 13:01
Оценка за ответ: 4

Отвечает: Markedone
Здравствуйте, Viktuk viktor viktorovich!
Вместо TEdit используй TMaskEdit.
Нажми два раза по полю ввода, справа от свойства EditMask, У компонента TMaskEdit, появится окно редактирования маски ввода. В поле "Input Mask" введи "99" и нажми ОК.
Ответ отправил: Markedone (статус: 2-ой класс)
Ответ отправлен: 08.01.2008, 16:33
Оценка за ответ: 5

Отвечает: Genia007
Здравствуйте, Viktuk viktor viktorovich!
Чтобы задать в поле Edit после запятой вводить только две цифры, используйте следующий код. Если нужно задать другое количество цифр, просто измените цифру 2 на нужную.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': begin
if (Pos(#44,Edit1.Text) <> 0) and
(Pos(#44,Edit1.Text) = Length(Edit1.Text) - 2) then
begin
Key := Chr(0);
Exit;
end;
end; // цифра
#8 : ; // клавиша <Back Space>
#44: begin
if Edit1.Text = '' then
Edit1.SelText := '0';
end;// клавиша < , >
else Key := Chr(0); // символ не отображать
end;
end;
Ответ отправил: Genia007 (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 20:37
Оценка за ответ: 5


Вопрос № 117.444
Уважаемые експерты!Помогите с решением проблемы
Как задать чтобы в поле Edit допускалось вводить определенное количество цифр (напр. 9)
Отправлен: 08.01.2008, 10:50
Вопрос задал: Viktuk viktor viktorovich (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Drbear
Здравствуйте, Viktuk viktor viktorovich!

задайте MaxLength=9
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 08.01.2008, 11:25
Оценка за ответ: 4

Отвечает: Denisss

Здравствуйте, Viktuk viktor viktorovich!

В приложении находится пример. В нем подсчитывается уже введенное количество цифр. Остальные символы не считаются (такие как буквы, запятые и пр.).
Кстати говоря, этот пример можно модифицировать т.о., чтобы вводилось не больше одной запятой, чтобы не вводились другие символы и т.д.

Удачи!

Приложение:

---------
Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
----
Ответ отправлен: 08.01.2008, 11:28
Оценка за ответ: 5

Отвечает: Esi
Здравствуйте, Viktuk viktor viktorovich!
проверка последнего символа в строке: цифра или любой другой символ:
if pos(copy(edit1.text,length(edit1.text),1),'0123456789')=0 then begin
edit1.text:=copy(edit1.text,1,length(edit1.text)-1);
exit;
end;
if length(edit1.text)>9 then edit1.text:=copy(edit1.text,1,length(edit1.text)-1);
// где 9 - количество цифр
//Эта программа не предусматривает ввод какого-нибудь символа внутри edit1.text.

Удачи!
Ответ отправил: Esi (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 13:01
Оценка за ответ: 4

Отвечает: Markedone
Здравствуйте, Viktuk viktor viktorovich!
Поступай также как в ответе на твой предыдущий вопрос, толко 99 замени на 999 если хочешь чтобы можно было ввести максимум 3 цифры
Ответ отправил: Markedone (статус: 2-ой класс)
Ответ отправлен: 08.01.2008, 16:41
Оценка за ответ: 5

Отвечает: Genia007
Здравствуйте, Viktuk viktor viktorovich!
для того что бы edit допускал вводить определённое количество цифр, нужно в свойство MaxLength выставить нужное количество, а ввод только цифр, следующий код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44: ;// клавиша < , >
else Key := Chr(0); // символ не отображать
end;
end;
Ответ отправил: Genia007 (статус: 3-ий класс)
Ответ отправлен: 08.01.2008, 20:36
Оценка за ответ: 4


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.69 от 06.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное