Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem mit SetFocus (https://www.delphipraxis.net/75839-problem-mit-setfocus.html)

KosMottchen 25. Aug 2006 17:46


problem mit SetFocus
 
huhu,

ich will in meinem pürogramm, wenn ich es starte, den Focus auf dem Button1 haben...

also hab ich mir gedacht, schreib ich in FormCreate einfach
Delphi-Quellcode:
Form1.Button1.SetFocus;
rein...

aber das geht ja da nicht... also hab ich mir gedacht...

schreibst ne prozedure...

Delphi-Quellcode:
procedure focus;
begin
 Form1.Button1.SetFocus;
end;
und rufst die dann in form create auf...

nur das geht auch nicht... was kann ich denn da machen? an sich is der button sichtbar... denn das is ja ne vorraussetzung...

liegts daran, dass ich den button auf ner groupbox habe und nicht direkt auf der form1 ?

danke schonmal...

mfg kos

SirThornberry 25. Aug 2006 17:49

Re: problem mit SetFocus
 
Der einfachste weg ist einfach das Property TabOrdner zur Designzeit richtig zu setzen (Der Button sollte 0 haben, und die Groupbox wo er drauf liegt auch und dort wo die Groupbox drauf liegt auch etc.)

KosMottchen 25. Aug 2006 18:00

Re: problem mit SetFocus
 
huhu,

besten dank,

es geht :)

mfg

Jürgen Thomas 25. Aug 2006 18:04

Re: problem mit SetFocus
 
Zitat:

Zitat von SirThornberry
Der einfachste weg ist einfach das Property TabOrdner zur Designzeit richtig zu setzen (Der Butotn sollte 0 haben, und die Groupbox wo er drauf liegt auch und dort wo die Groupbox drauf liegt auch etc.)

In der Tat - das ist der einfachste Weg.

Weitere Möglichkeiten:
1. Im Ereignis TForm1.OnShow setzen:
Delphi-Quellcode:
ActiveControl := Button1;
2. Button1 wird als default gekennzeichnet; dann ist zwar der Focus nicht dort, aber CR wirkt direkt.
Delphi-Quellcode:
Button1.Default := true;
3. Maus wird auf Button1 positioniert; siehe Hier im Forum suchenMaus auf aktuellem Control positionieren (dies entspricht im Prinzip der Variante 1).

Gruß Jürgen

rider 25. Aug 2006 18:33

Re: problem mit SetFocus
 
Der Focus kann nur auf bereits sichtbare Controls gesetzt werden. OnFormCreate ist also zu früh. Wenn du stattdessen OnFormShow benutzt, sollte es gehen.
:wink:

Bernhard Geyer 25. Aug 2006 18:41

Re: problem mit SetFocus
 
Zitat:

Zitat von KosMottchen
Delphi-Quellcode:
procedure focus;
begin
 Form1.Button1.SetFocus;
end;

Gewöhn dir mal an in einer Formularmethode nicht über die von Delphi global angelegte Formularvariable auf Members des Formulars zuzugreifen. Wenn du jetzt z.B. eine 2te Instanz des formulars wiefolgt anlegst:

Delphi-Quellcode:
var
  dlg: TForm1;
begin
  dlg := TForm1.Create(nil);
  ...
end;
kracht es natürlich an jeder Ecke da du dann auf die andere Instanz zugreifst.

Und TForm1 ist auch kein guter Name für eine Klasse. Kennst Du dich noch aus wenn du 10 Formular TForm1...TForm10 hast was die so machen?

Neutral General 25. Aug 2006 19:46

Re: problem mit SetFocus
 
Button1.SetFocus klappt auch. Nur noch nicht im OnCreate weil dort noch alles im Bau ist sozusagen und entweder passiert nichts oder man sieht nix ;)

dh spätetestens im OnActivate sollte Button1.SetFocus auch klappen. Im OnShow aber wahrscheinlich auch ;)

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz