Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Можно ли в ЧУЖОМ 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
3-11791
h0use
2003-12-03 16:51
2004.01.05
Как результат запроса записать в поток?


6-12015
xGhost
2003-11-04 12:54
2004.01.05
При передачи файла посредством компонентов Serversocket и


1-11853
FeRR
2003-12-18 19:33
2004.01.05
Dll и ... таймер :)


1-11873
md
2003-12-15 14:07
2004.01.05
путь к файлу


1-11864
h0use
2003-12-18 16:03
2004.01.05
Как вставить символ смайлика в RichEdit?