AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Fensterwechsel unterbinden / Hintergrundproceduren
Thema durchsuchen
Ansicht
Themen-Optionen

Fensterwechsel unterbinden / Hintergrundproceduren

Ein Thema von RobSteward · begonnen am 9. Nov 2007 · letzter Beitrag vom 28. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
RobSteward

Registriert seit: 23. Okt 2007
9 Beiträge
 
#1

Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 16:17
Hallo.

Ich habe folgendes Problem:

Ich habe ein Formular, welches ein Editfeld mit OnChange und eine Timerfunktion besitzt. Der Timer regelt das ständige akutalisieren der Uhrzeit, das Editfeld wartet auf eine Eingabe. Wenn eine Eingabe erfolgreich verarbeitet wurde, dann wird der Fokus wieder auf dieses Editfeld gesetzt.
Mein Problem ist nun, dass, wenn ich neue Childformulare öffne wegen des Timers das Parentformular immer wieder prüft ob eine Eingabe gekommen ist und folglich den Fokus auch wieder in das Editfeld setzt.

Ich möchte dies unterbinden, da in dem neuen Formular auch eine Eingabe erwartet wird (Passwort). Trotzdem soll der Timer weiter laufen.

Wie kann ich das in einem Formular lösen? (Timer + Fokus; Aber nur solange kein anderes geöffnet ist, bzw. es wäre gut, wenn er zwar einen Eingabe verarbeitet, aber dann sofort wieder zurück springt.)

Gibt es einen Befehl, der das jüngste Fenster anzeigt o.Ä.? Muss ich den Timer ausgliedern?

// Ohne Timer klappt alles wie gewohnt!

Über Hilfe würde ich mich freuen. Code kann ich natürlich auch schicken, wenn gewünscht.

RobSteward
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 16:22
einfach in einer boolschen Variable merken, ob noch ein Formular offen ist.
D.h. beim öffnen auf True, beim Schließen auf False.
Om OnTimer die einfach prüfen, wenn True dann Exit, so dass der Timer nix tut.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
RobSteward

Registriert seit: 23. Okt 2007
9 Beiträge
 
#3

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 16:48
Zitat von Progman:
einfach in einer boolschen Variable merken, ob noch ein Formular offen ist.
D.h. beim öffnen auf True, beim Schließen auf False.
Om OnTimer die einfach prüfen, wenn True dann Exit, so dass der Timer nix tut.

der Timer SOLL ja was tun, er soll im alten Formular die Uhrzeit immer noch aktualisieren... das ist ja gerade mein Problem. Das mit dem Fenster könnte ich über .Showing abfragen, die gibt ne boolean zurück
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 16:52
der Timer kann ja auch was tun, nur er soll bei True keinen Focus irgendwohin setzen, dann müsste das Prob doch erledigt sein
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 17:16
Wie sieht es aus, wenn Du das neue Fenster mit ShowModal anzeigst?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
RobSteward

Registriert seit: 23. Okt 2007
9 Beiträge
 
#6

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 17:26
Habe mich wohl falsch ausgedrückt:

Da der Timer die Zeit holt und sie in ein lable speichert, wird das formular ja immer wieder neugezeichnet und folglich wird auch immer der fokus wieder neu gesetzt.


// Leider muss das Fenster normal gezeigt werden, da sonst keine EIngabe im unteren statt finden kann.
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 9. Nov 2007, 19:27
irgendwas an deinem Code muss da schief laufen, denn durch Beschreiben eines Labels wird doch nicht das ganze Form nach vorn geholt bzw. erhält den Focus. Um das geänderte Label neu zu zeichnen (wenn es überhaupt nötig ist) reicht doch Label.Refresh, es muss doch nicht das ganze Form neu gezeichnet werden.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
RobSteward

Registriert seit: 23. Okt 2007
9 Beiträge
 
#8

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 10. Nov 2007, 01:14
Es liegt eindeutig am Timer. Wenn ich seine Eigenschaft Activ auf False setze, habe ich zwar keine Zeit, aber dafür nicht dieses Coursersprung-Problem. Habe mal ein Stück Code angehangen, vielleicht sieht ja wer eine Lösung:
Delphi-Quellcode:
procedure Tf_hauptprogramm.FormPaint(Sender: TObject);
 begin
  if f_admin.Showing = true then else e_benutzernummer.SetFocus;
  if fileexists('logo.bmp') then Image1.Picture.LoadFromFile('logo.bmp');
 end;
Das ist das "normale" Setzen des Fokus.

Delphi-Quellcode:
  e_benutzernummer.Text := '';
  if f_admin.Showing then else e_benutzernummer.SetFocus;
Das ist das Ende der Anmeldeprocedure, wo der Inhalt (ne Benutzernummer) in eine MySQL-Liste eingepflegt wird.


So hier noch der Timer:
Delphi-Quellcode:
procedure Tf_hauptprogramm.Timer1Timer(Sender: TObject);
begin
 zeit.Caption:= TimeToStr(GetTime);
end;
Das war es eigentlich schon...soll ich vielleicht das SetFocus-Event nicht auf Paint sondern woanders hinsetzten?

[edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
RobSteward

Registriert seit: 23. Okt 2007
9 Beiträge
 
#9

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 12. Nov 2007, 01:01
Kann mir keiner helfen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Fensterwechsel unterbinden / Hintergrundproceduren

  Alt 12. Nov 2007, 07:38
so sieht es im Moment aus. Ich für meinen Teil kann dir nicht helfen weil ich dein Problem und deine Gegebenheiten nicht verstehe. Im ersten Post schreibst du das du EIN Form hast mit EINEM Editfeld und einer Timerfunktion. In späteren Postings sind es plötzlich mehrere Forms etc.
Versuche einfach das gegebene auszuformulieren und beschreibe alles so genau das es auch jemand versteht der dein Projekt nicht kennt. Im Moment schreibst du leider so als würde jeder dein projekt schonmal gesehen haben.

Anhand deiner Beschreibung würde ich denken das du 1 Editfeld hast. Darin gibst du eine Zeit ein. Und wenn du diese eingegeben hast setzt du den Focus wieder auf dieses Editfeld. Ich verstehe hier allerdings nicht warum du den Focus wieder auf das Editfeld setzt wenn es ja schon den Focus hat (schließlich hab ich gerade was rein geschrieben). Und falls es sich um ein anderes Editfeld handelt - warum musst du dort den Focus reinsetzen?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 03:58 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