Jo, grundsätzlich MÜSSEN ALLE delphi-Focus funktionen in einen try except block. Das liegt an einer einzigsten, sau bescheuerten, Stelle in der VCL:
<pre>
procedure TCustomForm.SetActiveControl(Control: TWinControl);
begin
if FActiveControl <> Control then
begin
if not ((Control = nil) or (Control <> Self) and
(GetParentForm(Control) = Self) and ((csLoading in ComponentState) or
Control.CanFocus)) then<br>
<B> raise EInvalidOperation.Create(SCannotFocus);</b>
FActiveControl := Control;
if not (csLoading in ComponentState) then
begin
if FActive then SetWindowFocus;
ActiveChanged;
end;
end;
end;
</pre>
Das raisen der Exception im obigen Originalsource IST EIN FEHLER, und absolut Schwachsinnig. Wenn ich was nicht fokusieren kann dann kann ich es einfach nicht fokusieren, es darf dann aber NIEMALS der Programfluß durch eine Exception unterbrochen werden. Die VCL Coder sind oben weit übers Ziel hinausgeschossen und haben sich damit soweit vom Windows Verhalten des Focusing entfernt das sehr sehr oft die Fehlermeldung zu sehen ist <b>"ein deaktiviertes oder unsichtbares Fenster kann nicht den Fokus bekommen"</b> <i>Jo, Du Arsch, das weiß ich selber, dann fokusier doch einfach nicht</i>
<br>
Mal Spaß beiseite. Seit ich mit D1 programmiere IST DAS die Fehlermeldung die mich am meisten geärgert hat.
Gruß Hage
<pre>
procedure TCustomForm.SetActiveControl(Control: TWinControl);
begin
if FActiveControl <> Control then
begin
if not ((Control = nil) or (Control <> Self) and
(GetParentForm(Control) = Self) and ((csLoading in ComponentState) or
Control.CanFocus)) then<br>
<B> raise EInvalidOperation.Create(SCannotFocus);</b>
FActiveControl := Control;
if not (csLoading in ComponentState) then
begin
if FActive then SetWindowFocus;
ActiveChanged;
end;
end;
end;
</pre>
Das raisen der Exception im obigen Originalsource IST EIN FEHLER, und absolut Schwachsinnig. Wenn ich was nicht fokusieren kann dann kann ich es einfach nicht fokusieren, es darf dann aber NIEMALS der Programfluß durch eine Exception unterbrochen werden. Die VCL Coder sind oben weit übers Ziel hinausgeschossen und haben sich damit soweit vom Windows Verhalten des Focusing entfernt das sehr sehr oft die Fehlermeldung zu sehen ist <b>"ein deaktiviertes oder unsichtbares Fenster kann nicht den Fokus bekommen"</b> <i>Jo, Du Arsch, das weiß ich selber, dann fokusier doch einfach nicht</i>
<br>
Mal Spaß beiseite. Seit ich mit D1 programmiere IST DAS die Fehlermeldung die mich am meisten geärgert hat.
Gruß Hage
Comment