Вверх ↑
Этот топик читают: Гость
Ответов: 1328
Рейтинг: 69
#16: 2008-11-25 04:24:09 ЛС | профиль | цитата
Netspirit, Перезалил в 1 топике
------------ Дoбавленo:

Не хватает возможности закрытия звездочками вводимых символов
карма: 2

0
Ответов: 4589
Рейтинг: 737
#17: 2008-11-27 14:00:35 ЛС | профиль | цитата
В принципе это возможно, но тут щас опять будут говорить, что "это все усложняет", "увеличивает размер кода", "можно сделать штатными средствами" и т.п. Я потом посмотрю и скажу тебе, что в коде добавить, чтоб отображались "*". Я вот че думаю: не наконструировать ли еще часто используемых диалогов, типа "Ввод имени и пароля", "Статус процесса" (Прогресс-бар+ кн. Отмена), "Yes-Yes to all-No-No to all" и т. д.?

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


Dilma писал: "Всплывет оно тогда, когда некто захочет InputBox вставить в консольное приложение..."
Во-первых, я так понимаю основной спор о том, что лучше: отдельный компонент или "Модальная форма с кнопками". В этом случае консольная программа - неудачный пример так, как оба варианта одинаково непригодны.
Во-вторых, если кто и захочет впихнуть InputBox в консоль, то сразу поймет, что это бесполезно (как гласит закон Мерфи "Если что-то можно сделать неправильно, то оно будет кем-то сделано неправильно"). Лично я, запуская консольную программу, не ожидаю там увидеть даже MessageBox, не то, что OpenSave Dialog.

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


Konst, чтобы отображались "звёздочки", найди в коде текст [eoNoVScroll] и замени его на [eoNoVScroll, eoPassWord]. Лучше сделай копию компонента (иначе все InputBox’ы в проекте будут такими) или добавь новое свойство (смотри, как реализовано св-во Position). Не уверен, добавлять ли в следующую версию так, как это все-таки довольно редко используемая возможность и мало кто ожидает этого от InputBox.

карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#18: 2008-11-27 14:01:18 правка | ЛС | профиль | цитата


Редактировалось 8 раз(а), последний 2022-02-28 19:04:04
карма: 0

0
Ответов: 4589
Рейтинг: 737
#19: 2009-04-10 15:33:47 ЛС | профиль | цитата
InputBox v2.0

Новая, полностью переделанная, версия компонента.
В данной версии использование компонентов KOL было заменено на
API-функции для работы с диалогами. Для Delphi с помощью директив условной
компиляции диалог создается из ресурса, а для FPC шаблон диалога создается
в памяти (мне не удалось заставить FPC компилироватся с этим ресурсом, да и с любым другим...)

Преимущества:
- код и размер компонента стал меньшим (для компилятора Delphi
к исполняемому файлу подключается ресурс диалога (ок. 300 байт) и каждый экземпляр
состоит из двух небольших процедур). Для FPC ресурс не используется, а шаблон диалога создается
в памяти дополнительной процедурой (при этом размер экземпляра компонента несколько больший, чем для Delphi);
- отказ от KOL позволил использовать компонент в приложениях без формы (в том числе и консольных программах);

В приложенном архиве "Тестовые схемы" предлагаю две одинаковые схемы для сравнения размера исп. файлов
при использовании компонента и при имитации компонента дочерней формой. Схемы состоят из пяти кнопок, которые
вызывают по одному InputBox в виде компонента и в виде дочерней формы.
Откомпилировав схемы, вы увидите, что использование дочерних форм для имитации компонента
увеличивает размер файла на 19 КВ (для Delphi, для FPC разница в 32 КВ), а это 30% для этих схем. Поэтому компонент,
как мимнимум, в плане размера, выигрывает у дочерних форм.

Тестовая схема с новой версией компонента на 2 КВ меньше чем с предыдущей.

Из недостатков можно отметить то, что текстовая надпись имеет постоянную высоту и вмещает две строки
текста (чего в большинстве случаев достаточно), а для изменения высоты нужно править ресурс.

После установки скопируйте файл InputBox.res в папку ..HiAsmElementsDelphicode

Так что, кому компонент нравится - качайте и пользуйтесь.
карма: 26

3
Голосовали:filyaxxxcom, Астрамак, andrestudio
Ответов: 4589
Рейтинг: 737
#20: 2009-08-14 10:39:25 ЛС | профиль | цитата
InputBox v2.2



Усовершенствованная версия компонента:
- оптимизирован код;
- добавлено свойство "Password";
- текстовая надпись изменяет свою высоту в зависимости от количества строк.

Если вы пользовались предыдущей версией - можете удалить файл InputBox.res из папки ..code

Редактировалось 2 раз(а), последний 2022-01-06 21:49:22
карма: 26

1
файлы: 1inpboxscreen.jpg [7.3KB] [866]
Голосовали:Genius
Ответов: 75
Рейтинг: 4
#21: 2022-01-03 19:02:14 ЛС | профиль | цитата
Вопрос, а где v2.0 и v2.2? Что-то даже по поиску я не могу найти эти версии.
карма: 0

0
Ответов: 4589
Рейтинг: 737
#22: 2022-01-06 21:50:08 ЛС | профиль | цитата
InputBox v2.2

Редактировалось 1 раз(а), последний 2022-01-07 19:31:46
карма: 26

0
Ответов: 75
Рейтинг: 4
#23: 2022-01-06 23:06:15 ЛС | профиль | цитата
А, хорошо, спасибо.
Кстати, а можно ли добавить свойства для того, чтобы менять названия кнопок? Что-то не очень хочется лезть в исходник компонента.
карма: 0

