AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form Focus, Fenster wechsel

Ein Thema von exchange · begonnen am 6. Okt 2009 · letzter Beitrag vom 6. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#1

Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 10:04
Hallo,
als Anfänger stehe cih vor dem folgenden Problem:

Bei einer Anwendung habe ich eine Benutzereingabe im Form1 und die Anzeige der Infos in Form2.

Form1 öffnet Form2 (show) und macht Form1 invisible. Soweit sogut. In Form2 befindet sich ein DBGrid vorher ein SMDBGrid damit war der Fehler aber häufiger, dazu unten mehr.

Nun startet ein DropDown Feld eine Abfrage und füllt das DBGrid. Wenn man nun z.b. den Firefox über der Anwendung am laufen hat und diesen minimiert wird das Fenster grau (als ob es nicht mehr im Focus ist). Man kann es dann nur noch über die Taskleiste schließen. Startet man die Abfrage im Form2 nicht, taucht der Fehler nicht auf. Mit dem anderen Grid war dieser Fehler noch häufiger.

EDIT: Ich habe auch noch etwas vergessen, Wenn man normalerweise in der Taskleiste auf eine Anwendung klickt schließt/öffnet diese sich dann. Wenn der Fehler auftritt ist dies auch nicht mehr der Fall.

Nach einiger Zeit mit Suchen wollte ich noch folgendes abändern um den Fehler zu beheben:
1.) außer Hauptforumlar bei Projektoptionen aus der automatischen erzeugung rausnehemen und erst eine Zeile VOR dem Form2.show erzeugen lassen
2.) Form1.visible=False durch Form1.Hide austauschen


Kennt den Fehler jemand? Liegt es an dem visible oder an mir ?

Umgebung: Delphi 2009

Gruss
Heiko
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#2

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 10:21
Hi,

also wenn du mich fragst liegt das daran, dass du das Hauptfenster unsichtbar gemacht hast. Wenn Form1 deine Hauptform ist und du diese unsichtbar machst kommst du über die Taskleiste nicht mehr an Form2 dran, sondern nur an Form1, die ja unsichtbar ist. Funktioniert es denn wenn du Form1 nicht unsichtbar machst? Du müsstest mal ein bisschen was von deinem Code zeigen, dann kann man dir besser helfen, könnte auch sein dass im Code was nicht stimmt.

Gruß
AnyKey
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 10:25
Kann es sein, dass das Befüllen des Grids längere Zeit braucht? Ich vermute, dass weder Threads noch Application.ProcessMessages eingebaut ist, so dass das Fenster während der DB-Abarbeitung keine Zeit bekommt, auf Botschaften zu reagieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#4

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 10:34
Stimmt, daran hatte ich garnicht gedacht.

Je nach dem wie viele Datensätze er aus der DB holen muss kann das ein wenig zeit in Anspruch nehmen und wenn du dann ein anderes Fenster drüber schiebst sieht deine Anwendung danach aus als wäre sie hängen geblieben.
  Mit Zitat antworten Zitat
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#5

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 10:43
Hallo,
so habe ich es eben mal ausprobiert und es passiert das gleiche.

procedure TForm1.Button1Click(Sender: TObject);
Delphi-Quellcode:
...
        UniConnection1.Database:=DB_Schema;
        Button1.Caption:='logout';
        login_status:=1;
        Edit_Password.Text:='';
        Form1.Hide;
        Form3.Show;
...
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
Delphi-Quellcode:
begin
  Form1.Button1.Click;
  Form1.Show;
end;

Nun bin ich hingegangen und habe das Hide auskommentiert und es passiert das gleiche ABER Ich kann dann das Fenster Form2 zur Seite schieben und sehe mein Form1. Nun klicke ich dort rein und schwups spielt die Musik auch wieder in Form2.

EDIT: Das Form2 reagiert danach trotzdem nicht mehr. FOrm1 ist aber funktionsfähig.

Das Grid mit seinen Inhalten ist vollständig geladen. Sind auch nur 50 Datensätze.
  Mit Zitat antworten Zitat
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#6

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 11:16
Hallo,
in meiner Verzweiflung bin ich mal gingegangen und habe das Grid rausgelöscht. Nun habe ich das Problem nicht mehr.

Hier mal die Abfrage:
Delphi-Quellcode:
UniQuery2.SQL.Text:='SELECT * FROM prg_contacts where fid='+UniQuery1.Fields.FieldByName('fuid').AsString+' and intfield07 is NULL'+ab_filter+';';
UniQuery2.Active:=True;

Edit1.Enabled:=True;
Edit2.Enabled:=True;
Edit3.Enabled:=True;
Edit4.Enabled:=True;

StatusBar1.Panels[1].Text:='Adressbuch: '+UniQuery1.Fields.FieldByName('fname').AsString;

UniQuery2.execute;
Ansonsten ist auf dem Form nichts besonderes drauf, die Frage ist nur, Warum geht das mit dem DBGrid nicht?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 11:42
Hallo Heiko,

überdenke mal den Einsatz der Formulare...

Wenn das Hauptformular "verschwindet", sobald man ein Unterformular öffnet, ist das zumindest wohl ungewohnt. Teste doch mal mit ShowModal oder BringToFront. Das Hauptformular sollte aber offen bleiben.

Vielleicht bietet sich auch die Verwendung eines PageControl statt zweier Formulare an...

Stahli
  Mit Zitat antworten Zitat
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#8

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 12:24
Hallo,
ein Application.ProcessMessages scheint das Problem gelöst zu haben:

Delphi-Quellcode:
procedure TForm3.FormPaint(Sender: TObject);
begin
  Application.ProcessMessages;
end;
@Stahli
Das Form1 ist ein Login Formular worauf die Verbindung aufgebaut wird und einige Variablen gesetzt werden. Wenn das die ganze Zeit da ist finde ich das, als Anwender, irgendwie nicht so toll.


Vielen Dank für die Unterstützung.

Gruss
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 12:34
Dann solltest Du Dein Konzept etwas umstellen...

Das Hauptformular "ist quasi Deine Anwendung". Wenn das Formular geschlossen wird, wird auch Deine Anwendung beendet.

Daher ist es besser, das Hauptformular normal zu öffnen und für das Login ein modales Subformular zu verwenden. Ist das Login bzw. die Initialisierung nicht erfolgreich, stellt Dein Hauptformar keine Controls zur Bearbeitung bereit oder wird alternativ sofort geschlossen (und die Anwendung damit beendet).

Teste das mal ... Du wirst sehen, dass das gut funktionieren wird.

Stahli
  Mit Zitat antworten Zitat
exchange

Registriert seit: 16. Feb 2009
Ort: Erftstadt
20 Beiträge
 
#10

Re: Form Focus, Fenster wechsel

  Alt 6. Okt 2009, 14:24
Hallo Stahli,
ich werde in den nächsten Tagen das Ding soweit umbauen. Die Idee hört sich gut an und würde mein Problem lösen, da ein Login Fenster in der Regel nie so lange offen ist.

Ich habe mal nach Subformular gesucht, leider jetzt auf Anhieb nichts gefunden. Kannst Du mir ein paar Stichworte geben, damit ich danach suchen kann?

Ansonsten würde ich das jetzt einfach umstellen, dass Form2 direkt geladen wird und Form1 dann läd und wenn Form1 ok ist dieses dann schließt.


Das Problem konnte ich übrigends etwas eingrenzen. Wenn man den Firefox über Taskleiste minimiert maximiert wird mein Formular wieder grau, aber ist ein **** Fehler

Gruss
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 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