Вопрос № 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
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Viktuk viktor viktorovich!
я так понял, что при запуске программы необходимо некоторое время показывать какое-то окошко, которое не даст пользоваться программой заданное время.
Создаете ещё одну форму, на которой размещаете компонент TTimer (вкладка на панели компонентов System). В свойстве таймера Interval задаете время в миллисекундах, Active - true.
В событии OnTimer пишете код закрывающий вторую форму (Close).
В свойствах второй формы отключаете все системные кнопки на ней (в BorderIcons - все ставите false), чтобы нельзя было ее закрыть.
В событии OnShow главной формы пишете Form2.ShowModal. Этот метод покажет вторую форму без возможности перехода на первую до закрытия второй.
Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Практикант)
Ответ отправлен: 08.01.2008, 11:13 Оценка за ответ: 4
Вопрос № 117.441
Уважаемые експерты!Помогите решить следующий вопрос
Каким образом "привязать" програмульку к конкретной машине(например по "железу")
Отвечает: 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 ).
Отвечает: 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 после запятой разрешалось вводить только две цифры.
Отвечает: 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)
Отвечает: 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