Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизНе могу понять разработчиков VCL Найти похожие ветки
← →
novill © (2007-03-12 14:55) [0]Есть простая функция
showmessage
с одним параметром и очень простым действием.
Зачем ее реализовывать через дикую цепочку вложенных вызовов???ShowMessage(const Msg: string) -> ShowMessagePos(Msg, -1, -1) -> MessageDlgPos(Msg, mtCustom, [mbOK], 0, X, Y) -> MessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, "") -> CreateMessageDialog(Msg, DlgType, Buttons)
И заканчивается это сотней строчек кода.
Есть же апишныеMessageBox
иMessageBoxEx
← →
tesseract © (2007-03-12 14:58) [1]
> Зачем ее реализовывать через дикую цепочку вложенных вызовов?
> ??
Уменьшают объём занимаемой памяти.
← →
Сергей М. © (2007-03-12 15:01) [2]
> Есть же апишные
"апишные" для КАКОЙ ОС ?
Вдумайся)
← →
Ega23 © (2007-03-12 15:01) [3]
if not (MessageBox(Handle, PChar("Добавить данные об автомобиле?"), PChar("Внимание!"), MB_OKCANCEL or MB_ICONINFORMATION)=IDOK) then Exit;
Можно и так. И даже красивше будет. Вот только Handle обязательно нужен.
← →
Игорь Шевченко © (2007-03-12 15:02) [4]
> Вот только Handle обязательно нужен.
Можно 0 поставить
← →
DiamondShark © (2007-03-12 15:03) [5]
> Зачем ее реализовывать через дикую цепочку вложенных вызовов?
> ??
Верно, незачем.
Поэтому она и не реализована через дикую цепочку, а реализована через один вызов ShowMessagePos.
← →
Kerk © (2007-03-12 15:03) [6]> [4] Игорь Шевченко © (12.03.07 15:02)
Вместо caption и кнопок тоже можно 0 ставить. Чем часто пользуюсь :))
← →
Ega23 © (2007-03-12 15:06) [7]
> Можно 0 поставить
Блин. Я - дебил.
← →
novill © (2007-03-12 15:06) [8]> [1] tesseract © (12.03.07 14:58)
ага )))
> [2] Сергей М. © (12.03.07 15:01)
> "апишные" для КАКОЙ ОС ?
Для всех виников начиная с 95, в CLX реализация showmessage другая. Или ты что-то еще имел в виду?
> [3] Ega23 © (12.03.07 15:01)
Application.handle там по-любому передается
← →
Ega23 © (2007-03-12 15:07) [9]
> Application.handle там по-любому передается
Не "по любому". Application-а может и не быть.
← →
Сергей М. © (2007-03-12 15:09) [10]
> novill © (12.03.07 15:06) [8]
> Для всех виников начиная с 95, в CLX реализация showmessage
> другая.
Кто такие "виники" ?
Какое отношение эти "веники" имеют к CLX ?
← →
novill © (2007-03-12 15:11) [11]> [9] Ega23 © (12.03.07 15:07)
> Не "по любому". Application-а может и не быть.
Не может не быть - он в модуле Forms, который uses в модуле Dialogs, в котором объявлена все функции цепочки.
← →
Ega23 © (2007-03-12 15:14) [12]
> Не может не быть - он в модуле Forms, который uses в модуле
> Dialogs, в котором объявлена все функции цепочки.
И что?
← →
novill © (2007-03-12 15:14) [13]> [10] Сергей М. © (12.03.07 15:09)
Ты писал:
> [2] Сергей М. © (12.03.07 15:01)
>
> > Есть же апишные
>
>
> "апишные" для КАКОЙ ОС ?
>
> Вдумайся)
Апишные для windows 95, 98, NT, 2000, XP
Почему не воспользоваться встроенными функциями, если все равно код пишется для Windows?
← →
Сергей М. © (2007-03-12 15:24) [14]
> novill © (12.03.07 15:14) [13]
> если все равно код пишется для Windows?
Это при CLX-то ?!
← →
novill © (2007-03-12 15:35) [15]> [14] Сергей М. © (12.03.07 15:24)
НЕТ!
Код пишется для Windows, используется VCL.
← →
novill © (2007-03-12 15:37) [16]> [12] Ega23 © (12.03.07 15:14)
К моменту вызова он уже создан.
← →
Ega23 © (2007-03-12 15:51) [17]
> К моменту вызова он уже создан.
Так, всё. Я сегодня что-то торможу нипадецки.
← →
Сергей М. © (2007-03-12 15:51) [18]
> И заканчивается это сотней строчек кода
Чем тебя это смущает ?
← →
novill © (2007-03-12 16:03) [19]> [18] Сергей М. © (12.03.07 15:51)
Почему не использовать апишные функции MessageBox?
← →
Сергей М. © (2007-03-12 16:05) [20]
> novill © (12.03.07 16:03) [19]
Вместо какой конкретно VCL-ф-ции ?
← →
novill © (2007-03-12 16:11) [21]> [0] novill © (12.03.07 14:55)
> ShowMessage
← →
Сергей М. © (2007-03-12 16:16) [22]
> novill © (12.03.07 16:11) [21]
А о принципиальных отличиях в реализациях ShowMessage и MessageBox ты в курсе ?
← →
Empleado © (2007-03-12 16:18) [23]
> novill © (12.03.07 16:11) [21]
Возможно для того, чтобы иметь возможность реализовать диалог с пользователем, и приостановить выполнение кода до соответствующего ожидаемого действия со стороны оного?
← →
Игорь Шевченко © (2007-03-12 16:21) [24]MessageBox мерзко пищит в отличие от ShowMessage
← →
Ega23 © (2007-03-12 16:23) [25]Откровенно говоря, ShowMessage использую только в исключительных случаях. Например - для вывода какой-нибудь Debug-информации.
В остальном - MessageBox
← →
homm © (2007-03-12 16:27) [26]> MessageBox мерзко пищит в отличие от ShowMessage
Наверняка флагами убирается. Я просто такой проблемой не задавался. Уменя звуковая схема "без звука" в винде, ибо бесит.
← →
novill © (2007-03-12 16:32) [27]> [22] Сергей М. © (12.03.07 16:16)
>
> > novill © (12.03.07 16:11) [21]
>
>
> А о принципиальных отличиях в реализациях ShowMessage и MessageBox ты в курсе ?
Расскажи, об этом и вопрос!
← →
Игорь Шевченко © (2007-03-12 16:36) [28]homm © (12.03.07 16:27) [26]
> Наверняка флагами убирается.
Вроде не убирается
← →
Сергей М. © (2007-03-12 16:40) [29]
> novill © (12.03.07 16:32) [27]
ShowMessage() открывает модальную (на уровне тек.приложения) VCL-форму. Со всеми вытекающими из этого возможностями по обработке специфичных для VCL сообщений.
← →
novill © (2007-03-12 17:03) [30]> [28] Игорь Шевченко © (12.03.07 16:36)
> homm © (12.03.07 16:27) [26]
>
>
> > Наверняка флагами убирается.
>
>
> Вроде не убирается
Принципиально убрать можно.
Например вот такMessageBox(0,Pchar("hi"),0,$00000070);
Хотя если быть честным, то стоит пользоватьMB_USERICON
- тогда звука нет но сообщение сдвигается в ожидании пользовательской картинки :)
> [29] Сергей М. © (12.03.07 16:40)
> возможностями по обработке специфичных для VCL сообщений.
ну разве что для этого... Обычно эта функция используется для банального вывода сообщений пользователю, и все ее возможности не востребованы.
← →
GrayFace © (2007-03-12 17:04) [31]В VCL-вском MessageDlg возможны комбинации типа [mbOK, mbAbort].
> ShowMessage() открывает модальную (на уровне тек.приложения) VCL-форму. Со всеми вытекающими из этого возможностями по обработке специфичных для VCL сообщений.
Все равно он не рассчитан на то что в процессе исполнения с ним будут "общаться", т.к. модальный.
← →
vuk © (2007-03-12 17:13) [32]У VCL-ной функции есть один минус. Заголовки на кнопках всегда по-английски. У API-шной функции - зависят от локализации Windows.
← →
homm © (2007-03-12 17:17) [33]> У VCL-ной функции есть один минус. Заголовки на кнопках
> всегда по-английски. У API-шной функции - зависят от локализации
> Windows.
Ненавижу когда мне показывают тупые сообщения с английской копкой OK!! ]:>
← →
novill © (2007-03-12 17:20) [34]> [32] vuk © (12.03.07 17:13)
> У VCL-ной функции есть один минус. Заголовки на кнопках всегда по-английски.
Насоклько я помню, это исправляется заменой файла consts.pas
← →
Чапаев © (2007-03-12 18:20) [35]> У VCL-ной функции есть один минус. Заголовки на кнопках
> всегда по-английски.
Гм... Если ты создаёшь локализированные версии софта, то какая проблема заменить надписи? Если не создаёшь, сильно ли юзера спасёт при работе с англоязычной программой кнопка "Отмена" вместо "Cancel"?
← →
vuk © (2007-03-12 19:03) [36]to Чапаев © (12.03.07 18:20) [35]:
>Если ты создаёшь локализированные версии софта, то какая проблема
>заменить надписи?
Если пользоваться API-шной, то менять не нади ничего. Совсем. Все точно соответствует локализации Windows.
← →
Чапаев © (2007-03-12 19:10) [37]> [36] vuk © (12.03.07 19:03)
Хмык. Если локализацию пишешь, то проблема ли добавить ещё одну строчку для "Отмены"?
← →
vuk © (2007-03-12 19:25) [38]Ну... Там же не только "Отмена"... И опять же, зачем делать работу, которую уже проделали?
← →
Чапаев © (2007-03-12 19:29) [39]Учитывая, что я точно как в [25] действую, не знаю даже, что сказать. &-)
← →
Gero © (2007-03-12 20:46) [40]Написал свой MessageBox и использую его. Благодаря этому заменил подписи на кнопках на человеческие и добавил галку «больше не спрашивать».
← →
Gero © (2007-03-12 20:47) [41]А начсет локализации MessageBox — выглядит не очень хорошо, когда вопрос на одном языке, а варианты ответа к нему на другом.
← →
Суслик © (2007-03-12 20:50) [42]я тоже написал свой вариант MessageBox. добавил:
1. свои подписи
2. больше не спрашивать.
3. таймер обратного отсчета.
← →
Gero © (2007-03-12 21:00) [43]> [42] Суслик © (12.03.07 20:50)
> 3. таймер обратного отсчета.
В такой штуке необходимость возникает очень редко. Да и вобще, опасная это вещь, думаю, можно перепроектировать так, чтобы обойтись без этого.
← →
Чапаев © (2007-03-12 21:52) [44]> [41] Gero © (12.03.07 20:47)
Ну вот примерно об этом я и говорил...
← →
Чапаев © (2007-03-12 21:53) [45]> [43] Gero © (12.03.07 21:00)
Не знаю... Головач в своём "ПИ-дизайне" рекомендует использовать там, где уместны варианты по-умолчанию.
← →
vuk © (2007-03-12 21:54) [46]to Gero © (12.03.07 21:00) [43]:
>В такой штуке необходимость возникает очень редко.
Это да. Мне, вот, единственный раз, когда такое понадобилось - это диалоги в интерактивном киоске (каталог товаров, продажа) с сенсорным экраном. Но там один хрен пришлось ваять свой аналог MessageBox, т.к. и интерфейс совсем другой и окна нестандартные.
← →
Gero © (2007-03-12 21:57) [47]> [45] Чапаев © (12.03.07 21:53)
Головач тоже ошибается.
← →
MsGuns © (2007-03-12 23:12) [48]>homm © (12.03.07 17:17) [33]
>Ненавижу когда мне показывают тупые сообщения с английской копкой OK!! ]:>
Лучше уж американский вариант с "Waw !!!"
← →
Piter © (2007-03-12 23:48) [49]Ega23 © (12.03.07 15:06) [7]
Блин. Я - дебил
почему дебил? Если поставить 0 - это не совсем тот MessageBox - он не заблокирует окно с handle, то есть будет отображет бокс не в модальном режиме, это обычно не совсем то, что хочется, такой бокс может просто "потеряться" под другими окнами, что зачастую и происходит.
← →
Игорь Шевченко © (2007-03-13 00:10) [50]novill © (12.03.07 17:03) [30]
> MessageBox(0,Pchar("hi"),0,$00000070);
Это зависит от звуковой схемы. Будет звук от события Open
← →
vuk © (2007-03-13 00:31) [51]Про локализацию всяких кнопок. Музыкой навеяло...
Как-то раз, при инсталляции не помню уже чего, в мастере установки на кнопке завершения наблюдалась многозначительная такая надпись: "Финский".
← →
Германн © (2007-03-13 00:49) [52]
> vuk © (13.03.07 00:31) [51]
>
> Про локализацию всяких кнопок. Музыкой навеяло...
> Как-то раз, при инсталляции не помню уже чего, в мастере
> установки на кнопке завершения наблюдалась многозначительная
> такая надпись: "Финский".
Ты хоть что-то прочитать смог! А я помню в подобной ситуации модальную форму с двумя кнопками. Обе содержат бессмысленный набор символов. Внимание вопрос! Какую из них нажимать? :)
← →
Box (2007-03-13 01:11) [53]for i := 0 to 200 do
if (i mod 16) =0 then MessageBox(0, "", PChar(IntToStr(i)), i);
Начина с i=80 и выше больше не "пикает"....
← →
Чапаев © (2007-03-13 07:52) [54]> [53] Box (13.03.07 01:11)
Оно поняло, с кем связалось... %-)
← →
novill © (2007-03-13 09:26) [55]> [53] Box (13.03.07 01:11)
а ты все звуки в звуковой схеме включил?
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.059 c