Здравствуйте, эксперты. Помогите реализовать слудующую штуку: Выскакивает Confirm Message dialog (это который со знаком вопроса) с двумя кнопками - Да и Нет. При нажатии на Да происходит одно действие, а при нажатии на Нет - другое. Вызвать диалог - не проблема, а вот как быть с этими Да и Нет - без понятия. Заранее спасибо.
Ответ отправлен: 29.08.2003, 07:22 Отправитель: URiS Отвечает ART_43
Здравствуйте, Ybr! var i:integer; begin i:=MessageDlg('Да или Нет?', mtConfirmation, [mbYes,mbNo], 0); if i=mrYes then ShowMessage('Да') else if i=mrNo then ShowMessage('Нет'); end;
Ответ отправлен: 28.08.2003, 09:10 Отправитель: ART_43 Отвечает Bob Johnson
Доброе время суток, Ybr! Когда ты вызываешь диалог, функцией MessageBox, например, то она тебе возвращает результат: IDOK - нажата кнопка OK, IDCANCEL - Cancel, IDYES - yes и т.д.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 13:14 Отправитель: Bob Johnson Отвечает Cybernetic Creature
Доброе время суток, Ybr! Ya ne znayu kakoy iz sposobov vizvaniya dialogov vy polzuetes poetomu skaju oba sposoba. 1) function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; parametri ya obyasnat ne budu na skaju kak nado obrashatsya nije dayu kod procedure TForm1.New1Click(Sender: TObject); var Regem:integer; begin if ((NameFile='Untitled')and(memo1.Lines.Text<>''))or((NameFile<>'Untitled')and Deyishme) then begin regem:=MessageDlg('Do you want save the changes',mtConfirmation,mbYesNoCancel,0); case regem of IDNO:begin NameFile:='Untitled'; Memo1.Lines.Clear end; IDYES:begin save1.Click; Memo1.Lines.Clear end; IDCANCEL:ABORT end; end{if} else begin memo1.Lines.Clear;NameFile:='Untitled' end; Form1.Caption:=NameFile+'
- Notepad' end; eto tipa ya NOTEPAD sdelal odna iz pervix rabot tak shto ne smeysa. kak vidish etot sposob vozvrashaet znacheniya ID* eto constanti opisannie v WINDOWS.PAS lez i tam smotri tam yesho i IDABORT IDRETRY IDIGNORE i td i tp yest posmotri 2) sposob leqkiy function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; on toje vozvrashaet te je znacheniya yesli chto to ne ponya sovetuyu samomu kopatsya v WINDOWS.PAS function MessageBox ... external DIALOGS.PAS function MessageDlg,function MessageDlgPos, i function MessageDlgPosHelp
Приложение: Ответ отправлен: 28.08.2003, 16:28 Отправитель: Cybernetic Creature
Добрый день, DJ B! Простой буфер, где для каждой точки на экране отведено 8 бит. При этом при отрисовки точки на экран со stencil буфером может быть выполнена одна из операций: увеличить на 1, уменьшить на 1, не изменять и т.д. Применяется для всяких заморочек, типа stencil shadow (то, что я тебе писал) - т.е. при отрисовке полигонов значение в stencil увеличивается на 1. Получается что там, где есть хоть один (или больше) полигонов в нем будет не 0, а там, где нет ни одного полигона - будет 0. Дальше, задав stencil test можно использовать значения этого буфера автоматически или вытащить его и работать с ним самому. Более подробней смотри Direct X 8 или 9 SDK - там это все описано (и есть хорошие примеры).
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 13:13 Отправитель: Bob Johnson
Вопрос № 875
привет! у меня такая проблема: когда я компилирую и запуская ехе из под Дельфи (версия 6 если важно) по F9 вылазит такое сообщение об ошибке: Project 1.exe raised exception class EOleException with message 'Ошибка неизвестного типа'. Process stopped. Use Step or Run to continue. если же запустить ехе из проводника, то всё ок - и чудестно работает... из-за чего может быть такая лажа? и как её побороть.... подскажите, плз, а то надо отлаживать прогу, а я её из под Дельфи запустить не могу
Добрый день, Дмитрий! У меня такое было с ADO, вроде никаких ошибок не должно было быть. Я просто убрал галочку в Stop on Delphi Exceptions, а когда нужно было отловить какую-нибудь ошибку, доходил до нужного места и вертал галочку. Ответ отправлен: 29.08.2003, 09:40 Отправитель: ART_43 Отвечает kvINT
Доброе время суток, Дмитрий! Это происходит, когда Delphi встречает исключения. Чтобы отключить такое ее поведение - Project->Options->Compiler. Там убери галочки с соответствующих пунктов (по-моему I/O checking, сейчас проверять некогда). Ответ отправлен: 28.08.2003, 16:50 Отправитель: kvINT Отвечает Артём Шегеда
Доброе время суток, Дмитрий!
Очевидно, что ты (или какая-то компонента) используешь компоненты OLE (MS Word, MS Excel, ChartFX и пр.), и одна из них вызывает такое исключение - его-то и показывает отладчик Delphi (при этом открывается окно исходного кода или окно CPU, если исходный код не доступен). Если приложение не выдаёт окно с информацией об этом исключении - значит, исключение было тихо "погашено" самой компонентой (или твоей программой). Чтобы отладчик не сообщал о возникающих исключениях воспользуйся соответствующей опцией (Tools/Debugger options/Language exceptions/Stop on Delphi exception) Ответ отправлен: 28.08.2003, 18:28 Отправитель: Артём Шегеда Отвечает Bob Johnson
Здравствуйте, Дмитрий! Это возможно из-за того, что в одном из компонентов или модулей, которые ты подключил к проекту возникает исключение при инициализации. При этом в нем есть блок try, из-за чего он в принципе сам его отлавливает и что-то с ним делает. Но дебугер дельфи всегда по умолчанию отлавливает исключение раньше, чем обработчик try, из-за чего появляется это окно. Ты можешь просто нажать "ОК", затем F9 и программа продолжит выполнение или в настройках дельфи есть списко классов исключений, на которые встроенный отладчик не должен обращать внимания - добавь это исключение в список.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 15:08 Отправитель: Bob Johnson
Вопрос № 876
Здравствуйте, уважаемые эксперты! Большое спасибо всем ответившим на мой вопрос №869!(Бобу Джонсону) Вы мне очень помогли!(Ты) Еще вопросик. Как мне перехватить нажатие на кнопку свернуть на форме? Заранее благодарен!
Доброе время суток, Byter! Обрабатывать сообщение WM_SIZE, наверное. Описание в приложении.
Приложение: Ответ отправлен: 29.08.2003, 10:28 Отправитель: Marouder Отвечает Артём Шегеда
Здравствуйте, Byter!
В примере - фрагмент одной моей программы, в которой при сворачивании формы приложение убирается c панели задач (т.н. сворачивание в трей) с использованием моей компоненты TArtTrayIcon.
type TForm1 = class(TForm) ArtTrayIcon1: TArtTrayIcon; procedure FormCreate(Sender: TObject); private procedure ApplicationMinimize(Sender: TObject); end; //... procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMinimize := ApplicationMinimize; end; procedure TForm1.ApplicationMinimize(Sender: TObject); begin ArtTrayIcon1.HideApplication; end;
Ответ отправлен: 28.08.2003, 20:03 Отправитель: Артём Шегеда
Вопрос № 877
Здраствуйте уажаемые эксперты.У меня такой вопрос. Программа обращается к базе данных Access. Если запускать программу вместес Windows то она пишет что невозможно открыть файл .mdb, а если апустить ее потом то все работает?
Добрый день, darkb! Видимо на момент запуска программы не инициализировался ADO или ODBC. Попробуй найти причину (хотя это трудно) - тогда просто поставь при запуске программы задержку, например в 10 с или открывай базу до тех пор, пока не получится открыть (с интервалом секунда). Второй вариант (открывать до тех пор...) предпочтительней, т.к. имеет большие шансы на успех.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 15:11 Отправитель: Bob Johnson
Вопрос № 878
У меня есть "остов" таблицы в формате dbf, в которую необходимо внести данные и сохранить под нужным именем. Как ее сохранить под другим именем?
Здравствуйте, Александр! Проще всего вначале скопировать обычной процедурой (типа CopyFile), а уже затем вносить данные в новую таблицу.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 29.08.2003, 15:13 Отправитель: Bob Johnson Отвечает ART_43
Здравствуйте, Александр! Закрываешь базу и переименовываешь файл во что угодно. Ответ отправлен: 29.08.2003, 15:25 Отправитель: ART_43
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.