Вверх ↑
Этот топик читают: Гость
Ответов: 1328
Рейтинг: 69
#1: 2008-11-18 02:18:00 ЛС | профиль | цитата
Автор: NetSpirit

Компонент InputBox (для закладки Controls) - аналог функций InputBox и InputQuery в Delphi
(или InputBox в Visual Basic, но вид окна - в стиле Delphi).

Генерирует два события: onInput - при нажатии на кнопку ОК, и onCancel - при нажатии на кнопку Отмена.
Имеет один метод doShow - выводит сообщение на экран, данные из потока заносятся в строку ввода.

Свойство CancelMode позволяет указать, что выдавать в поток событию onCancel: пустую строку
(как в InputQuery) или строку, заданную по-умолчанию (как в InputBox);
Свойство Position задает положение окна на экране;

-----------
InputBox v1.4
- исправлена ошибка, обнаружена Konst;
- фокус ввода устанавливается на поле ввода.
карма: 2

1
файлы: 1inputbox_v1[1].4.rar [3.1KB] [642]
Голосовали:Netspirit
Разработчик
Ответов: 26158
Рейтинг: 2127
#2: 2008-11-18 02:53:27 ЛС | профиль | цитата
А кто мне объяснит, чем это лучше обычной модальной формы с двумя кнопками и полем ввода
карма: 22

0
Ответов: 1328
Рейтинг: 69
#3: 2008-11-18 03:22:29 ЛС | профиль | цитата
nesco, не чем не лучше, но NetSpirit сделал, работает, может кому пригодится
карма: 2

1
Голосовали:Tad
Ответов: 16884
Рейтинг: 1239
#4: 2008-11-18 08:35:37 ЛС | профиль | цитата
nesco писал(а):
А кто мне объяснит, чем это лучше обычной модальной формы с двумя кнопками и полем ввода ?
Здорово смахивает на вопрос: Зачем покупать готовый автомобиль, если можно взять кузов,мотор,четыре колеса и собрать самому?
Konst, +1
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#5: 2008-11-18 08:47:50 ЛС | профиль | цитата
Tad писал(а):
Зачем покупать готовый автомобиль, если можно взять кузов,мотор,четыре колеса и собрать самому?

А для чего вам тогда именно такой конструктор, как HiAsm, в котором из запчастей и собирают готовые автомобили и велосипеды
И не в коием случае я непротив того, что чел потренировался над созданием компонента, я даже всеми лапами за, но делать такие вещи и призван Hiasm

Dilma писал(а):
HiAsm или Конструктор программ это прежде всего система визуального проектирования и разработки приложений, не требующая от пользователя знания языков программирования и особенностей функционирования ОС, позволяющая быстро и легко писать(рисовать) небольшие программы

карма: 22

0
Ответов: 16884
Рейтинг: 1239
#6: 2008-11-18 09:39:42 ЛС | профиль | цитата
nesco,
Компонент выложеный Konst именно и служит для
Dilma писал(а):
не требующая от пользователя знания языков программирования и особенностей функционирования ОС, позволяющая быстро и легко писать(рисовать) небольшие программы

Если рассуждать по твоему, то:
Зачем компонент Message - обычная модальная форма с одной,двумя,тремя кнопками +Label ?
Зачем OpenSave Dialog - свободно можно и самому нарисовать.

Спор совершенно бессмысленный, типа Windows или Linux.

А вот что больше съест памяти или увеличит длинну готовой программы: новый компонент или обычная модальная форма с двумя кнопками и полем ввода - это весы правосудия. Экономия - годится, увеличило расход - в мусор.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#7: 2008-11-18 09:54:51 ЛС | профиль | цитата
Tad писал(а):
Зачем компонент Message

Затем, что использует, так же как и OpenSave Dialog, и Font и ColorDialog стандартные диалоги Винды. Спор -- действительно беспредметный.
карма: 22

0
Ответов: 1328
Рейтинг: 69
#8: 2008-11-18 11:04:05 ЛС | профиль | цитата
Tad писал(а):
Konst, +1

Tad, это не мне +, а NetSpirit, я просто перенес отсюда: Пакет Delphi >> Новые компоненты >> InputBox, у него пока прав недостаточно для добавления архивов
карма: 2

