Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Problem beim Focus setzen nach erstellen eines forms (https://www.delphipraxis.net/123728-problem-beim-focus-setzen-nach-erstellen-eines-forms.html)

5etH 7. Nov 2008 08:34


Problem beim Focus setzen nach erstellen eines forms
 
Hallo Zusammen,

Ich arbeite momentan an einem Programm das ich in einem SystTayIcon verschwinden lasse und es dann gesperrt ist und der Benutzer dann ein Passwort und einen Benutzernamen eingaben muss um das Programm wieder frei zu geben.

Mein Problem:
wenn ich die Eingabemaske für Passwort und Benutzernamen anzeige hat sie keinen Focus

Verstecken und wiederherstellen der forms:
Delphi-Quellcode:

procedure TForm1.TrayIcon1Click(Sender: TObject);
var
  I: Integer; //Counter
begin
  if seh then //Seh ist eine Variable zur überprüfung ob sie versteckt sind oder nicht
    begin
      application.Minimize;
        for I := 0 to screen.formcount - 1 do
          begin
            screen.forms[i].hide;
          end;
      seh := false;
    end
    else
    begin
      if sperr then //überprüfen ob das Programm gesperrt werden soll
        begin
          if not s8 then //Überprüfen ob loginmaske erstellt wurde
            begin
              s8 := true;
              Application.CreateForm(TForm8, Form8);
              form8.show; //anzeigen der Loginmaske
            end;
        end
        else
        begin
          for I := screen.formcount -1 downto 0 do
            begin
              screen.forms[i].show
            end;
          application.Restore;
          application.BringToFront;
          seh := true;
        end;
    end;
end;
om den Focus zu setzen habe ich einiges versucht
Delphi-Quellcode:
self.activate; // auf der loginmaske OnShow;
self.setfocus;
selbiges habe ich auch mit den Editfeldern versucht aber nichts hilft!


folgendes ist bei der Loginmaske "OnShow"
Delphi-Quellcode:

procedure TForm8.FormShow(Sender: TObject);
begin
  if form1.Edit1.Text <> '' then
    begin
      self.edit1.Text := form1.edit1.text;
      //Wenn möglich focus auf edit2.text legen
    end;
      //wenn möglich Focus auf edit1.text legen   
end;


ich hoffe ihr könnt mir weiter helfen ich weis nichtmer weiter und mir fällt auch nichts mehr ein

schonmal vielen vielen dank

gruß Manu

DP-Maintenance 8. Nov 2008 13:42

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.

toms 8. Nov 2008 16:59

Re: Problem beim Focus setzen nach erstellen eines forms
 
Hallo,

Hast du der Form8 dem ActiveControl ein Control zugewiesen?

5etH 10. Nov 2008 07:40

Re: Problem beim Focus setzen nach erstellen eines forms
 
okay das habe ich nun probiert, aber leider spuckt er mir eine Fehlermeldung aus (Deaktiviertes oder unsichtbares fenster kann den Fokus nicht erhalten)

Hier der Code:
Delphi-Quellcode:
procedure TForm8.FormShow(Sender: TObject);
begin
  if form1.Edit1.Text <> '' then
    begin
      self.edit1.Text := form1.edit1.text;
    end;
   ActiveControl:=self;
   //habe es mit self und direkt Form8 probiert aber nichts funktioniert
end;
weis auch nichtmer was ich machen soll hoffe ihr wisst weiter

gruß Manu

toms 10. Nov 2008 07:42

Re: Problem beim Focus setzen nach erstellen eines forms
 
Setze es im OI.

5etH 10. Nov 2008 07:51

Re: Problem beim Focus setzen nach erstellen eines forms
 
selbe Fehlermeldung :(

Könnte es vill daran liegen das ich das Form kurz vorher erst erzeuge?



EDIT: habe auch versucht es auf Edit1 zu setzen, aber ohne Erfolg ... Form öffnet sich zwar, aber ohne Focus, weder auf dem Form, noch im Edit1.

Auch mit FocusControl bekomme ich diesen Fehler

5etH 11. Nov 2008 12:03

Re: Problem beim Focus setzen nach erstellen eines forms
 
*PUSH*

nahpets 11. Nov 2008 12:35

Re: Problem beim Focus setzen nach erstellen eines forms
 
Hallo,

probier mal das:

Delphi-Quellcode:
procedure TForm1.JvTrayIcon1DblClick(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  If Not Assigned(Form2) then Application.CreateForm(TForm2, Form2);
  Form2.Show;
  Form2.edit1.SetFocus;
  Application.BringToFront;
end;
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in '..\Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  // Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

5etH 11. Nov 2008 13:00

Re: Problem beim Focus setzen nach erstellen eines forms
 
Damit ihr es besser nachvollziehen könnt, werde ich euch mal alles posten, was mit diesem Vorgang zu tun hat

Projectquelltext:

Delphi-Quellcode:
program AdminTool;

uses
  Forms,
  Main in 'Main.pas' {Form1},
  WebVorlage in 'WebVorlage.pas' {Form2},
  InterfaceMenu in 'InterfaceMenu.pas' {Form3},
  RemoteMenu in 'RemoteMenu.pas' {Form4},
  ProgMenu in 'ProgMenu.pas' {Form5},
  Mapping in 'Mapping.pas' {Form6},
  OrdnerMenu in 'OrdnerMenu.pas' {Form7},
  Login in 'Login.pas' {Form8},
  NichtDoppeltStarten in 'NichtDoppeltStarten.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;

end.

Aus Main:

Delphi-Quellcode:
procedure TForm1.Sperren1Click(Sender: TObject);
begin
sperr:= true;
TrayIcon1Click(self);
end;

procedure TForm1.TrayIcon1Click(Sender: TObject);
var
  I: Integer;
begin
  if seh then // Seh ist die variable in der gespeichert wird, ob die Forms momentan versteckt sind, oder ob sie angezeigt werden
    begin
      application.Minimize;
        for I := 0 to screen.formcount - 1 do
          begin
            screen.forms[i].hide;
          end;
      seh := false;
    end
    else
    begin
      if sperr then //Sperr wird true wenn ich den befehl zum sperren gegeben habe
        begin
          if not s8 then //s8 überprüft ob form8 (login) schon erzeugt wurde
            begin
              s8 := true;
              Application.CreateForm(TForm8, Form8);
              form8.show;
            end;
        end
        else
        begin
          for I := screen.formcount -1 downto 0 do
            begin
              screen.forms[i].show
            end;
          application.Restore;
          application.BringToFront;
          seh := true;
        end;
    end;
end;

aus Login

Delphi-Quellcode:

if (edit1.text[1] = 'A') and (edit1.text[2] = 'D')
then
begin
if edit1.text = 'administrator' then
begin
if edit2.text = 'XXXXXXXXXXX' then
begin
   form1.sperr := False;
   form1.TrayIcon1Click(self);
   form1.s8 := false;
   self.Destroy;
end
else
begin
showmessage('Ungültiges Passwort');
Edit2.Color := CLRED;
end;
end
else
begin
   LogonUser(PChar(Edit1.Text), 'HSVV', PChar(Edit2.Text), LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, h);
if h <> 0 then begin
   form1.sperr := False;
   form1.TrayIcon1Click(self);
   form1.s8 := false;
   self.Destroy;
end
else
begin
   showmessage('Ungültiger Benutzername oder Passwort');
   Edit1.Color := CLRED;
   Edit2.Color := CLRED;
end;
end
end
else
begin
  showmessage('Ungültiger Benutzername');
  Edit1.Color := CLRED;

end;

procedure TForm8.FormShow(Sender: TObject);
begin
  if form1.Edit1.Text <> '' then
    begin
      self.edit1.Text := form1.edit1.text;
      end;
//Hier habe ich bis jetzt immer versucht dem form 8 den focus zu geben

end;

hoffe ihr könnt etwas damit anfangen ansonsten werde ich auf den code gerne für euch näher eingehen ;-)

gruß manu



EDIT: habe bemerkt das, wenn ich das form ein 2. mal auf habe (2. öffnen nach schliesen also nicht 2 mal das selbe Form offen) ,dass ich dann den focus bekomme

toms 11. Nov 2008 18:55

Re: Problem beim Focus setzen nach erstellen eines forms
 
Hallo

Ideal wäre ein Beispiel-Projekt, welches man kurz testen könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Seite 1 von 2  1 2      

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