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/)
-   -   C++ Editfeld auf Notebookseite aktivieren (https://www.delphipraxis.net/180161-editfeld-auf-notebookseite-aktivieren.html)

MrSpock 26. Apr 2014 19:39

Editfeld auf Notebookseite aktivieren
 
Hallo,

habe auf einem NoteBook 2 Seiten. Wenn ich auf eine der beiden Seite wechsle, soll der Cursor in einem bestimmten EditFeld auf der neu ausgewählten Seite stehen. Das habe ich so versucht:

Delphi-Quellcode:
void __fastcall TAnmeldeForm::NoteBookChange(TObject *Sender, int NewTab, bool &AllowChange)

{
   if (NewTab == 0) {
      BenutzerReg->SetFocus();
   }
   else
      BenutzerAnm->SetFocus();
   AllowChange = True;
}
Wenn ich durch Anklicken eines reiters die Seite wechsle, steht der Cursor aber nicht in dem EditFeld. Warum nicht?

Volker Z. 26. Apr 2014 21:53

AW: Editfeld auf Notebookseite aktivieren
 
Hallo,

Zitat:

Wenn ich durch Anklicken eines reiters die Seite wechsle, steht der Cursor aber nicht in dem EditFeld. Warum nicht?
vermutlich liegt es daran, dass in dem Moment, in dem das NoteBookChange durchlaufen wird, der Reiter, auf dem das TEdit BenuterAnm liegt noch nicht aktiv / sichtbar ist; damit ist das TEdit selbst nicht sichtbar und kann daher den Fokus nicht erhalten (deaktiviertes oder unsichtbares Fenster kein Fokus). Die entsprechende Exception wird wohl irgendwo gefangen.

Aber wieso ein TabbedNotebook? Warum kein PageControl? Mit einem PageControl klappt das (entweder im OnChange, besser im OnShow des Reiters).

Gruß

MrSpock 27. Apr 2014 10:50

AW: Editfeld auf Notebookseite aktivieren
 
Hallo Volker,

danke für den Tip. Hab jetzt ein PageControl verwendet. Da funktioniert es wie gewollt. :thumb:

himitsu 27. Apr 2014 11:19

AW: Editfeld auf Notebookseite aktivieren
 
Jupp, das Notebook ist ja eh "Schrott".

Beim PageControl gibt es doch auch noch ein OnChanging (vor dem Umblättern) und OnChange für dach.
Wie bereits bermutet, hätte es da wohl auch Changing/BeforeChange heißen müssen.

MrSpock 27. Apr 2014 12:32

AW: Editfeld auf Notebookseite aktivieren
 
Ja, das hatte ich auch schon vermutet. Weiß auch nicht, warum ich nicht gleich die PageControl Komponente benutzte habe.

himitsu 27. Apr 2014 17:38

AW: Editfeld auf Notebookseite aktivieren
 
Was mir letztens mal wieder auf die Füße gefallen ist, das kann man auch absichtlich ausnutzen.

Delphi-Quellcode:
BenutzerAnm->Show();
BenutzerAnm->SetFocus();
Visible:=True und Show verhalten sich an anders, denn Show macht die Komponente "wirklich" sichtbar.
z.B. werden da gern mal Parents ebenfalls auf Visible:=True umgeschaltet und PageControls werden auf die jeweilige Seite umgeblättert.


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