Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

letzte Position merken

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
icp137



Anmeldedatum: 05.11.2007
Beiträge: 9

BeitragVerfasst am: Mo Nov 05, 2007 10:05 am    Titel: letzte Position merken Antworten mit Zitat

Hallo,

bin neu hier und hab jetzt mal für meine Kollegen und mich ein Makro mit Gui geschrieben (ist mein erstes Makro).
Ich hätte nun gerne, dass die GUI sich die letzte Position auf der man sie auf dem Bildschirm geschoben hat auch merkt, wenn man es wieder öffnet.
Geht so was???

Gruß icp137
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: Mo Nov 05, 2007 10:25 am    Titel: Antworten mit Zitat

Willkommen Cool

Zitat:
Ich hätte nun gerne, dass die GUI sich die letzte Position auf der man sie auf dem Bildschirm geschoben hat auch merkt, wenn man es wieder öffnet.
Geht so was???
Antwort: Ja.

Check mal:
OnExit
If ...
IniWrite
RegWrite
FileAppend
FileRead/-Line
WinMove
Gui, Show, Hide
Gui, Destroy
Gui, Cancel
Nach oben
icp137



Anmeldedatum: 05.11.2007
Beiträge: 9

BeitragVerfasst am: Mo Nov 05, 2007 10:56 am    Titel: Antworten mit Zitat

Danke für die schnelle Antwort! Very Happy

aber wo muss ich des bei mir einfügen, hab schon ein paar Varianten auspobiert aber jedesmal gibts ein Fehler?


Code:

Gui +LastFound +AlwaysOnTop +ToolWindow
Gui, Add, Text,y10, Dichte (kg/dm³):
Gui, Add, Edit, vDichte ym
Gui, Add, Button, default x80 y35, Abbrechen
Gui, Add, Button, default w40 x180 y35, Hilfe
Gui, Add, Button, default w75 x0 y35, OK
Gui, Show,, SE Masse  V0.4.0
return

GuiClose:
ButtonAbbrechen:
GuiEscape:
ExitApp
ButtonHilfe:
run, G:\CAD\Solid_Edge\Zubehoer\Makros\SE_Masse\readme.txt
ExitApp
ButtonOK:
Gui, Submit

...

ExitApp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Mo Nov 05, 2007 11:32 am    Titel: Antworten mit Zitat

Moin,

Code:
#NoEnv

OnExit, Exit_App

Gui +LastFound +AlwaysOnTop +ToolWindow
Gui, Add, Text,y10, Dichte (kg/dm³):
Gui, Add, Edit, vDichte ym
Gui, Add, Button, default x80 y35, Abbrechen
Gui, Add, Button, default w40 x180 y35, Hilfe
Gui, Add, Button, default w75 x0 y35, OK
Gui, Show,, SE Masse  V0.4.0
Return

GuiClose:
ButtonAbbrechen:
GuiEscape:
ExitApp

ButtonHilfe:
Run, G:\CAD\Solid_Edge\Zubehoer\Makros\SE_Masse\readme.txt
ExitApp

ButtonOK:
Gui, Submit, NoHide
; ...
Return

Exit_App:
Gui, +LastFound
Gui, +OwnDialogs  ; nur für die MsgBox
WinGetPos, _X, _Y, _W, _H
MsgBox, % "Gui X :`t" . _X . "`n"
        . "Gui Y :`t" . _Y . "`n"
        . "Gui W :`t" . _W . "`n"
        . "Gui H :`t" . _H . "`n"
ExitApp


Übrigens: Es kann nur einen (default button) geben Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
icp137



Anmeldedatum: 05.11.2007
Beiträge: 9

BeitragVerfasst am: Mo Nov 05, 2007 1:53 pm    Titel: Antworten mit Zitat

des von denick is glaub ich nicht ganz des was ich wollte.

Der Tipp von Bo Bo ist glaub ich, das was in die richtige Richtung geht. Das Makro soll eine Datei mit den letzten Positions-Daten des Fensters schreiben, die er dann beim nächsten öffnen wieder einliest...

Aber ich hab echt keinen Schimmer wie ich des in mein Makro integrieren soll (bin auf dem Gebiet echt noch ein Anfänger Rolling Eyes )

