 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Rock'n'Goth Alien
Anmeldedatum: 15.02.2008 Beiträge: 14 Wohnort: Hannover
|
Verfasst am: Di Feb 26, 2008 10:06 am Titel: Gui an anderes Gui heften? |
|
|
Also ich habe 2 GUIs (Gui, 1 & Gui, 2). Das erste wird bei Programmstart gestartet, das zweite kann über einen Schalter aktiviert werden. Nun möchte ich aber auch das das zweite Gui am ersten "klebt".
Das heißt wenn ich das erste Gui verschiebe das andere mitgezogen wird. (Da ich das zweite Gui Optisch am ersten angepasst habe, dass es wie eine erweiterung des ersten Guis wirkt, allerdings mit seperaten Einblende Effekt)
Ist sowas Möglich? |
|
| Nach oben |
|
 |
BoBo¨ Gast
|
Verfasst am: Di Feb 26, 2008 2:51 pm Titel: |
|
|
Ja. Nennt sich auch 'andocken'. Gabs mal was von dazu majkinator - leider hat (d)er gerade ein kleines Nationalproblem (Serbien vs Kosovo), fühlt sich unverstanden und von Faschisten/Rassisten verfolgt, und hat aus diesem Grund alle Tools zurückgezogen.
Gibt aber sicher was dazu zu finden. Good luck  |
|
| Nach oben |
|
 |
Lirave
Anmeldedatum: 02.10.2007 Beiträge: 173 Wohnort: Dresden
|
|
| Nach oben |
|
 |
denick
Anmeldedatum: 15.09.2006 Beiträge: 1230 Wohnort: Berlin
|
Verfasst am: Mi Feb 27, 2008 7:01 am Titel: |
|
|
Moin,
hier mal eine mögliche Alternative mit (zugegeben simplen) Einblendeffekt:
| Code: | #NoEnv
SetWinDelay, 0
MO := " Mehr Optionen"
Gui, +LastFound ; Macht die Gui zum LastFoundWindow
Gui, Margin, 20, 20 ; Automatische Abstände
Gui, Add, Edit, w200, Edit1
Gui, Add, Checkbox, vCB1 gCBDropDown, % MO
Gui, Show, Hide ; Gui verborgen anzeigen
WinGetPos, , , , H1 ; Erste Fensterhöhe holen
Gui, Add, Edit, vED2 w200 r5, Edit2 ; Noch ein Edit anhängen
Gui, Show, Hide AutoSize ; Gui verborgen anzeigen
GuiControl Hide, ED2 ; Zweites Edit verbergen
WinGetPos, , , , H2 ; Zweite Fensterhöhe holen
WinMove, , , , , , H1 ; Gui auf erste Höhe setzen
Gui, Show, , DropDownFenster ; Gui anzeigen
HDiff := H2 - H1 ; Höhendifferenz
Return
GuiClose:
GuiEscape:
ExitApp
CBDropDown:
; Gui sicherheitshalber zum LastFoundWindow machen
Gui, +LastFound
; Checkbox abfragen
GuiControlGet, CB1
; Wenn die Checkbox angehakt ist, Fenter vergrößern (1),
; sonst Fenster verkleinern (-1)
I := (CB1 ? 1 : -1)
; Wenn die Checkbox angehakt ist, Fenster vergrößern (Startwert = H1),
; sonst Fenster verkleinern (Startwert = H2)
H := (CB1 ? H1 : H2)
; Wenn das Fenster vergößert wird, zweites Edit anzeigen
If (I = 1) {
GuiControl, Show, ED2
}
; Und los!
Loop {
; Wenn A_Index > Höhendifferenz, ist Schluss
If (A_Index > HDiff) {
Break
}
H += I
WinMove, , , , , , H
}
; Wenn das Fenster verkleinert wurde, zweites Edit verbergen
If (I = -1) {
GuiControl, Hide, ED2
}
Return |
Das läuft auf halbwegs aktuellen Rechnern recht gut.
EDIT:
Hier noch etwas für die Freunde von Zweitfenstern:
| Code: | #NoEnv
; SetBatchLines, -1
SetWinDelay, 0
WM_WINDOWPOSCHANGED := 0x47
Gui, 1:Margin, 20, 20
Gui, 1:Add, Edit, w200, Edit 1
Gui, 1:Add, Checkbox, vCB1 gCBGUI2, Weitere Optionen
Gui, 1:Show, , Angeklebt
Gui, 1:+LastFound
Gui1ID := WinExist()
Gui, 2:+Owner1 -Caption +0x400000 ; 0x400000 = mit normalem Rahmen
Gui, 2:Margin, 20, 20
Gui, 2:Add, Edit, w200 r5, Edit 2
Gui, 2:Show, Hide
Gui, 2:+LastFound
Gui2ID := WinExist()
Return
GuiClose:
GuiEscape:
ExitApp
CBGUI2:
GuiControlGet, CB1, 1:
If (CB1) {
DetectHiddenWindows, On
WinGetPos, X, Y, , H, ahk_id %Gui1ID%
WinMove, ahk_id %Gui2ID%, , X, Y + H - 1
Gui, 2:Show, NA
OnMessage(WM_WINDOWPOSCHANGED, "Ankleben")
DetectHiddenWindows, Off
} Else {
Gui, 2:Hide
OnMessage(WM_WINDOWPOSCHANGED, "")
}
Return
Ankleben() {
Global Gui1ID
Global Gui2ID
If (A_Gui = 1) {
WinGetPos, X, Y, , H, ahk_id %Gui1ID%
WinMove, ahk_id %Gui2ID%, , X, Y + H - 1
}
} |
_________________ Hilfe zur Hilfe
(de)nick |
|
| Nach oben |
|
 |
Rock'n'Goth Alien
Anmeldedatum: 15.02.2008 Beiträge: 14 Wohnort: Hannover
|
Verfasst am: Do Feb 28, 2008 10:06 am Titel: |
|
|
Dankeschön, ist fast genau das was ich mir vorgestellt habe.
Hatte auch diesen Einblende Effekt im Sinn
Nur das ich ihn über DllCall aufgerufen hatte:
| Code: | Gui, 2:Show, w267 h191 Hide
Wait := DllCall("AnimateWindow","UInt",GUIID,"Int",250,"UInt",0x60004) |
Bekommt man das zweite Fenster auch über dem ersten? Kriege ich leider nicht hin, erstellt es leider immer nur unter dem ersten...
Wie auf diesem Beispiel:
Edit: Falls es relevant sein sollte: Die Guis sind nur Bilder ohne Rahmen oder Caption
Zuletzt bearbeitet von Rock'n'Goth Alien am Do Feb 28, 2008 10:11 am, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
IsNull
Anmeldedatum: 20.12.2006 Beiträge: 1297 Wohnort: CH
|
|
| Nach oben |
|
 |
Rock'n'Goth Alien
Anmeldedatum: 15.02.2008 Beiträge: 14 Wohnort: Hannover
|
Verfasst am: Do Feb 28, 2008 10:21 am Titel: |
|
|
Brauche das als Optisch ansprechendes Einstellungsmenü (Siehe Bild in meinem vorherigen Post) für mein erstes kleines Programm.
Werde diese Möglichkeit der Einblendung auch später in anderen Programmen nutzen wollen.
(Wenn ich erfahrener bin, weitere Programme zu schreiben. Hab jetzt erstmal etwas kleines einfaches gewählt, was allerdings auch immer weiter wächst^^)
Veröffentliche es aber auch hier sobald ich damit fertig bin  |
|
| 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
|