AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

API-Funktion SetWindowPos

Ein Thema von juezi · begonnen am 25. Sep 2007 · letzter Beitrag vom 22. Okt 2007
Antwort Antwort
Seite 1 von 3  1 23   
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#1

API-Funktion SetWindowPos

  Alt 25. Sep 2007, 07:21
Hallo Zusammen

ich habe folgendes Problem, wenn ich

//Formular in den Vordergrund bringen
SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,He ight,SWP_SHOWWINDOW);
form1.Activate;
edit1.SetFocus;

ausführe, wird mir das Fenster in den Vordergrund geholt ist aber nicht aktiv, ich muss es dann anklicken um es zu aktivieren.

Vielen Dank für Eure Hilfe
juezi
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#2

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 08:26
Moin, Moin,

versuche es doch mal mit SetForegroundWindow(Self.Handle);
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#3

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 08:41
Hallo,

vielen Dank für die schnelle Antwort, leider hab ich das gleiche Problem.
(Vielleicht eine kurze Erklärung zu meiner Anwendung, ich muss ein Formular anzeigen um einen Barcode der über die Tastatureingabe eingelesen wird an eine andere Fremde Applikation via dll übergeben, dafür habe ich gedacht das ich das Formular einblende, der Barcode wird dann über ein edit Feld eingelesen.)

Danke
juezi
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 08:55
Hallo,

bei mir funktioniert es so, wie von pstruh beschrieben. Der Focus ist auf dem Edit und ich kann sofort losschreiben, ohne irgendetwas anklicken zu müssen (allerdings nur, wenn meine Form vorher nur im Hintergrund war - sollte sie minimiert sein, funktioniert es nicht).

Delphi-Quellcode:
   SetForegroundWindow(Self.Handle);
   Edit1.SetFocus;
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#5

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 08:58
Hallo,

nochmals danke, Du hast gesagt Du legst Deine Anwendung nur in den Hintergrund, welchen Befehlt
verwendest Du hierfür, ich verwende zum Ausblenden den Befehl
SetWindowPos(handle,HWND_BOTTOM,Left,Top,Width,Hei ght,SWP_SHOWWINDOW);

Danke
juezi
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 09:05
Keinen Befehl; habe es manuell in den Hintergrund gelegt, indem ich ein anderes Fenster nach vorn geholt habe.

Edit:
Wenn Du es so machst, dann funktioniert es auch, sollte Deine Form, oder die ganze Application minimiert sein:
Delphi-Quellcode:
PostMessage(Self.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(Self.Handle);
Edit1.SetFocus;
Edit 2:
Um nochmal auf eine Deiner letzteren Fragen zurück zu kommen; mit
PostMessage(Self.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); könntest Du Deine Form natürlich vorher minimieren.
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#7

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 14:00
Hallo,

vielen Dank, leider habe ich immer noch das Problem mit dem anklicken, kann es daran liegen das ich meine Abfrage zum Einblenden und Ausblenden in einem Timer laufen habe?

Hier der Quellcode meines Timers

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Dll-Funktion um Maschinenstatus abzufragen
MepRemote_ReadMachineState(eStatus);

//Wenn der Status 9 ist muss das Formular eingeblendet werden um den Barcode abzufragen
if (eStatus = 9) and not Fl_SetSerial then
begin
//Barcode-Formular in den Vordergrund bringen
PostMessage(Self.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(Self.Handle);
Edit1.SetFocus
end;

//Wenn der Status ungleich 9 ist muss das Formular wieder in den Hintergrund gehen
if (eStatus <> 9) then
begin
Fl_SetSerial := false;
edit1.Text := '';
//Barcode-Formular in den Hintergrund bringen
SetWindowPos(handle,HWND_BOTTOM,Left,Top,Width,Hei ght,SWP_SHOWWINDOW);

end;
end;

Danke
juezi
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 14:19
Zitat von juezi:
kann es daran liegen das ich meine Abfrage zum Einblenden und Ausblenden in einem Timer laufen habe?
Bzgl. der Kernaussage: Nein. Meine Tests basierten ebefalls auf einem Timer.

Deinen Code habe ich mir nicht durchgelesen; formatier ihn bitte.
  Mit Zitat antworten Zitat
juezi

Registriert seit: 24. Nov 2004
34 Beiträge
 
#9

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 16:06
Hallo,

ich habe meinen Code einfach aus Delphi hierein kopiert,
kann ich den Code hier formatieren lassen?
Danke
juezi
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: API-Funktion SetWindowPos

  Alt 25. Sep 2007, 16:10
Die Delphi-Tags im Schreibfenster drumherumlegen.  Code
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:40 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