AGB  ·  Datenschutz  ·  Impressum  







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

Fenster im Vordergrund halten

Ein Thema von Xzeer · begonnen am 3. Jan 2008 · letzter Beitrag vom 3. Jan 2008
Antwort Antwort
Benutzerbild von Xzeer
Xzeer

Registriert seit: 6. Jul 2007
106 Beiträge
 
#1

Fenster im Vordergrund halten

  Alt 3. Jan 2008, 11:44
Hallo,

Ich habe mir einen Einstellungsdialog gebastellt, wo der Benutzer unteranderem die Funktion wählen kann, dass das Programm immer im Vordergrund ist. Ich speicher die Einstellung in einer INI-Datei.

Delphi-Quellcode:
//Procedure in Form1
procedure TForm1.Vordergrund(s: string);
begin
  if s='upthen
  SetWindowPos(Self.Handle ,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  if s='downthen
  SetWindowPos(Self.Handle ,HWND_NOTOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

//Procedure in Form2
if checkbox3.Checked=true then
  begin
    ini02.WriteString('einstellungen','imvor','true'); //einstellung speichen
    Form1.Vordergrund('up'); //einstellungs sezten
  end
  else
  begin
    ini02.WriteString('einstellungen','imvor','false'); //einstellung speichen
    Form1.Vordergrund('down'); //einstellung setzten
  end;
Das funktioniert auch perfekt. Jetzt möchte ich aber auch, dass das Programm nach einem erneuten starten direkt wieder im Vordergrund ist. Also habe ich im OnCreate von Form1 geschrieben:

Delphi-Quellcode:
if ini01.ReadString('einstellungen','imvor','false')='truethen
  Form1.Vordergrund('up');
Aber beim starten ist Form1 nicht im Vordergrund. Wo ist denn da mein Denkfehler?
Marvin
Xzeer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 11:47
1. Wieso benutzt Du nicht ReadBool/WriteBool, anstatt mit Strings herumzuhantieren?
2. Du schreibst in ini02 und liest aus ini01. Stimmt das so?
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 Xzeer
Xzeer

Registriert seit: 6. Jul 2007
106 Beiträge
 
#3

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 11:59
zu1) mhh weiß auch nicht, dass hab ich mir mal so angewöhnt.... geht doch auch, oder nicht?

zu2) ja das stimmt so, jedes form hat seine eigene INI-Variable
Marvin
Xzeer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 12:06
Ich würde es noch einfacher machen:
Delphi-Quellcode:
procedure TForm1.Vordergrund(WindowPos: Integer);
begin
  SetWindowPos(Self.Handle, WindowPos, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
Aufruf mit:
Vordegrund(HWND_TOPMOST); Und dann entsprechend mit Read- / WriteInteger lesen bzw. schreiben.
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
 
#5

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 12:07
Zeig mal die komplette Create-Methode von Form1. Außerdem finde ich den String-Parameter etwas verfehlt
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 Xzeer
Xzeer

Registriert seit: 6. Jul 2007
106 Beiträge
 
#6

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 12:17
Ok, dann baue ich das nochmal ein bisschen um

Um die Fensterposition dann wieder normal zu machen, müsste ich doch dann schreiben:

Vordergrund(HWND_NOTOPMOST); Oder?
Marvin
Xzeer
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 12:21
Jupp, aber sowas könntest du dir durch Ausprobieren auch selbst beantworten.
  Mit Zitat antworten Zitat
Benutzerbild von Xzeer
Xzeer

Registriert seit: 6. Jul 2007
106 Beiträge
 
#8

Re: Fenster im Vordergrund halten

  Alt 3. Jan 2008, 12:35
ahhhh, ich hab den fehler gefunden. Ich wollte die Form im OnCreate in den Vordergrund setzten, aber das geht natürlich nicht, denn die Form ist doch an dem Punkt noch gar nicht aufgebaut.

Naja danke für eure Hilfe, jetzt ist meine Procedure immerhin schön suber programmiert
Marvin
Xzeer
  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 19:42 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