Вниз
Скачать: CL | DM;

Не могу понять разработчиков 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 вся ветка

Скачать: CL | DM;



Память: 0.54 MB
Время: 0.028 c
15-1173676057
ryslan56
2007-03-12 08:07
2007.04.08
Делфи и Сссоздание сайтов


3-1169105130
Dmitriy_info
2007-01-18 10:25
2007.04.08
Синтаксис SQL


2-1173891010
Roman_S
2007-03-14 19:50
2007.04.08
форма после завершения процесса не разворачивается


15-1173880304
lak-b/proxy/
2007-03-14 16:51
2007.04.08
помогите с алгоритмом


15-1173663010
SerJaNT
2007-03-12 04:30
2007.04.08
Access violation at address...




   Наверх