Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизМожно ли в ЧУЖОМ MDI-приложении запретить закрытие форм через Найти похожие ветки
← →
BlackTiger (2003-12-18 16:23) [0]Возникла такая потребность, чтобы в одном "чужом" приложении пользователь не мог закрыть MDIChild-окно простым нажатием "крестика" в углу окна. Там происходит кое-какая бяка при таком закрытии. Существует ли такая возможность? Чую, что пахнет вякими хуками, но никогда с ними не работал.
Есть же проги, которые изменяют реакцию на эти действия - например, принудительно сворачивают окно в трей вместо закрытия. Тут только дело в том, что окно - MDIChild.
Подскажите, плиз. Еще это должно работать на всех виндах (98 и далее).
← →
BlackTiger (2003-12-18 17:39) [1]И почему у меня не работает GetWindowXXXXXXXX
function TForm1.enumListOfTasks(hWindow: hWnd): Bool;
var
HoldString: PChar;
WindowStyle: Longint;
//IsAChild: Word;
IsAChild: Long;
begin
GetMem(HoldString, 256);
WindowStyle := GetWindowLong(hWindow, GWL_STYLE);
WindowStyle := WindowStyle and Longint(WS_VISIBLE);
//IsAChild := GetWindowWord(hWindow, GWW_HWNDPARENT); //ОШИБКА! нет такой константы GWW_HWNDPARENT
IsAChild := GetWindowLong(hWindow, GWL_HWNDPARENT);
GetWindowText(hWindow, HoldString, 255);
if StrPas(HoldString) <> "" then
ShowMessage((IntToStr(hWindow) + ":" + StrPas(HoldString)));
Result := true;
end;
" enumWindows(@TForm1.EnumListOfTasks, Longint(Self));" ничего не выдает!
Что я делаю не так. Взято из примеров.
← →
BlackTiger (2003-12-18 18:57) [2]Народ! Ну может кто-нить скинет мне на мейл рабочий примерчик с сырцами? Не могу понять, что делаю не так.
← →
Игорь Шевченко (2003-12-18 23:20) [3]Если не секрет, из каких примеров взято ?
Если не больший секрет, в связи с чем такая задача:
> чтобы в одном "чужом" приложении пользователь не мог закрыть
> MDIChild-окно простым нажатием "крестика" в углу окна.Там происходит кое-какая бяка при таком закрытии
---
LMD
← →
BlackTiger (2003-12-19 11:28) [4]2 Игорь Шевченко:
Взято из интернетовских примеров. Сказано было, что должно работать.
А необходимость возникла вот из-за чего. В одной финансовой системе обнаружился небольшой косячек, связянный с тем, что при закрытии формы "крестиком" происходит откат всех изменений документа. Еще в этой форме есть кнопки "OK" и "Cancel". С ними все нормально. Нужно чтобы пользователь пользовался ТОЛЬКО этими кнопками, т.к. их можно запретить для конкретного пользователя. Как бы попроще объяснить...
В общем так. Пользователь открывает документ на продажу, в нем есть строка на 10 единиц. Эти единицы уже числятся как зарезервиронные, т.е. продать их в другом документе нельзя. Теперь пользователь В СТРОКЕ документа меняет кол-во на 5 единиц. Уже на этом этапе изменяется зарезервированное кол-во и 5 штук становятся доступными. В это время другой пользователь быстренько делает свой документ на эти 5 штук и продает их. После этого, первый пользователь нажимает "Cancel" или закрывает свою форму и ... *его изменения откатываются*. В результате происходит нарушение логики работы компании - нельзя выписать товара больше, чем доступно (Available = OnHand - Reserved). Вот такуй ситуацию хотелось бы подправить. Сама система закрытая, и изменений в нее внести нельзя.
← →
BlackTiger (2003-12-19 14:53) [5]Ну может кто-нибудь подскажет куда и чем копать?
← →
PVOzerski (2003-12-19 14:58) [6]>"enumWindows(@TForm1.EnumListOfTasks, Longint(Self));" ничего не выдает!
1-й параметр должен быть описан как function(p1:tHandle;p2:longint):longbool;stdcall;
притом не как метод и не как вложенная функция.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c