Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - ActionControl bei nicht sichtbaren Komponenten
Singing Sandy - Mi 27.10.04 10:04
Titel: ActionControl bei nicht sichtbaren Komponenten
Hallo,
mein Problem: Ich habe eine MaskEdit, in die der Cursor nach starten der Anwendung geladen werden soll, in einem PageControl, 2.TabSheet.
Das 2.TabSheet wird erst sichtbar, wenn im ersten TabSheet <weiter> geklickt wurde und TabSheet2 sichtbar wird.
ActiveControl funktioniert aber nur wenn direkt nach Programmstart auf die Komponente zugegriffen wird.
(Bei EditFeld auf TabSheet1 funktionierts wie gewünscht)
Delphi-Quelltext
1: 2: 3: 4:
| Fehlermeldung: ...EInvalidOperation aufgetreten. Meldung: Deaktiviertes oder unsichtbares Fenster kann den Fokus nicht erhalten. Prozeß angehalten.. Start fortsetzen.[OK] |
Wie kann ich ActiveControl trotzdem für die MaskEdit anwenden oder welche Alternativen habe ich (vielleicht FocusControl/SetFocusControl) damit der Cursor ins Feld kommt?
Viele Grüsse
Sandy
jasocul - Mi 27.10.04 10:14
Im OnActivate der Form müssen folgende Anweisungen durchgeführt werden:
Delphi-Quelltext
1: 2:
| PageControl.ActivePage := TabSheet2; MaskEdit1.SetFocus; |
Und bevor jemand fragt, warum nicht im OnCreate:
Im OnCreate kann man i.d.R. auf die Controls noch nicht zugreifen.
Wenn das nur beim Programmstart passieren soll, dann mache ich das immer so:
Variable FirstTime : Boolean definieren.
Die wird im OnCreate auf True gesetzt.
Im OnActivate die Variable abfragen und wenn true, die obigen Anweisungen ausführen.
Am Schluss im OnActivate die Variable auf False setzen.
Hat jemand einen besseren Vorschlag?
Singing Sandy - Mo 01.11.04 10:52
Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.FormCreate(Sender: TObject); begin TabSheet1.Visible := true; TabSheet2.Visible := false; PageControl1.ActivePage := TabSheet2; end;
procedure TForm1.TabSheet2Show(Sender: TObject); begin if not edit1.focused then edit1.setfocus; end; |
Ereignis
TabSheet2 onShow: TabSheet2Show
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!