1
Голосовали:Netspirit
Ответов: 16884
Рейтинг: 1239
#9: 2008-11-18 11:06:41 ЛС | профиль | цитата
Konst, так я тебе и поставил за то, что перенес. Ему само собой
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3514
Рейтинг: 184
#10: 2008-11-18 18:41:00 ЛС | профиль | цитата
Реализация компонента мультиком
Add(MainForm,2953706,280,140){
}
Add(ChildFormEx,8961383,224,105)
{
link(onOk,8553387:doText,[])
link(onCancel,2953706:doClose,[(268,118)(268,167)])
}
BEGIN_SDK
Add(EditMultiEx,16345484,21,21)
{
WorkCount=#43:doVisible=Выводит окно диалога ввода данных|
EventCount=#65:onOk=Событие происходит после нажатия OK и выводит данные в поток|48:onCancel=Событие происходит после нажатия Отмена|
Width=363
Height=172
link(doVisible,3446467:doVisible,[(49,27)(49,97)])
}
Add(MainForm,3446467,77,63)
{
Left=35
Top=105
Width=253
Height=106
Visible=1
Caption="Тест"
Point(doVisible)
MakeExt(Caption,Заголовок,Caption)
MakeExt(Position,Позиционирование на экране,Position)
link(onCreate,2432926:doEvent1,[])
}
Add(ChildPanel,12427113,175,140)
{
link(onEvent1,1028156:doEvent1,[])
link(onEvent2,16345484:onCancel,[(355,153)(355,34)])
}
BEGIN_SDK
Add(EditMulti,9753187,21,21)
{
EventCount=2
WorkCount=1
Width=104
Height=74
link(doWork1,4982544:doResize,[])
}
Add(Panel,13634011,35,56)
{
Top=32
Width=237
Height=38
Align=4
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(Button,15851729,70,21)
{
Left=5
Top=5
Layout="name"
WidthScale=50
Caption="Ок"
link(onClick,9753187:onEvent1,[])
}
Add(GridLayout,4982544,35,21)
{
Name="name"
Space=10
Padding=10
Rows=2
Cols=2
}
Add(Button,587077,70,56)
{
Left=120
Top=5
Layout="name"
WidthScale=50
Caption="Отмена"
link(onClick,9753187:onEvent2,[(114,62)(114,34)])
}
END_SDK
Add(VBoxLayout,16243764,238,77)
{
Name="vert"
Space=10
Padding=10
}
Add(Edit,15774013,287,84)
{
Left=15
Top=15
Width=210
Layout="vert"
}
Add(Hub,2432926,126,77)
{
OutCount=3
link(onEvent1,16243764:doResize,[])
link(onEvent2,12427113:doWork1,[(166,90)(166,146)])
link(onEvent3,15774013:doText2,[])
}
Add(DoData,12560447,287,140)
{
link(onEventData,16345484:onOk,[(345,146)(345,27)])
link(Data,15774013:Text,[])
}
Add(Icon,9204616,77,133)
{
@Hint=#5:#main|
}
Add(Hub,1028156,224,140)
{
OutCount=3
link(onEvent1,12560447:doData,[])
link(onEvent3,3446467:doClose,[(268,160)(268,125)(65,125)(65,90)])
}
END_SDK
Add(StyleXP,12018639,175,140)
{
}
Add(Button,1889643,175,105)
{
Left=30
Top=20
link(onClick,8961383:doVisible,[])
}
Add(Edit,8553387,280,105)
{
Left=105
Top=20
Width=110
}

Внимание! Требуется обновление с SVN (используются компоненты для работы со слоями)
карма: 0
1
Голосовали:Валерий
Ответов: 4630
Рейтинг: 749
#11: 2008-11-20 14:38:34 ЛС | профиль | цитата
Konst, спасибо за внимание и поддержку (+1)!
Подозреваю, что в компоненте возможны некоторые ошибки,
но мне пока не удалось создать схему, в которой они бы вылезали.
Так что, кто обнаружит глюки, выложите сюда схемку.
Да, и кто разбирается и кому не лень - посмотрите код на предмет
утечки системных ресурсов при использовании обьектов (правильно ли освобождается память и т. п.)

карма: 26

0
Ответов: 1328
Рейтинг: 69
#12: 2008-11-20 14:51:17 ЛС | профиль | цитата
Netspirit, вот так Runtime error 216, а кто нибудь так может сделать, например, чтоб при запуске проги, запрашивался пароль.
code_10721.txt
карма: 2

1
файлы: 1code_10721.txt [116B] [635]
Голосовали:Netspirit
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2008-11-20 15:20:46 ЛС | профиль | цитата
nesco писал(а):
А для чего вам тогда именно такой конструктор, как HiAsm, в котором из запчастей и собирают готовые автомобили и велосипеды

+ 1

nesco писал(а):
Затем, что использует, так же как и OpenSave Dialog, и Font и ColorDialog стандартные диалоги Винды.

и это главное. Всплывет оно тогда, когда некто захочет InputBox вставить в консольное приложение( или в сервис или еще куда-то ) и сильно удивится получившемуся результату. Вот тогда г-н Tad, на вопрос почему MessageBox вставить можно, а InputBox нельзя и будет тут рассказывать про Windows VS Linux.
карма: 27
0
Ответов: 1161
Рейтинг: 160
#14: 2008-11-20 15:49:17 ЛС | профиль | цитата
Астрамак писал(а):
Реализация компонента мультиком

Астрамак, лучше для этого использовать doModal, а то сообщение появится шустрее, чем форма закроется
code_10722.txt
карма: 0

0
файлы: 1code_10722.txt [2.6KB] [635]
Ответов: 4630
Рейтинг: 749
#15: 2008-11-24 13:06:01 ЛС | профиль | цитата
Konst писал(а):
вот так Runtime error 216

Пока могу посоветовать вызывать не по onCreate, а по onActivate. Дома посмотрю.
Кстати, TrayIcon (насколько я знаю) по onCreate не хочет делать doHide. Думаю, по той же причине.

------------ Дoбавленo:
Ну по onActivate - это я поспешил... Лучше не стоит.


------------ Дoбавленo:


Так, ошибка серьезная, уже исправил. Konst'у - благодарности и ++!

InputBox v1.4
- исправлена ошибка, обнаружена Konst;
- фокус ввода устанавливается на поле ввода.

карма: 26

1
Голосовали:Konst
Сообщение
...
Прикрепленные файлы
(файлы не залиты)