Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Focus (oder auf Button) in Form Positionieren (https://www.delphipraxis.net/97609-focus-oder-auf-button-form-positionieren.html)

Andidreas 13. Aug 2007 14:45


Focus (oder auf Button) in Form Positionieren
 
aloha zusammen,

ich arbeite gerade an einem programm das mit einem ftp client arbeitet...
damit der benutzer nicht jedes mal die login daten eintippen muss biete ich ihm eine möglichkeit an diese wegzuspeichern...

benutzt der benutzer diese funktion, so wird beim nächsten start gefragt ob er die auto login daten laden möchte...
sagt er hier ja, füllen sich die login felder in der form schon mal aus...
soweit klappt alles

der benutzer müsste jetzt nur noch denn "connect" button drücken...
hier möchte ich jetzt, das der cursor dann beim programm start auf dem "connect" button positioniert ist...
wie krieg ich das hin???

folgendes habe ich gerade probiert, hat aber nicht denn gewünschten erfolg gebracht:

Delphi-Quellcode:
Main_Form.TabOrder := 3;
denn befehl hab ich im "create" ereignis der form hinterlegt

shmia 13. Aug 2007 14:47

Re: Cursor in Form Positionieren
 
Delphi-Quellcode:
Button.SetFocus;

Martin K 13. Aug 2007 14:52

Re: Cursor in Form Positionieren
 
Button.SetFocus wird allerdings in FormCreate nicht funktionieren, weil die Form zu der Zeit noch nicht sichtbar ist.
Hierfür wirst du dann das OnShow-Ereignis der Form nehmen müssen.

//Nachtrag:
Der Titel ist allerdings etwas irreführend, du willst nämlich nicht den Cursor in deiner Form positionieren, sondern du willst den Focus setzen.
Den Cursor zu positionieren geht nämlich so:
Delphi-Quellcode:
Mouse.CursorPos := Point(X, Y);

Andidreas 13. Aug 2007 15:06

Re: Focus (oder auf Button) in Form Positionieren
 
hmm gehen tuts schon, wenn ich im oncreate ereignis das
Delphi-Quellcode:
bitbtn_connect.setfocus;
absetzen tu... blos ich krieg da immer eine hässliche fehlermeldung, die da lautet:
"Deaktiviertes oder unsichtbares Fensters kann denn Fokus nicht erhalten."

wenn ich diese Fehlermeldung mit "ok" beantworte, dann kommt meine form und der fokus ist gesetzt...

kann ich diese fehlermeldung irgendwie ignorieren???

Andidreas 13. Aug 2007 15:10

Re: Focus (oder auf Button) in Form Positionieren
 
ist zwar nicht die schönste variante, aber s funkt ^^

Delphi-Quellcode:
Try
  bitbtn_connect.SetFocus;
Except
  Sleep(1);
End;

Martin K 13. Aug 2007 15:13

Re: Focus (oder auf Button) in Form Positionieren
 
Das es geht wundert mich, aber wie diese Fehlermeldung schon sagt, kannst du in einem unsichtbaren Fenster (und in OnCreate ist es noch nicht sichtbar), keinen Focus setzen.
Das mit try-except is keine saubere Variante.
Schreibe deinen Code doch am besten in das OnShow-Ereignis (wie ich schon sagte), dann bekommst du auch keine Fehlermeldung :wink:

Andidreas 13. Aug 2007 15:18

Re: Focus (oder auf Button) in Form Positionieren
 
Zitat:

Zitat von Martin K
Das es geht wundert mich, aber wie diese Fehlermeldung schon sagt, kannst du in einem unsichtbaren Fenster (und in OnCreate ist es noch nicht sichtbar), keinen Focus setzen.
Das mit try-except is keine saubere Variante.
Schreibe deinen Code doch am besten in das OnShow-Ereignis (wie ich schon sagte), dann bekommst du auch keine Fehlermeldung :wink:

ok kann ich auch noch machen...
d.h. dann das ich aus dem oncreate ereignis das onshow ereignis aufrufen muss,
oder "geht das dann automatisch"???

Martin K 13. Aug 2007 15:28

Re: Focus (oder auf Button) in Form Positionieren
 
Nein, nein, nein.
Genau wie OnCreate, hat deine Form auch ein Ereignis OnShow.
Genau wie OnCreate beim erstellen der Form aufgerufen wird, wird OnShow aufgerufen sobald die Form sichtbar wird (automatisch natürlich :wink: )
Schau mal im Objekt Inspektor bei Ereignissen:
Dort machst du einen Doppelklick auf OnShow und schreibst da rein:
Delphi-Quellcode:
  bitbtn_connect.SetFocus;
Das ganze mit try except wie es im OnCreate steht, machst du natürlich wieder weg und alle sind glücklich :wink:

Ach ja:
Wie gesagt, wird OnShow immer aufgerufen, wenn die Form sichtbar gemacht wird.
Falls du die Form später nochmal sichtbar machst und nicht willst, dass der Focus erneut auf den Button gesetzt wird, dann schreibst du einfach:
Delphi-Quellcode:
OnShow := nil;
am Anfang in das OnShow-Ereignis. Somit wird der Code nur beim ersten Mal ausgeführt und du hast den gleichen Effekt wie bei Create.

Andidreas 13. Aug 2007 15:40

Re: Focus (oder auf Button) in Form Positionieren
 
ok gut...
dann schreib ich das mal ins onshow ereignis rein...

btw
wie oft wird das onshow ereignis aufgerufen???
nur bei programmstart???

Martin K 13. Aug 2007 15:52

Re: Focus (oder auf Button) in Form Positionieren
 
Naja, eben immer dann wenn sie sichtbar wird.
Also wenn du sie mal schließt und dann wieder sichtbar machst mit Form.Show bzw. ShowModal, dann wird eben wieder OnShow ausgeführt.
Falls deine Form nach dem schließen aber nicht noch einmal sichtbar wird, so wird das ganze nur einmal aufgerufen, beim Programmstart bzw. wenn die Form das erste mal sichtbar wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Seite 1 von 2  1 2      

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