Hilfe Exclamation Question
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: Mo Nov 05, 2007 2:02 pm    Titel: Antworten mit Zitat

Zitat:
des von denick is glaub ich nicht ganz des was ich wollte.
Ich denke doch. Wenn ich den Code richtig interpretiere, zeigt denick dir in einer MsgBox die ermittelten Coordinaten beim Schließen der Gui an. Diese müsstest du nur abspeichern, und beim nächsten Gui-Auruf/-Start als Default-Gui-Position übernehmen. Period. Cool
Nach oben
AGU
Gast





BeitragVerfasst am: Mo Nov 05, 2007 2:57 pm    Titel: Antworten mit Zitat

Sofern es dir hilft, hier ein paar Codepassage aus meinem BBCodeWriter, der ebenfalls die Positition des Fensters speichert.

Zu Beginn des Skripts lese ich die Daten aus der Ini wieder aus, gebe zugleich aber Standardwerte vor, falls die Ini nicht ausgelesen werden kann:
Code:
  ; Read previous Gui dimensions and position
  IniRead, PosX, BBCodeWriter.ini, GuiPosition  , X_Pos, 331
  IniRead, PosY, BBCodeWriter.ini, GuiPosition  , Y_Pos, 339
  IniRead, GuiW, BBCodeWriter.ini, GuiDimension , W_Gui, 610
  IniRead, GuiH, BBCodeWriter.ini, GuiDimension , H_Gui, 272


Angezeigt wird der Gui dann per:
Code:
Gui, 1:Show, x%PosX% y%PosY% w%GuiW% h%GuiH%, %ScriptName% - %lang_gui1_TtlGui1%


