![]() |
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:
om den Focus zu setzen habe ich einiges versuchtprocedure 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;
Delphi-Quellcode:
selbiges habe ich auch mit den Editfeldern versucht aber nichts hilft!
self.activate; // auf der loginmaske OnShow;
self.setfocus; 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
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: Problem beim Focus setzen nach erstellen eines forms
Hallo,
Hast du der Form8 dem ActiveControl ein Control zugewiesen? |
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:
weis auch nichtmer was ich machen soll hoffe ihr wisst weiter
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; gruß Manu |
Re: Problem beim Focus setzen nach erstellen eines forms
Setze es im OI.
|
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 |
Re: Problem beim Focus setzen nach erstellen eines forms
*PUSH*
|
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. |
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 |
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 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz