Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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 и использую его. Благодаря этому заменил подписи на кнопках на человеческие и добавил галку «больше не спрашивать».



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.048 c
15-1173642160
Andy BitOff
2007-03-11 22:42
2007.04.08
Подивитесь! Гитарный виртуоз.


15-1174002488
Композитор
2007-03-16 02:48
2007.04.08
Одна песня - это сколько?


15-1173855965
=Teddy=
2007-03-14 10:06
2007.04.08
Как извлечь код проекта из .EXE


9-1146952603
Медвед
2006-05-07 01:56
2007.04.08
Чем отличаются различные версии OpenGL?


8-1151435254
DevilDevil
2006-06-27 23:07
2007.04.08
Звуковой Движок





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский