Zitat von
uwewo:
Ausführen soll er den Button1 ja schon, denke ich.
Ja, soll er. 8)
Zitat von
uwewo:
warum nicht TabStop = False im
OI und
if button1.Focused then button2.SetFocus;
Das würde dann kompliziert werden, weil es nicht nur um ein Control (Button2) geht.
Stell dir als Beispiel eine Form mit vielen Edits vor, und ein Klick auf den Button soll den Inhalt des fokussierten Edits ins Clipboard kopieren. Etwa so:
Delphi-Quellcode:
procedure TForm1.MyClick(Sender: TObject);
begin
if ActiveControl is TEdit then
begin
TEdit(ActiveControl).CopyToClipboard;
Label1.Caption := Clipboard.AsText;
end
else
Label1.Caption := '<nix>';
end;
Dann verweist ActiveControl bei einem TButton in MyClick schon auf den Button und nicht mehr auf das interessierende Edit. Exakt der gleiche OnClick-Handler funktioniert bei einem TSpeedButton.
Das Problem ist jetzt, dass der betroffene Button nicht allein steht, sondern in einer Maschinerie erzeugt wird, die auch fokussierbare Buttons ausspucken muss. Ich würde gern vermeiden, diese Maschinerie so umzubauen, dass sie mal TButtons und mal TSpeedButtons erzeugt. Drum hätte ich gern einen Schalter an der Button-Instanz.