Steuerelemente hinzufügen und entfernen Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Nussbeisser
Posts: 113
Joined: 17 Jul 2019, 08:49

Steuerelemente hinzufügen und entfernen

Post by Nussbeisser » 16 Jan 2021, 17:18

Guten Abend,
Ich möchte bei klick auf + (Plus) Button weitere Steuerelemente hinzufügen bei - (Minus) Button, die zuletzt hinzugefügte Steuerelemente entfernen
Das Problem ist, wenn ich Steuerelemente entferne, mache ich das mit GuiControl, Hide, wenn ich anschließend erneut Steuerelemente hinzufügen will, kommt die Meldung dass die Variable bereits existieren.
Gui, Destroy ist keine alternative und GuiControl, Delete ist noch nicht implementiert
Wie kann ich mein Vorhaben realisieren?
schöne Grüße

Code: Select all

#NoEnv
#SingleInstance, force

StartPos := 1
A := 1
B := 1
C := 1
Gui, Add, Button, w80 gHinzufuegen, +
Gui, Add, Button,  wp x+ gEntfernen, -
Gui, Add, Text, xm w120 vAA%A%, &Vorname:
Gui, Add, Text,x+ wp vBB%B%, &Nachname:
Gui, Add, Text,x+ wp vCC%C%, &Alter:
Gui, Add, Edit,xm wp vA%A%
Gui, Add, Edit,x+ wp vB%B%
Gui, Add, Edit,x+ wp VC%C%
Gui, Add, Button, w80 xm Default gOkay , OK
Gui, Show, w380 h600
Return


Hinzufuegen:
Gui, +OwnDialogs
	if (StartPos = 10)
	{
	MsgBox, Maximal anzahl erreicht!
	Return
	}
A++
B++
C++
AA++
BB++
CC++	Loop, 1
	{
	Gui, Add, Text, xm w120 vAA%A%, &Vorname:
	Gui, Add, Text,x+ wp vBB%B%, &Nachname:
	Gui, Add, Text,x+ wp vCC%C%, &Alter:
	Gui, Add, Edit,xm wp vA%A%
	Gui, Add, Edit,x+ wp vB%B%
	Gui, Add, Edit,x+ wp vC%C%
	}

Gui, Show, w380 h600
StartPos++
Return

Entfernen:
Gui, +OwnDialogs
Gui, Submit, NoHide


	if (A = 1) || (B = 1) || (C = 1)
	{
	MsgBox, Es existieren keine zusatzfelder
	Return
	}


GuiControl, Hide, A%A%
GuiControl, Hide, B%B%
GuiControl, Hide, C%C%
GuiControl, Hide, AA%A%
GuiControl, Hide, BB%B%
GuiControl, Hide, CC%C%
StartPos--
A--
B--
C--
Return

Okay:
Gui, +OwnDialogs
Gui, Submit, NoHide
	Loop, % StartPos
	{
	Werte .= A%A_index% ";" B%A_index% ";" C%A_Index% "`n"

	}
MsgBox, % Werte
Werte := ""
Return


GuiClose:
GuiEscape:
Exitapp
User avatar
pizzapizze
Posts: 44
Joined: 08 May 2019, 15:38

Re: Steuerelemente hinzufügen und entfernen  Topic is solved

Post by pizzapizze » 16 Jan 2021, 20:36

Hallo,
Ich habe die Steuerelemente einfach alle schon vorgeladen, sodass es keine Komplikationen mehr gibt.
So funktioniert es jedenfalls.
Hier der veränderte Code, Ich habe die Änderungen markiert:

Code: Select all

#NoEnv
#SingleInstance, force

StartPos := 0
A := 1
B := 1
C := 1
n := 0	;Änderung
abc = ABC
Gui, Add, Button, w80 gHinzufuegen, +
Gui, Add, Button,  wp x+ gEntfernen, -

Loop, 10	;Änderung...
{
	Gui, Add, Text, +Hidden xm w120 vAA%A_Index%, &Vorname:
	Gui, Add, Text, +Hidden x+ wp vBB%A_Index%, &Nachname:
	Gui, Add, Text, +Hidden x+ wp vCC%A_Index%, &Alter:
	Gui, Add, Edit, +Hidden xm wp vA%A_Index%
	Gui, Add, Edit, +Hidden x+ wp vB%A_Index%
	Gui, Add, Edit, +Hidden x+ wp VC%A_Index%
}	;...Änderung

Gui, Add, Button, w80 xm Default gOkay , OK
Gui, Show, w380 h600
Return


Hinzufuegen:
Gui, +OwnDialogs
	if (StartPos = 10)
	{
	MsgBox, Maximal anzahl erreicht!
	Return
	}

n++	;Änderung

A++
B++
C++
AA++
BB++
CC++

Loop, Parse, abc	;Änderung...
{
	GuiControl, Show, %A_LoopField%%n%
	GuiControl, Show, %A_LoopField%%A_LoopField%%n%
}	;...Änderung

