Здравствуйте уважаемые эксперты !!! 1) Вот до недавнего времени у меня работал следующий код. Это виртуальное нажатие комбинации Ctrl-Z (нашел в Инете). То есть при нажатии на пункт меню отменяется последнее действие, но оно почему-то перестало работать, то есть вообще никакой реакции. Для справки: у формы свойство KeyPreview установлено в True, Windows 98, Delphi 6. Помогите советом как быть. procedure TForm2.mnuCancelClick(Sender: TObject); begin Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0),0,0); Keybd_Event(Ord('Z'), MapVirtualKey(Ord('Z'), 0),0,0); Keybd_Event(Ord('Z'), MapVirtualKey(Ord('Z'), 0), KEYEVENTF_KEYUP,0); Keybd_Event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); end; 2) Теперь еше справка начала парить мозги. Выделяю какой-нить
оператор и нажимаю F1, справка запускается, но минимизируется и ее никак не удается восстановить. Такое же наблюдается если я вызываю (у меня Делфа руссифицированная): "Помощь" -> "Содержание" -> "Указатель" и набираю слово для поиска. Заранее большое спасибо !!!
Здравствуйте, SATAN aka NAPALM! 2. Скажу одно - руссифицированые пиратами Delphi - отстой. Delphi не так сложен для понимания, чтобы пользоваться руссификаторами. Ответ отправлен: 27.08.2003, 10:05 Отправитель: Marouder
Вопрос № 869
Здравствуйте, уважаемые эксперты! Большое спосибо всем, кто ответил на мой вопрос 867! :-) ... к сожалению, вы мне не помогли ...:-( Попробуем еще раз! Вопрос 867: >Какой функцией или процедурой можно получить размер файла, >не открывая его? Не получается, когда к файлу блокирован >доступ. Я считаю, что определить размер заблокированного файла можно. Ниже пример. ------------------------------- Допустим есть у меня файл hiberfil.sys в корне с установленной WinXP. Этот файл заблокирован. Я не могу получить его размер с помощью функций типа FileSize, FileSeek, GetFileSize, потому как им нужен Handle или файловая переменная открытого файла. А файл я открыть не могу! Но есть выход! Процедуры FindFirst и FindNext! Если я выполню процедуру FindFirst(Path, faAnyFile, SearchRec) , где Path - полный путь к этому файлу,
то я получу его размер в SearchRec.Size ! ------------------------------ Внимание вопрос! Как получить размер заблокированного файла больше 2Gb? Ведь TSearchRec.Size - имеет ти Integer, а мне нужен Int64!
Доброе время суток, Byter! > Я считаю, что определить размер заблокированного файла можно. Ниже пример. Ну-ну... Я же тебе так и писал! (Попробуй осуществлять его поиск по его полному имени, тогда будет найдет только он (ну и еще, возможно, такой же каталог, если он есть)) > Ведь TSearchRec.Size - имеет ти Integer, а мне нужен Int64! Используй функции самого win32 - FindFirstFile, FindNextFile и WIN32_FIND_DATA - в ней размер файла определяется 64-мя битами.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 27.08.2003, 02:16 Отправитель: Bob Johnson
Вопрос № 870
Как спроектировать тень (спрайт) на какой-то карявый ланшафт
Доброе время суток, DJ B! Берешь каждую вершину, образующую "корявый ландшафт", проводишь из нее линию в источник света, попутно определяя точку пересечения этой линии с текстурой тени. После чего соспоставляешь данной точке полученную текстурную координату. Интерполяцию текстуры осуществляет уже 3д ускоритель, поэтому тень будет растянута или сжата, если это нужно (в зависимости от направления нормали полигона ландшафта и вектора на источник света). Получить текстуру тени от реального объекта возможно с помощью stencil буфера, путем отрисовки объекта в текстуру с помощью ортогонального проецирования. Это означает, что источник света будет бесконечно далеким от объекта.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 27.08.2003, 16:31 Отправитель: Bob Johnson
Вопрос № 871
Эксперты добрый день. У меня возникла такая проблема, мне задали такую задачу, к которой я не могу подобраться, даже не знаю с чего начать, не поможете ли вы мне (новичку по Delphi)? Задача вот такая: Методом статических испытаний вычислить площадь фигуры между двумя кривыми.При заданной гарантийной вероятности Pr=0,9 получить зависимость доверительного интервала ошибки вычисления площади от числа опытов. Уравнение первой кривой f1(x)=2+sin(2Пx); Уравнение второй кривой f2(x)=exp(x^2); Область в которой находится фигура : Xmin=-1,Xmax=1,Ymin=-1,Ymax=3; Число опытов начальное 1000,конечное 9000,шаг изменения 1000. Тут нужно решать её методом Монте-Карло(метод статических испытаний).Помогите пожайлуста её сделать, очень срочно нужно, заранее благодарен.
Приветствую Вас, Николай! Делаешь это так. 1) Сначала простой для себя примерно график эих функций на заданном отрезке. 2) Тысячу раз генерируешь два случайных числа X и Y Xmin<=X<=Xmax и Ymin<=Y<=Ymax. Если точка (X,Y) попадает в фигуру то есть находится между этими кривыми, то добаляешь к числу попавших 1. 3) Делишь число попавших на число испытаний и умножаешь на площадь прямоугольника, ограниченого Xmin,Xmax.Ymin,Ymax. Получаешь примерную площадь фигуры площадь фигуры. Повторяешь с другим числом опытов. Зависимость доверительного интервала выведешь как-нибудь, сам толком не въезжаю что это такое. Если нифига не понял пиши мне на мыло, попытаюсь объяснить подробнее. Если лень не одолеет может даже кусок кода напишу.
Ответ отправлен: 27.08.2003, 13:42 Отправитель: Delphist
Вопрос № 872
Здравствуйте, ув. эксперты. Как заставить форму (Delphi6) перерисоваться, но не вызвать при этом событие OnShow ? Проблема в том, что на OnShow посажено заполнение комбобоксов, на OnCreate их сажать не хочу, потому что при заполнении нескольких форм вновь введенные данные при последующих заполнениях в комбобоксах не видны. А затем возникла задача сделать изменение данных - вывожу в эдиты и комбо данные, подлежащие изменению, с эдитами все в порядке, а комбо после ShowModal благополучно наполняются значениями, естественно, уничтожая введенные мной. Делать отдельную идентичную форму для изменений - расточительно (там 10 комбо и 5 эдитов). И еще один вопрос, из первого вытекающий: я бы сделал заполнение комбо в OnCreate, если бы мог сделать форму avaiable. Но почему-то у меня работают только автокрит формы. Никто с таким не сталкивался? Раньше Delphi
позволял создать 4 avaiable формы, и лишь затем начинал выдавать access violation, а теперь не позволяет создать ни одной. Спасибо за ответы (если они будут).
Приветствую Вас, Loko! 1. Заполняй на OnCreate, а форму убери из списка Auto Create и создавай сам динамически (тем более, что для Modal форм - это самый лучший вариант). Это выглядит так:
var f : TMyForm; begin f := TMyForm.Create (self); f.ShowModal (); ... f.Free (); end;
Или что-то подобное, сейчас не уверен, т.к. последнее время пишу на билдере. 2. При этом, после Create и перед ShowModal ты можешь установить в контролы на форме все нужные значения. Я обычно так и делаю - в OnCreate устанавливаются значения по умолчанию, а если форма открывается для редактирования, то перед ShowModal в контролы заносятся редактируемые значения.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.08.2003, 13:19 Отправитель: Bob Johnson Отвечает Артём Шегеда
Доброе время суток, Loko!
Access voilation возникает из-за того, что при создании какой-либо формы нет никакой гарантии, что другая форма уже создана (это в особенности справедиво для случая MainForm: в обработчике MainForm.OnCreate ни одна из других статических форм не существует). Поэтому заполнение полей формы следует переложить на саму форму. Кроме того, в своих программах я использую такой приём:
procedure TForm1.OnApplicationIdle(Sender: TObject; var Done: Boolean); begin Done := true; Application.OnIdle := nil; // Все мои действия end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := OnApplicationIdle; end; Это гарантирует, что на момент выполнения обработчика OnApplicationIdle все статические формы существуют.
Ответ отправлен: 28.08.2003, 17:44 Отправитель: Артём Шегеда
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.