Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Fokus auf Listbox nach Timerevent (https://www.delphipraxis.net/145237-problem-mit-fokus-auf-listbox-nach-timerevent.html)

FVNSSoft 27. Dez 2009 13:48


Problem mit Fokus auf Listbox nach Timerevent
 
Hallo zusammen,
ich bin neu hier im Forum und habe auch direkt eine Frage:

Ich habe auf meinem Formular eine Listbox und einen Timer, der alle 5 Sekunden den Inhalt der Listbox aktualisiert.
Mein Problem ist, dass nach dem Aktualisierungsvorgang durch den Timer der Fokus immer auf der ListBox, resp. auf dem Formular auf dem die Listbox ist liegt. Ich möchte allerdings, dass wenn ich ein weiteres Formular (oder ein anderes Programm) parallel laufen lasse, der Fokus auf diesem bleibt und nicht wieder auf das Formular mit der Listbox übergeht.

Der Timer soll also nur den Inhalt der Listbox ändern ohne irgendetwas am Fokus zu ändern.

Ich bin jetzt schon seit geraumer Zeit dabei eine Lösung zu suchen, ich hoffe nun hier Hilfe zu bekommen ;)

Luckie 27. Dez 2009 13:53

Re: Problem mit Fokus auf Listbox nach Timerevent
 
Merk dir den letzten Fokus und setze in wieder nach dem die Listbox aktualisiert wurde.

toms 27. Dez 2009 13:56

Re: Problem mit Fokus auf Listbox nach Timerevent
 
Hallo :hi:

Ich kann dieses Fokus-Problem bei mir nicht reproduzieren.
(2 Formulare, auf Form 1 eine Listbox mit Timer, Form 2 bleibt immer aktiv)

FVNSSoft 27. Dez 2009 14:11

Re: Problem mit Fokus auf Listbox nach Timerevent
 
@Toms: Vielleicht habe ich meine Ausgangsbedingungen nicht ausführlich genug geschildert, deshalb hier mal mein Code vom Timerevent:

Delphi-Quellcode:
procedure TfrmMain.tmrAktualisierenTimer(Sender: TObject);
var AKontaktStatus: array [1..10000] of string;
    i: integer;
begin
  // Status der Kontakte abrufen
  for i:=1 to lstKontaktliste.Items.Count do begin
    webKontaktStatus.Navigate('http://localhost/status.php?id=' + AIDs[i]);
    Wait(frmMain.webKontaktStatus);
    case StrToInt((webKontaktStatus.Document as IHTMLDocument2).body.innerHTML) of
      0: AKontaktStatus[i] := 'ON';
      1: AKontaktStatus[i] := 'N/A';
      2: AKontaktStatus[i] := 'OCC';
      3: AKontaktStatus[i] := 'OFF';
    end; // of case
  end; // of for
  // Statusliste aktualisieren
  lstStatus.Clear;
  for i:=1 to lstKontaktliste.Items.Count do
    lstStatus.Items.Add(AKontaktStatus[i]);
end;
Immer wenn das ausgeführt wird, verliert das momentan geöffnete Fenster (kann auch z.B.) ITunes oder der Windows-Explorer den Fokus und das Fenster mit der Listbox kommt in den Vordergrund.

@Luckie: Wie gesagt, das Problem besteht ja auch mit Fenstern außerhalb meiner Anwendung.

toms 27. Dez 2009 14:22

Re: Problem mit Fokus auf Listbox nach Timerevent
 
Das liegt aber nicht an der Listbox sondern am Webbrowser, welcher den Fokus stiehlt.
Empfehlung: Nimm falls möglich die Indy Komponenten anstatt TWebbrowser.

Delphi-Quellcode:
IdHTTP.Get('http://localhost/status.php?id=' + AIDs[i]);

FVNSSoft 27. Dez 2009 14:24

Re: Problem mit Fokus auf Listbox nach Timerevent
 
Danke für die schnelle Hilfe, ich werde es so mal probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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