0
Ответов: 5181
Рейтинг: 577
#24: 2022-01-06 23:31:15 ЛС | профиль | цитата
TheRenat писал(а):
Кстати, а можно ли добавить свойства для того, чтобы менять названия кнопок? Что-то не очень хочется лезть в исходник компонента.

Вот реально от новогодних праздников тяжело отходить, это нужно всех поздравить и при этом не упится
Тут уж грешным делом начинаешь соображать, вот бы свой исходничик найти, вдруг господь там в пару годков обсчитался
карма: 4
0
Ответов: 75
Рейтинг: 4
#25: 2022-01-07 15:48:44 ЛС | профиль | цитата
TheRenat писал(а):
Кстати, а можно ли добавить свойства для того, чтобы менять названия кнопок? Что-то не очень хочется лезть в исходник компонента.

Я ожидал что никто не будет это делать, кроме меня, конечно. Ну вот я и сделал версию 2.4.

Из изменений только имеется возможность изменить текст на кнопках.
карма: 0

0
файлы: 1InputBox2.4.zip [3.2KB] [115]
Ответов: 4589
Рейтинг: 737
#26: 2022-01-07 19:31:54 ЛС | профиль | цитата
TheRenat писал(а):
Я ожидал что никто не будет это делать

Почему же? Я сделал.

InputBox v2.3
- возможность задавать свои надписи на кнопках
- другие переработки

Редактировалось 3 раз(а), последний 2022-01-07 19:32:33
карма: 26

0
файлы: 1InputBox v2.3.rar [5.3KB] [130]
Ответов: 457
Рейтинг: 84
#27: 2022-01-08 13:48:42 ЛС | профиль | цитата
Если не желать чего-то особенного, то можно вызвать InputBox стандартными компонентами.

Add(MainForm,2953706,182,168)
{
link(onCreate,6654860:doString,[])
}
Add(FormatStr,6654860,245,182)
{
Mask="sys.onValue InputBox("%1", "%2")\r\n\r\n"
link(onFString,4900988:##SetScript,[])
link(Str1,6398593:Text,[])
link(Str2,9583772:Text,[(258,152)(265,152)])
}
Add(VBJScript,4900988,301,182)
{
WorkPoints=#11:##SetScript|
EventPoints=#7:onValue|
Script=#0:|0:|
UseName=0
link(onValue,2996465:doText,[])
}
Add(VisualStrings,9583772,259,126)
{
Lines=#9:Заголовок|
Width=67
}
Add(VisualStrings,6398593,245,98)
{
Lines=#16:Текст сообщения |
Width=144
}
Add(Label,2996465,357,182)
{
Left=45
Top=35
Height=28
Font=[MS Sans Serif,14,0,0,1]
Caption=""
}

Или чуть посложнее

Add(MainForm,2953706,217,133)
{
link(onCreate,1827648:doString,[])
}
Add(WinExec,3485469,329,133)
{
FileName="powershell.exe"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,13069838:doCharset,[])
}
Add(FormatStr,1827648,273,147)
{
Mask="$credential = Get-Credential\r\n# $credential = Get-Credential -Username "MyDomain\MyUsername" -Message "Inform your password"\r\n$UserName = $credential.UserName\r\n$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credential.Password))\r\n\r\n-join('User - ', $UserName, ';', 'Password - ', $password) "
link(onFString,3485469:doConsoleExec,[])
}
Add(Charset,13069838,392,147)
{
link(onCharset,1188660:doEnum,[])
}
Add(Memo,1351460,504,147)
{
Left=550
Top=160
Align=5
Font=[MS Sans Serif,14,0,0,1]
ScrollBars=3
}
Add(Str_Enum,1188660,448,147)
{
link(onEnum,1351460:doAdd,[])
}

карма: 10

0
Ответов: 189
Рейтинг: 6
#28: 2022-01-08 15:17:17 ЛС | профиль | цитата
Gunta просто магистр повер шелл. Моё уважение.

Редактировалось 1 раз(а), последний 2022-01-08 15:51:53
карма: 1
HiAsm Studio
0
Разработчик
Ответов: 26048
Рейтинг: 2110
#29: 2022-01-08 16:57:39 ЛС | профиль | цитата
Gunta, а на кой черт в первом примере FormatStr?
Это же все безобразие решается одним скриптом:
Схема


Add(MainForm,11020614,308,301)
{
link(onCreate,4900988:doWork,[])
}
Add(VBJScript,4900988,364,315)
{
WorkPoints=#6:doWork|
EventPoints=#7:onValue|
DataPoints=#4:Text|6:Header|
Script=#22:Sub doWork(Data,Index)|44: sys.onValue InputBox(sys.Text, sys.Header)|7:End Sub|
UseName=0
link(onValue,2996465:doText,[])
link(Text,6398593:Text,[])
link(Header,9583772:Text,[(377,306)(384,306)])
}
Add(VisualStrings,9583772,378,259)
{
Lines=#9:Заголовок|
Width=67
}
Add(VisualStrings,6398593,364,231)
{
Lines=#15:Текст сообщения|
Width=144
}
Add(Label,2996465,420,315)
{
Left=45
Top=35
Height=28
Font=[MS Sans Serif,14,0,0,1]
Caption=""
}

карма: 22

0
Ответов: 457
Рейтинг: 84
#30: 2022-01-08 18:24:17 ЛС | профиль | цитата
nesco писал(а):
а на кой черт

Абсолютно не нужен. Но в твоём варианте код "раздут" аж в 3 раза (300%) и составляет 3 строчки вместо одной

InputBox имеет значительно больше параметров и иногда проше делать всё в FormatStr
https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/inputbox-function

Редактировалось 3 раз(а), последний 2022-01-08 18:33:51
карма: 10

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)