Autor Beitrag
Singing Sandy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

WIN XP-Home
D6 Pro
BeitragVerfasst: Mi 27.10.04 10:04 
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)
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 27.10.04 10:14 
Im OnActivate der Form müssen folgende Anweisungen durchgeführt werden:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

WIN XP-Home
D6 Pro
BeitragVerfasst: Mo 01.11.04 10:52 
Lösung:
ausblenden 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