Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit ActiveControl/Setfocus (https://www.delphipraxis.net/135887-problem-mit-activecontrol-setfocus.html)

onkelmehli 19. Jun 2009 13:25


Problem mit ActiveControl/Setfocus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe auf einem MDI-Child ein DBGrid auf das der Fokus gesetzt ist. Wenn ich nun über einen Toolbutton (dieser kann keinen Fokus erhalten) oder über eine Tastenkombination(aus einer ActionList) ein neues Formular aufrufen will, in dem ich im OnActivate das ActiveControl = Edit1 setze, dann erhält das Edit1 leider nicht den Fokus.
Klick ich aber auf einen "normalen" Button(dieser erhält ja beim Klick erst einmal den Fokus), erhält das Edit1 in dem neu aufgerufenen Formular den Fokus.

Weiß jemand, wo die Ursache liegt? Gibts eine Möglichkeit, den Fokus des Grids zu "killen" bevor man das neue Formular aufruft?

Ich habe ein kleines Beispielprojekt angehangen, damit man das nachvollziehen kann. Habe hier mit ADO-Komponenten und Zugriff auf den SQL-Server 2005 Express gearbeitet, man kann natürlich eine andere DB verwenden.

Gruß
Matthias

GHorn 19. Jun 2009 13:46

Re: Problem mit ActiveControl/Setfocus
 
Edit1.SetFocus;

geht auch nicht? Ggf. im OnShow-Evebnt.

Gruß,
Gerald

onkelmehli 19. Jun 2009 13:55

Re: Problem mit ActiveControl/Setfocus
 
Hallo Gerald,

mit SetFocus funktionierts leider auch nicht. Im OnShow auch probiert, leider ohne Erfolg.
Man könnte natürlich, wenn man den Toolbutton klickt, den Fokus erst auf ein anderes Control setzen, dann funktioniert es, nur ist das ja keine "saubere" Lösung, wer weiß, was das für Nebeneffekte auslöst.

Gruß
Matthias

onkelmehli 19. Jun 2009 14:53

Re: Problem mit ActiveControl/Setfocus
 
ok ich habs erst einmal so gelöst, indem ich das ActiveControl auf nil setze und nach dem Anzeigen des Formulars wieder das Grid als ActiveControl einsetze:

Delphi-Quellcode:
 
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  ActiveControl:= nil;
  TForm8.ShowForm8;
  ActiveControl:= DBGrid1;
end;
ist zwar meines Erachtens nicht die "schönste" Lösung, aber so funktioniert es erst einmal.
Bin dennoch für bessere Vorschläge und Lösungen dankbar!

Gruß
Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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