Cześć. Słuchajcie mam problem. Korzystam z Delphi 7 Personal i podczas wciskania prawego przycisku Alt znikają wszystkie Buttony, CheckBoxy i RadioButtony. Znalazłem fix dla systemu Vista, ale na Windows 7 generuje błąd podczas zamykania programu. Tutaj ten kod: http://www.koders.com/delphi/fid46DB71DE69DB5D536E9A1EA93FD28F5470B438B0.aspx?s=server. Możecie coś poradzić?
- Rejestracja:prawie 20 lat
- Ostatnio:4 minuty
- Lokalizacja:Gorlice
Nie mam 7 (ani nawet Vista) ale patrząc na fragment kodu:
constructor TVistaAltFix.Create(AOwner: TComponent);
begin
inherited;
FRepaintAll := True;
if VistaWithTheme and not (csDesigning in ComponentState) then
begin
FList := TObjectList.Create;
FApplicationEvents := TApplicationEvents.Create(nil);
FApplicationEvents.OnIdle := ApplicationEventsIdle;
end;
end;
destructor TVistaAltFix.Destroy;
begin
FApplicationEvents.Free;
FList.Free;
inherited;
end;
widzimy że FList, FApplicationEvents są tworzone po spełnieniu określonych (wykryto Windows Vista (z włączoną kompozycja pulpitu), i komponent nie jest w fazie projektowej) warunków natomiast, w destruktorze jest próba bezwarunkowego zwolnienia tych obiektów może trzeba by sprawdzać czy obiekty te istnieją coś na kształt:
constructor TVistaAltFix.Create(AOwner: TComponent);
begin
inherited;
FList:= nil;
FApplicationEvents:= nil;
FRepaintAll := True;
if VistaWithTheme and not (csDesigning in ComponentState) then
begin
FList := TObjectList.Create;
FApplicationEvents := TApplicationEvents.Create(nil);
FApplicationEvents.OnIdle := ApplicationEventsIdle;
end;
end;
destructor TVistaAltFix.Destroy;
begin
if Assigned(FApplicationEvents) then
FApplicationEvents.Free;
if Assigned(FList) then
FList.Free;
inherited;
end;<
PS: Trzeba by też sprawdzić czy funkcja VistaWithTheme poprawnie działa na 7

- Rejestracja:ponad 20 lat
- Ostatnio:2 dni
- Postów:1029
Jeśli chodzi Ci o to: "Update (Dec 18 2006): Per-Erik Andersson came up with a new approach that is MUCH BETTER. It hooks the WM_UPDATEUISTATE message and only requires a single component instance to handle all forms in an application. Source is available at http://cc.codegear.com/item/24282." To to jest dokładnie to o czym mówimy...
- Rejestracja:około 14 lat
- Ostatnio:prawie 14 lat
- Postów:10
Witam uprzejmie
A ja nie mogę sobie z tym poradzić u siebie. Używam PageControl i zakładki i wciskam ALT i znikają wszystkie przyciski, opcje wyborów itd.
Zrobiłem Install Component i wybrałem ten vistaaltfix.pas jako osobny komponent w Delphi 7.
Dodał niby jak MEP, daję na Form, kompiluję, wszystko cacy, ale ALT dalej nie działa.
Coś trzeba jeszcze dodać do kodu?
Z poważaniem