![]() |
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:
denn befehl hab ich im "create" ereignis der form hinterlegt
Main_Form.TabOrder := 3;
|
Re: Cursor in Form Positionieren
Delphi-Quellcode:
Button.SetFocus;
|
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);
|
Re: Focus (oder auf Button) in Form Positionieren
hmm gehen tuts schon, wenn ich im oncreate ereignis das
Delphi-Quellcode:
absetzen tu... blos ich krieg da immer eine hässliche fehlermeldung, die da lautet:
bitbtn_connect.setfocus;
"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??? |
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; |
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: |
Re: Focus (oder auf Button) in Form Positionieren
Zitat:
d.h. dann das ich aus dem oncreate ereignis das onshow ereignis aufrufen muss, oder "geht das dann automatisch"??? |
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:
Das ganze mit try except wie es im OnCreate steht, machst du natürlich wieder weg und alle sind glücklich :wink:
bitbtn_connect.SetFocus;
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:
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.
OnShow := nil;
|
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??? |
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 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz