AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Form soll Kontrolle übenehmen
Thema durchsuchen
Ansicht
Themen-Optionen

Form soll Kontrolle übenehmen

Ein Thema von volkergeorg · begonnen am 20. Mai 2012 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
volkergeorg

Registriert seit: 29. Mär 2012
Ort: Lebus
9 Beiträge
 
Delphi XE7 Professional
 
#1

Form soll Kontrolle übenehmen

  Alt 20. Mai 2012, 19:54
Hallo,
ich rufe mit ShellExecute 2 PDF-Reader auf und öffne 2 verschiedene ca. 200 MB große PDF-Dateien auf einer bestimmten Seite.
Das klappt alles gut. Jetzt soll meine Anwendung wieder die Kontrolle übernehmen. Das erreiche ich mit SetForeground. Wenn die PDF-Datein noch nicht ganz geöffnet
sind, also die Reader noch arbeiten, gehen diese immer wieder in den Vordergrund. Die Ladezeiten der PDF-Datein sind unterschiedlich. Dadurch ist eine Lösung über eine
Programmpause nicht optimal. Die Ladezeit iat ja auch von der Rechnergeschwindigkeit abhängig. Ich kann zwar über das HANDLE prüfen ob die PDF-Reader laufen und dann
mein Programm mit SetForeGround aktiv machen, dann sind aber oft noch nicht die PDF-Datein geladen und die Reader übernehmen wieder die Kontrolle. Bei einer Maussteuerung meines Programms ist das nicht wichtig, da das Formular ja sichtbar ist. Das Prgramm soll aber auch ausschliesslich mit der Tastatur bedienbar sein und da muss es nicht nur sichtbar, sondern auch aktiv sein. Gibt es eine Möglichkeit?
Volker
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 08:04
Einfach alle 100ms 'SetForeground' aufrufen bzw. prüfen, ob das eigene Fenster aktiv ist?

"Topmost" ist auch ein Kandidat.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 08:21
Es gibt eine Funktion oder Nachricht, die einem sagt, ob ein Prozess gerade beschäftigt ist oder nicht. Wenn die Reader die PDFs fertig geladen haben, sollten sie nicht mehr beschäftigt sein. leider fällt mir der Name der Funktion/Nachricht im Moment nicht ein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 08:27
Hilft das hier weiter: http://www.delphi-forum.de/viewtopic...=460553#460553?
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 09:46
Wozu öffnest du diese Programme/PDFs, wenn sie dann keiner lesen darf?
PS: Man kann PDFs auch in einem TOleContainer, innerhalb des eigenen Programms laden.



Im Programm wird eine Message gesendet, wenn das eigene Programm den Eingabefokus verliert.

Timer:
Aber wer sagt dir, daß dann keiner der Kunden in der Titelleiste auf eines der PDFs geklickt hat, weil er das lesen will?
Währe doch sehr nett, wenn dann ständig soein blödes Programm sich immer wieder in den Fordergrund holt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
volkergeorg

Registriert seit: 29. Mär 2012
Ort: Lebus
9 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 09:59
Danke für Eure Hilfe,
DaddyH, Dein Link sieht sehr interessant aus, werde ihn auspropieren.

Hallo Himitsu, Du kennst das Programm nicht. Für den Nutzer ist in diesem Fall nur die angezeigte Seite von Interese und er möchte dann
über das aktive Form das Programm in seinem Ablauf weiter steuern. Trotzdem danke für Deine Antwort.

Wenn es klappt, melde ich Erfolg.

Danke
Volker
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#7

AW: Form soll Kontrolle übenehmen

  Alt 21. Mai 2012, 10:08
Natürlich kenn ich es nicht.
Hat uns schließlich noch niemand verraten, warum die PDFs unbedingt im Hintergrund offen sein müssen.


Aber wie gesagt, der Timer ist keine gute Lösung
und es gibt ein Event (OnDeactivate in TApplicationEvents oder notfalls in Application), welches natürlich immer gefeuert wird, wenn sich ein anderes Programm den Fokus mopst (ausversehn, oder weil es der Benutzer so wollte).

Und es gibt die ActiveX-Variante.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
21. Mai 2012, 13:27
Dieses Thema wurde am "21. May 2012, 13:27 Uhr" von "TBx" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Programmieren allgemein" verschoben.
volkergeorg

Registriert seit: 29. Mär 2012
Ort: Lebus
9 Beiträge
 
Delphi XE7 Professional
 
#9

AW: Form soll Kontrolle übenehmen

  Alt 24. Mai 2012, 16:08
Danke himitsu
Volker
  Mit Zitat antworten Zitat
volkergeorg

Registriert seit: 29. Mär 2012
Ort: Lebus
9 Beiträge
 
Delphi XE7 Professional
 
#10

AW: Form soll Kontrolle übenehmen

  Alt 24. Mai 2012, 16:31
Hallo himitsu,
ich habe mein Problem gelöst mit OnDeactivate in TApplicationEvents.
Danke für Deinen Tip, geht wunderbar.
Danke aber auch an alle anderen, für Ihre Tips.

Volker
Volker
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:53 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