Gui, Show, w380 h600
StartPos++
Return

Entfernen:
Gui, +OwnDialogs
Gui, Submit, NoHide


	if (n = 0)	;Änderung
	{
	MsgBox, Es existieren keine zusatzfelder
	Return
	}

Loop, Parse, abc	;Änderung...
{
	GuiControl, Hide, %A_LoopField%%n%
	GuiControl, Hide, %A_LoopField%%A_LoopField%%n%
}
n--	;...Änderung

StartPos--
A--
B--
C--
Return

Okay:
Gui, +OwnDialogs
Gui, Submit, NoHide
	Loop, % StartPos
	{
	Werte .= A%A_index% ";" B%A_index% ";" C%A_Index% "`n"

	}
MsgBox, % Werte
Werte := ""
Return


GuiClose:
GuiEscape:
Exitapp
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Steuerelemente hinzufügen und entfernen

Post by just me » 17 Jan 2021, 06:24

Moin,

man kann zusätzlich die Option AutoSize nutzen, die die Fenstergröße automatisch an die sichtbaren Steuerelemente anpasst:

Code: Select all

#NoEnv
#SingleInstance, Force
; ----------------------------------------------------------------------------------------------------------------------
AnzZeilen := 1
MaxZeilen := 10
; ----------------------------------------------------------------------------------------------------------------------
Gui, Add, Button, w80 gHinzufuegen, +
Gui, Add, Button,  wp x+ gEntfernen, -
Gui, Add, Text, xm w120, &Vorname:
Gui, Add, Text,x+0 wp, &Nachname:
Gui, Add, Text,x+0 wp, &Alter:
Gui, Add, Edit,xm wp vA%AnzZeilen%
Gui, Add, Edit,x+0 wp vB%AnzZeilen%
Gui, Add, Edit,x+0 wp VC%AnzZeilen%
Loop {
   If (A_Index > 1) {
      Gui, Add, Edit, xm wp Hidden Disabled vA%A_Index%
      Gui, Add, Edit, x+0 wp Hidden Disabled vB%A_Index%
      Gui, Add, Edit, x+0 wp Hidden Disabled VC%A_Index%
   }
} Until (A_Index = MaxZeilen)
GuiControlGet, A1, Pos
GuiControlGet, A2, Pos
DeltaY := A2Y - A1Y  ; Differenz zwischen zwei Feldzeilen für die Bewegung des Buttons
BtnY := A2Y          ; Buttonposition, anfänglich auf der zweiten Feldzeile
Gui, Add, Button, xm y%BtnY% w80 xm Default vBtnOK gOkay, OK
Gui, Show, AutoSize, Eingabe
Return
; ----------------------------------------------------------------------------------------------------------------------
Hinzufuegen:
Gui, +OwnDialogs
If (AnzZeilen = MaxZeilen)
{
   MsgBox, 16, Hinzufügen, Maximal Anzahl erreicht!
   Return
}
AnzZeilen++
BtnY += DeltaY
GuiControl, Move, BtnOK, y%BtnY%
GuiControl, -Disabled -Hidden, A%AnzZeilen%
GuiControl, -Disabled -Hidden, B%AnzZeilen%
GuiControl, -Disabled -Hidden, C%AnzZeilen%
Gui, Show, AutoSize
Return
; ----------------------------------------------------------------------------------------------------------------------
Entfernen:
Gui, +OwnDialogs
If (AnzZeilen = 1)
{
   MsgBox, 16, Entfernen, Es existieren keine Zusatzfelder!
   Return
}
GuiControl, , A%AnzZeilen%
GuiControl, +Disabled +Hidden, A%AnzZeilen%
GuiControl, , B%AnzZeilen%
GuiControl, +Disabled +Hidden, B%AnzZeilen%
GuiControl, , C%AnzZeilen%
GuiControl, +Disabled +Hidden, C%AnzZeilen%
BtnY -= DeltaY
GuiControl, Move, BtnOK, y%BtnY%
AnzZeilen--
Gui, Show, AutoSize
Return
; ----------------------------------------------------------------------------------------------------------------------
Okay:
Gui, +OwnDialogs
Gui, Submit, NoHide
Loop, %AnzZeilen%
{
   Werte .= A%A_Index% ";" B%A_Index% ";" C%A_Index% "`n"
}
MsgBox, %Werte%
Werte := ""
Return
; ----------------------------------------------------------------------------------------------------------------------
GuiClose:
GuiEscape:
Exitapp
Nussbeisser
Posts: 113
Joined: 17 Jul 2019, 08:49

Re: Steuerelemente hinzufügen und entfernen

Post by Nussbeisser » 17 Jan 2021, 08:24

Danke, euch beiden! Super Idee!
Post Reply

Return to “Ich brauche Hilfe”