• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Messagebox

  • Автор темы Jeefo
  • Дата начала
Статус
Закрыто для дальнейших ответов.
J

Jeefo

потребовалось вывести на экран сообщение с вопросом, сохранять файл или нет. воспользовался MessageBox. я умею описывать кнопки, которые должны быть размещены на этом message box, умею описывать иконки. а вот как описать одновременно и иконку, и кнопки, никак не дойдет ;) в справке дельфи порылся, увы пример там только с кнопками. подскажите пожалуйсто, в частности мне требуется message box с MB_YESNO и MB_ICONQUESTION
 
J

Jeefo

пробовал просто перечислить через запятую после описания кнопок, то есть
Application.MessageBox('Сохранить файл?', 'Сохранить?', MB_YESNO, MB_ICONQUESTION);
но компилятор ругнулся на неверное количество параметров. пробовал написать слитно, через _, вобщем всеми способами ;) ошибка при компиляции. ну на болшее моей фантазии не хватило, полез в справку. в справке дельфи есть просто описание параметров message box, есть примерчик, но там походу только кнопка. поэтому обратился к вам
 
J

Jeefo

Для: sax_ol
большоеспасибо за помощь
 
R

root

Для: Jeefo


This parameter can be a combination of flags from the following groups of flags
 
J

Jeefo

Для: root

встретил практически то же самое в Help -> Windows SDK в Delphi, но наверное не обратил внимания :) за ссылку спасибо, пожалуй добавлю в закладки, пригодится
 
R

root

Для: sax_ol
незнаю на сколько прав я но это производная
Код
Код:
function TApplication.MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;
var
ActiveWindow: HWnd;
WindowList: Pointer;
MBMonitor, AppMonitor: HMonitor;
MonInfo: TMonitorInfo;
Rect: TRect;
FocusState: TFocusState;
begin
.......
GetWindowRect(Handle, Rect);
SetWindowPos(Handle, 0,
MonInfo.rcMonitor.Left + ((MonInfo.rcMonitor.Right - MonInfo.rcMonitor.Left) div 2),
MonInfo.rcMonitor.Top + ((MonInfo.rcMonitor.Bottom - MonInfo.rcMonitor.Top) div 2),
0, 0, SWP_NOACTIVATE or SWP_NOREDRAW or SWP_NOSIZE or SWP_NOZORDER);
end;
WindowList := DisableTaskWindows(0);
FocusState := SaveFocusState;
if UseRightToLeftReading then Flags := Flags or MB_RTLREADING;
try
[b]Result := Windows.MessageBox(Handle, Text, Caption, Flags);[\b]
finally
.........
 
A

Ashot

Скажите пожалуйста, как сделать: у меня в программе есть кнопка, которая сохраняет файл. Если при закрытии файл не был сохранен, выскочит этот самый MessageBox, и как мне сделать, чтобы при согласии на сохраненние выполнялось то же, что и при нежатии на кнопку, не переписывая код?

в смысле "нАжатии"
 
M

morpheus

<!--QuoteBegin-Ashot+12:12:2007, 17:22 -->
<span class="vbquote">(Ashot @ 12:12:2007, 17:22 )</span><!--QuoteEBegin-->что и при нежатии на кнопку, не переписывая код?
[snapback]89631" rel="nofollow" target="_blank[/snapback]​
[/quote]
никак, не переписівая
 
E

European

Сделать сохранение отдельной функцией, и вызывать эту функцию и в обработчике кнопки, и после выбора в MessageBox.
Надеюсь, я правильно понял вопрос :rolleyes:
 
E

European

Для: sax_ol
Кхм... На мой взгляд, это лечение зубов через сам знаешь что
 
E

European

<!--QuoteBegin-sax_ol+12:12:2007, 18:37 -->
<span class="vbquote">(sax_ol @ 12:12:2007, 18:37 )</span><!--QuoteEBegin-->где тут оно самое?
[snapback]89649" rel="nofollow" target="_blank[/snapback]​
[/quote]
Извини, если грубо сказал... В коде этого нет, просто сам подход не очень, ИМХО. Ты же в своих проектах так не делаешь
 
A

Ashot

Большое спасибо. Пойду попробую. Глядишь - выйдет чего
 
S

SNike

Еще можешь посмотреть в сторону MessageDlg
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!