AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fenstergröße im wsNormal-Zustand trotz wsMaximized
Thema durchsuchen
Ansicht
Themen-Optionen

Fenstergröße im wsNormal-Zustand trotz wsMaximized

Ein Thema von Delphi-Freak · begonnen am 3. Sep 2005 · letzter Beitrag vom 4. Sep 2005
Antwort Antwort
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#1

Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 3. Sep 2005, 12:06
Hi!

Ich würde gerne die Fenstergröße auslesen, die das Fenster haben würde, wenn es "wiederhergestellt" wäre, also mit WindowState = wsNormal; allerdings ist das Fenster maximiert (wsMaximized) und wenn ich auf die Eigenschaften TForm.Width bzw. TForm.Height zugreife, dann bekomme ich die Breite bzw. Höhe des maximierten Zustands heraus.
Bis jetzt habe ich es so ähnlich gemacht:
Delphi-Quellcode:
WindowState := wsNormal;
ShowMessage(IntToStr(Width) + ' x ' + IntToStr(Height)); //die Werte irgendwie auslesen - nur als Beispiel ShowMessage
WindowState := wsMaximized;
Jedoch ist dann das Problem, dass man das Fenster kleiner und wieder größer werden sieht. Ich habe auch schon probiert mit Perform bzw. SendMessage WM_SETREDRAW auf 0 und danach wieder auf 1 zu setzen, aber es bringt nicht wirklich was.
Übrigens der Sinn dahinter ist, die Größe des Fensters fürs nächste Mal abzuspeichern; allerdings möchte ich keine fertige Komponente, die das in die Registry oder in eine Ini-Datei speichert, weil ich meine Einstellungen selber in eine eigene Datei speichern möchte.

LG, Gerhard
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 3. Sep 2005, 12:10
Siehe MSDN-Library durchsuchenGetWindowPlacement

Also etwa so:
Delphi-Quellcode:
var
  wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(Form1.Handle, wp);
  // in wp.rcNormalPosition steht das "normale" Fensterrechteck
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 17:52
Bitte entschuldige, dass ich erst heute antworte
Ich habe deine Antwort schon gelesen, nur ist dann folgender Fehler rausgekommen, woran ich mich zuerst selbst versucht habe, aber zu keinem Ergebnis gekommen bin; und dann bin ich nicht zum Weiterprobieren gekommen...
Inzwischen habe ich jetzt den Beschluss gefasst, dass ich nicht draufkomme und deshalb frage ich wieder: Also der Fehler
Zitat:
E2010 Inkompatible Typen: 'PWindowPlacement' und 'tagWINDOWPLACEMENT'
direkt bei dieser Zeile:
Code:
GetWindowPlacement(MainForm.Handle, [u]wp[/u]);
Ich hoffe du (ihr) könnt mir wieder weiterhelfen (*liebschau* )
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 17:55
wie hast du den "wp" definiert? GetWindowPlacement erwartet einen Pointer auf TWindowPlacement
Delphi-Quellcode:
var wp: TWindowPlacement;
begin
[...]
GetWindowPlacement(MainForm.Handle, @wp);
steht im msdn und in der Hilfe so, einfal nächstes mal lesen und verstehen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 18:11
Ich wusste den Prototypen nicht mehr genau. Einfach wie SirThornberry schon geschrieben hat ein @ vor den 2. Parameter setzen.

Zitat von SirThornberry:
steht im msdn und in der Hilfe so, einfal nächstes mal lesen und verstehen.
Normalerweise ist es aber so, dass Zeigerparameter, die nicht NULL sein dürfen, als var oder const und eben nicht als Zeiger deklariert werden. Bei der API-Funktion GetClientRect wird der zweite Parameter ja auch als var lpRect: TRect und nicht als lpRect: PRect angegeben.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 18:14
naja, einmal "Strg + Shift + Space" nach dem Klammer auf und man sieht es. Hab da am Anfang auch nicht so hingeschaut und ewig gesucht. Alternativ zu dem "@" kann man natürlich auch gleich ein PWindowPlacement übergeben
Delphi-Quellcode:
var
  wp: PWindowPlacement;
begin
  new(wp);
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(Form1.Handle, wp);
  dispose(wp);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 18:20
Aaaah, der @-Operator, ich erinnere mich, bei den ShellNotifyIcons braucht man den auch. Aber was macht der eigentlich genau, habe mich das schon manchmal gefragt

@SirThornberry: Mit PWindowPlacement habe ich es auch probiert, aber die Zeile "new(wp);" habe ich nicht hineingegeben, weil ich diese Funktion nicht kenne, aus der Hilfe bin ich auch nicht gescheit geworden, meine Frage also, was macht diese Funktion?

Übrigens vielen Dank mal euch beiden!!!

LG
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 18:25
das "@" gibt die Speicheradresse von der Variablen zurück. Kurz und knapp: Die funktion erwartet einen Pointer/Zeiger(auf eine Speicheradresse).
PWindowPlacement ist vom Typ Pointer (typisierter Pointer).
Allerdings ist dies eben nur ein Pointer und zeigt nur irgendwo hin, Speicher muss man also selbst reservieren und das geht mit "new". Freigegeben wird der Speicher dann mit "dispose" (es gibt noch andere Funktionen für diese Zwecke).

bei variante1 (@wp) wird also die Adresse durch das "@" geholt und
bei variante2 (wp(PWindowplacement)) ist wp bereits die Adresse/Pointer und diesen muss man noch auf speicher zeigen lassen.

Bezüglich des @ operators etc. empfehle ich die Grundlagen von http://www.delphi-source.de

falls du englisch kannst hier ein Beitrag mit Link zu einem tollen Lehrvideo zu Pointern (sollte man gesehen haben (selbst ohne Englischkenntnisse verständlich))
http://www.delphipraxis.net/internal...=357830#357830
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 19:47
Super danke!!! Jetzt wird mir einiges klarer!
Bezüglich des Videos: Am Englischen happerts nicht (meines Erachtens ist Englisch sogar eine ziemlich "schöne" Sprache), momentan nur an der Zeit. Aber ich denke, ich werde noch darauf zurück kommen und mir es dann anschauen!

Also vielen Dank nochmal!!!
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: Fenstergröße im wsNormal-Zustand trotz wsMaximized

  Alt 4. Sep 2005, 22:54
Zitat von SirThornberry:
naja, einmal "Strg + Shift + Space" nach dem Klammer auf und man sieht es.
So meinte meinte ich das nicht ... ich hab' halt mein Delphi nicht immer offen und es aus dem Kopf hingetippt (und ich habe nicht immer die Geduld, nur dafür 5 Minuten zu warten bis es fertig geladen ist, um in Windows.pas eine Definition nachzuschlagen).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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:21 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