Bei Schließen des GUIs werden die Werte zurück in die Ini geschrieben:
Code:
GuiClose:
  ...
  If GuiIsNotMinimized
    {
      ; Save Gui size and position
      WinGetPos, PosX, PosY, GuiW, GuiH, %ScriptName%
      GuiW := GuiW - 8   ; Subtract Gui Margin and border width
      GuiH := GuiH - 46  ; Subtract title bar and menu height
  ...

      ; Write sizes and positions to BBCodeWriter.ini
      IniWrite, %PosX%, BBCodeWriter.ini, GuiPosition , X_Pos
      IniWrite, %PosY%, BBCodeWriter.ini, GuiPosition , Y_Pos   
      IniWrite, %GuiW%, BBCodeWriter.ini, GuiDimension, W_Gui
      IniWrite, %GuiH%, BBCodeWriter.ini, GuiDimension, H_Gui     
  ...


Die Werte bei der Subtraktion von GuiW und GuiH werden sich bei dir höchtwahrscheinlich unterscheiden.
Die Variable GuiIsNotMinimized wird im GuiSize Label gesetzt, und ist je nachdem, ob der GUI minimiert ist, true bzw. false.
Code:
GuiSize:
  ; If Gui is not minimized
  If (A_EventInfo <> 1)
    {
      GuiIsNotMinimized := true
      ...
    }
  Else
    GuiIsNotMinimized := false
Return


Die Erklärung für die Variable A_EventInfo findet sich in der Doku zu GUI in der Sektion zu GuiSize:
Zitat:
GuiSize: Launched when the window is resized, minimized, maximized, or restored. The built-in variables A_GuiWidth and A_GuiHeight contain the new width and height of the window's client area, which is the area excluding title bar, menu bar, and borders. In addition, A_EventInfo and ErrorLevel will both contain one of the following digits:

0: The window has been restored, or resized normally such as by dragging its edges.
1: The window has been minimized.
2: The window has been maximized.


Die Überprüfung auf Minimierung ist wichtig, da für den Fall, in dem der GUI im minimierten Zustand geschlossen wird, sehr exotische Werte in die Ini geschrieben werden.
Bei nächsten öffnen wird der GUI mit den dann ausgelesenen Werten aus der Ini nicht mehr korrekt angezeigt.

So, ich hoffe das war ausführlich genug. Smile
_____________________
Gruß AGU
Nach oben
icp137



Anmeldedatum: 05.11.2007
Beiträge: 9

BeitragVerfasst am: Mo Nov 05, 2007 3:12 pm    Titel: Antworten mit Zitat

Wow super, jetzt habs selbst ich verstanden Wink

Vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Mo Nov 05, 2007 9:08 pm    Titel: Antworten mit Zitat

Moin,

jetzt will ich den Ball mal flach halten:

Code:
#NoEnv

_INI := "SE_MASSE.INI"
_Section := "GUI"
_X := "ERROR"
_Y := "ERORR"

SetWorkingDir, % A_ScriptDir

IniRead, _X, % _INI, % Section, % "GUI_X"
IniRead, _Y, % _INI, % Section, % "GUI_Y"
If (_Y = "ERROR") {
   _X := "ERROR"
}

GuiOptions := ((_X = "ERROR") ? "Center" : "x" . _X . " y" . _Y)

OnExit, Exit_App

Gui +LastFound +AlwaysOnTop +ToolWindow
Gui, Add, Text,y10, Dichte (kg/dm³):
Gui, Add, Edit, vDichte ym
Gui, Add, Button, default x80 y35, Abbrechen
Gui, Add, Button, default w40 x180 y35, Hilfe
Gui, Add, Button, default w75 x0 y35, OK
Gui, Show, % GuiOptions, SE Masse  V0.4.0
Return

GuiClose:
ButtonAbbrechen:
GuiEscape:
ExitApp

ButtonHilfe:
Run, G:\CAD\Solid_Edge\Zubehoer\Makros\SE_Masse\readme.txt
ExitApp

ButtonOK:
Gui, Submit, NoHide
; ...
Return

Exit_App:
Gui, +LastFound
Gui, +OwnDialogs  ; nur für die MsgBox
WinGetPos, _X, _Y
IniWrite, % _X, % _INI, % Section,  % "GUI_X"
IniWrite, % _Y, % _INI, % Section,  % "GUI_Y"
ExitApp

In Bezug auf die bisher gegebene Gui (+LastFound +AlwaysOnTop +ToolWindow) sollte das wohl reichen.
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gapa



Anmeldedatum: 20.05.2007
Beiträge: 283
Wohnort: Nagold

BeitragVerfasst am: Mo Nov 05, 2007 9:21 pm    Titel: Ternäre Operatoren Antworten mit Zitat

@Denick:
Du stehst auf tärnere Operatoren, gelle Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Mo Nov 05, 2007 9:28 pm    Titel: Antworten mit Zitat

Moin Gapa,

sind sie nicht einfach nur elegant?

Ich erwarte viel von AHK 2.0 Wink
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast






BeitragVerfasst am: Mo Nov 05, 2007 9:40 pm    Titel: Ternäre Operatoren Antworten mit Zitat

@denick:
Doch irgendwie schon. Diese ewigen If-abfragen hängen einfach zum Hals raus, sind jedoch nicht immer ersetzbar Sad
Nach oben
Gapa



Anmeldedatum: 20.05.2007
Beiträge: 283
Wohnort: Nagold

BeitragVerfasst am: Mo Nov 05, 2007 9:40 pm    Titel: GAST Antworten mit Zitat

jaja....Gast = Gapa Mad
_________________
Gestern war heute noch morgen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name
AGU
Gast





BeitragVerfasst am: Di Nov 06, 2007 9:56 am    Titel: Antworten mit Zitat

OT:

Zitat:
Ich erwarte viel von AHK 2.0
Du hast nicht zufällig Informationen, wann damit zu rechnen ist?

Hab das schon lange nicht mehr im englischen Forum verfolgt, aber soviel ich weiß arbeitet Chris hauptsächlich daran.
Hat er schon irgend etwas verlauten lassen?
____________________
Gruß AGU
Nach oben
denick



Anmeldedatum: 15.09.2006
Beiträge: 1238
Wohnort: Berlin

BeitragVerfasst am: Di Nov 06, 2007 11:58 am    Titel: Antworten mit Zitat

Moin,

leider nein.

Ich bin nicht mehr oft im englischen Forum. Aber es munkelt ja schon länger, dass es fast fertig sei, und die schon etwas längere Pause seit dem letzten Release nährt meine Hoffnung.
_________________
Hilfe zur Hilfe

(de)nick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de