 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
icp137
Anmeldedatum: 05.11.2007 Beiträge: 9
|
Verfasst am: Mo Nov 05, 2007 10:05 am Titel: letzte Position merken |
|
|
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 |
|
 |
BoBo¨ Gast
|
Verfasst am: Mo Nov 05, 2007 10:25 am Titel: |
|
|
Willkommen
| 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
|
Verfasst am: Mo Nov 05, 2007 10:56 am Titel: |
|
|
Danke für die schnelle Antwort!
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 |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Mo Nov 05, 2007 11:32 am Titel: |
|
|
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  _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
icp137
Anmeldedatum: 05.11.2007 Beiträge: 9
|
Verfasst am: Mo Nov 05, 2007 1:53 pm Titel: |
|
|
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 )
Hilfe  |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Mo Nov 05, 2007 2:02 pm Titel: |
|
|
| 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.  |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Mo Nov 05, 2007 2:57 pm Titel: |
|
|
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.
_____________________
Gruß AGU |
|
| Nach oben |
|
 |
icp137
Anmeldedatum: 05.11.2007 Beiträge: 9
|
Verfasst am: Mo Nov 05, 2007 3:12 pm Titel: |
|
|
Wow super, jetzt habs selbst ich verstanden
Vielen Dank! |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Mo Nov 05, 2007 9:08 pm Titel: |
|
|
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 |
|
 |
Gapa
Anmeldedatum: 20.05.2007 Beiträge: 283 Wohnort: Nagold
|
Verfasst am: Mo Nov 05, 2007 9:21 pm Titel: Ternäre Operatoren |
|
|
@Denick:
Du stehst auf tärnere Operatoren, gelle  |
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1238 Wohnort: Berlin
|
Verfasst am: Mo Nov 05, 2007 9:28 pm Titel: |
|
|
Moin Gapa,
sind sie nicht einfach nur elegant?
Ich erwarte viel von AHK 2.0  _________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
Gast
|
Verfasst am: Mo Nov 05, 2007 9:40 pm Titel: Ternäre Operatoren |
|
|
@denick:
Doch irgendwie schon. Diese ewigen If-abfragen hängen einfach zum Hals raus, sind jedoch nicht immer ersetzbar  |
|
| Nach oben |
|
 |
Gapa
Anmeldedatum: 20.05.2007 Beiträge: 283 Wohnort: Nagold
|
Verfasst am: Mo Nov 05, 2007 9:40 pm Titel: GAST |
|
|
jaja....Gast = Gapa  _________________ Gestern war heute noch morgen! |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Di Nov 06, 2007 9:56 am Titel: |
|
|
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
|
Verfasst am: Di Nov 06, 2007 11:58 am Titel: |
|
|
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 |
|
 |
|
|
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
|