Post by Umek » 17 Oct 2015, 17:55
Ich verneige mich vor dir, deiner Geduld und der ermutigenden Worte. Dank dieser konnte ich das ganze zum Einsatz bringen. Das Beste dabei ist, dass ich anfange es zu verstehen. Die Suchfunktion funktioniert auch. Zudem konnte ich einige Fehler ausmerzen. Das muss alles noch verfeinert werden, aber das Grundgerüst steht. Selbst mit 500 Einträgen läuft es noch recht geschmeidig.
Code: Select all
SetBatchLines, -1
#SingleInstance, Force
;----------[ Konstanten
Title=APP
Version=1.0
App := Title . " " . Version
AppINI := "config.ini"
; AppICO = %A_ScriptDir%\icons\app.ico
SBIconDefault = %A_ScriptDir%\icons\app.ico
TBSSection := "Textbausteine"
CrmCN=Herr Mustermann
CrmDate=31.12.2015
CrmCust=12345
CrmOrder=852825689421
Gosub, ReadINI
;----------[ GUI 1 Tray Menü
Menu, Tray, NoStandard ; Removes all standard (non-custom) menu items
Menu, Tray, Icon, %AppICO%
Menu, Tray, Add, Öffnen, G1Show
Menu, Tray, Add, Beenden, G1ExitApp
Menu, Tray, Default, Öffnen ; Make a double-click on tray icon show the GUI.
;----------[ GUI 1
Gui, 1:Font, s8 Q5, Arial
Gui, 1:Add, Button, Hidden Default gG1ButtonOK, OK
Gui, 1:Add, Edit, x2 y2 w320 h21 vEdit1 gG1FindIt,
Gui, 1:Add, ListView, x2 y25 w750 h296 hwndLV1 vLV gG1ListViewEvents +AltSubmit -Multi, Nummer|Beschreibung|Textbaustein
LV_ModifyCol(1,50)
LV_ModifyCol(2,300)
; LV_ModifyCol(2,728)
LV_ModifyCol(3,300)
If (AppDB.Length() = 0)
SelectedTBS := 0
Else
SelectedTBS := 1
Gui, 1:Add, Text, x8 y328 w744 h58 vG1Edit2 c999999,
;----------[ GUI 1 Statusbar
Gui, 1:Font, s8 Bold Q5, Arial
Gui, 1:Add, StatusBar, h30 vG1StatusBar +Theme,
SB_SetIcon(SBIconDefault)
SB_SetParts(330, 330, 100)
SB_SetText("Auftrags-Nr.: " CrmOrder, 1)
SB_SetText("Endkunde: " CrmCN, 2)
SB_SetText("Gesamt: " TBSAmount, 3)
;----------[ GUI 1 Dateimenü
Menu, FileMenu, Add, &Schließen, G1Hide
Menu, FileMenu, Add, &Beenden, G1ExitApp
; Menu, EditMenu, Add, &Neuer Eintrag, G2New
Menu, EditMenu, Add, &Eintrag ändern, G2Show
Menu, FileMenuBar, Add, &Datei, :FileMenu
Menu, FileMenuBar, Add, &Bearbeiten, :EditMenu
Gui, 1:Menu, FileMenuBar
GUIsVisible := False
Gosub, G1FillLV
Return
;----------[ Initialisierungsdatei lesen
ReadINI:
AppDB := [] ; leeres Array für die Werte ause der INI erstellen
IniRead, TBSAmount, %AppINI%, %TBSSection%, Quantity
Loop, %TBSAmount%
{
IniRead, TBSTitle, %AppINI%, %TBSSection%, Title%A_Index%
IniRead, TBSText, %AppINI%, %TBSSection%, Text%A_Index%
AppDB.Push({Title: TBSTitle, Text: TBSText}) ; eingelesenen Werte anhängen
}
Gosub, G1FillLV
Return
;----------[ GUI 1 MenuHandler
G1MenuHandler:
Return
;----------[ GUI 1 Button Ok
G1ButtonOK:
Gui,1: Submit, Nohide
FocusedTBS =
GuiControlGet, FocusedTBS, FocusV
FocusedTBS := % LV_GetNext(0, "Focused")
if (FocusedTBS = "0")
{
MsgBox 8240, %GuiTitel%, Bitte wähle einen Eintrag aus.`t
return
}
LV_GetText(TBSNo, FocusedTBS, 1)
LV_GetText(TBSTitle, FocusedTBS, 2)
LV_GetText(TBSText, FocusedTBS, 3)
MsgBox, TBSNo:`t%TBSNo%`nTBSTitle:`t%TBSTitle%`nTBSText:`t%TBSText%
Gosub, G1Insert
Return
;----------[ GUI 1 ListView befüllen
G1FillLV:
Gui, 1:Default
Gui, ListView, LV
GuiControl, -Redraw, LV
LV_Delete()
For Index, TBS In AppDB
LV_Add("", Index, TBS.Title, TBS.Text)
GuiControl, +Redraw, LV
LV_Modify(SelectedTBS, "Select Focus Vis")
ShowPreview()
Return
;----------[ GUI 1 Suche
G1FindIt:
Gui,1: Submit, Nohide
SRC := Edit1
if (SRC="")
{
Gosub,G1FillLV
Return
}
LV_Delete()
For Index, TBS In AppDB
{
LR := TBS.Title
if SRC<>
{
re:="iUms)" Src ; Great job Mr. Unknown!
if InStr(Src,A_Space) ; prepare regular expression to ensure search is done independent on the position of the words
re:="iUms)(?=.*" RegExReplace(Src,"iUms)(.*)\s","$1)(?=.*") ")"
if RegExMatch(LR, re)
{
LV_Add("", Index, TBS.Title, TBS.Text)
}
ShowPreview()
}
else
Continue
}
Return
;----------[ GUI 1 Show
!1::
G1Show:
{
if GUIsVisible {
Gui, 1:Hide
Menu, Tray, Rename, Schließen, Öffnen
}
else {
Gui, Show, w754 h415, %App%
Menu, Tray, Rename, Öffnen, Schließen
GuiControl, , Edit1
GuiControl, Focus, Edit1
}
GUIsVisible := not GUIsVisible
}
ShowPreview()
Return
;----------[ GUI 1 schließen
G1Hide:
Gui, 1:Hide
; Gui, 1:Cancel ; Fenster verstecken
GUIsVisible := not GUIsVisible
Menu, Tray, Rename, Schließen, Öffnen
GuiControl, , Edit1, ; Edit1 leeren
GuiControl, , G1Edit2, ; G1Edit2 leeren
Return
;----------[ GUI 1 Textbaustein einfügen
G1Insert:
Gui, 1:Hide
GUIsVisible := not GUIsVisible
Menu, Tray, Rename, Schließen, Öffnen
TBSText := RegExReplace(TBSText, "<n>", "`n")
SendInput, %TBSText%
Return
;----------[ GUI 1 ListView Aktionen
G1ListViewEvents:
Gui,1:Default
Gui,1:ListView, LV
if(A_GuiEvent == "I") {
ShowPreview()
}
if(A_GuiEvent == "Normal") {
ShowPreview()
}
if(A_GuiEvent == "DoubleClick") {
LV_GetText(TBSText, A_EventInfo, 3)
MsgBox, %TBSText%
Gosub, G1Insert
}
Return
;----------[ Initialisierungsdatei speichern
G1SaveINI:
IniDelete, %AppINI%, %TBSSection% ; vorhandene Section löschen
NewAppDB := "Quantity=" . AppDB.Length() ; section neu aufbauen und ...
For Index, TBS In AppDB
NewAppDB .= "`nTitle" . Index . "=" . TBS.Title . "`nText" . Index . "=" . TBS.Text
IniWrite, %NewAppDB%, %AppINI%, %TBSSection% ; ... wegschreiben
GuiControl, Focus, LV
Return
;----------[ Anwendung beenden
G1ExitApp:
ExitApp
return
;----------[ GUI 2
G2Show:
If (LV_GetNext() <> 0) {
SelectedTBS := LV_GetNext()
}
If (SelectedTBS = 0) {
TBSNo := ""
TBSTitle := ""
TBSText := ""
}
Else {
LV_GetText(TBSNo, SelectedTBS, 1)
LV_GetText(TBSTitle, SelectedTBS, 2)
LV_GetText(TBSText, SelectedTBS, 3)
}
Gui, 1:+Disabled
Gui, 2:Default
Gui, 2: +AlwaysonTop
Gui, 2:-MaximizeBox -MinimizeBox -Resize -SysMenu +ToolWindow
Gui, 2:Add, Edit, x2 y2 w576 h20 vG2Edit2, Edit
Gui, 2:Add, Edit, x2 y24 w576 h140 vG2Edit3, Edit
Gui, 2:Add, Edit, Hidden vG2Edit1,
Gui, 2:Add, Button, x178 y166 w100 h23 gG2Add, &Neu
Gui, 2:Add, Button, x278 y166 w100 h23 vG2BtnChange gG2Change, &Ändern
Gui, 2:Add, Button, x378 y166 w100 h23 vG2BtnDelete gG2Delete, &Löschen
Gui, 2:Add, Button, x478 y166 w100 h23 gG2Close, &Abbrechen
;----------[ GUI 2 Dateimenü
Menu, G2FileMenu, Add, Neu, G2Add
Menu, G2PluginsMenu, Add, Zwischenablage, G2PluginsMenuHandler
Menu, G2FileMenuBar, Add, &Datei, :G2FileMenu
Menu, G2FileMenuBar, Add, &Plugins, :G2PluginsMenu
Gui, 2:Menu, G2FileMenuBar
If (SelectedTBS = 0) {
GuiControl, 2:Disable, G2BtnChange
GuiControl, 2:Disable, G2BtnDelete
}
GuiControl, 2:, G2Edit1, %TBSNo%
GuiControl, 2:, G2Edit2, %TBSTitle%
GuiControl, 2:, G2Edit3, %TBSText%
;----------[ GUI 2 Statusbar
Gui, 2:Font, s8 Bold Q5, Arial
Gui, 2:Add, StatusBar, h30 vG2StatusBar +Theme,
SB_SetIcon(SBIconDefault)
SB_SetParts(380, 100, 100)
SB_SetText("Textbaustein: ", 1)
SB_SetText("Nummer: " TBSNo, 2)
SB_SetText("Gesamt: " TBSAmount, 3)
Gui, 2:Show, w580 h214, Eintrag Nr. %TBSNo%
Return
;----------[ GUI 2 Neuer Eintrag
G2Add:
Gui, Submit, NoHide
Gui, 1:Default
Gui, 1:ListView, LV
NewTBS := AppDB.Push({Title: G2Edit2, Text: G2Edit3})
LV_Insert(NewTBS, "", NewTBS, G2Edit2, G2Edit3)
LV_Modify(NewTBS, "Select Focus Vis")
SelectedTBS := NewTBS
GoSub, G2Close
Return
;----------[ GUI 2 Eintrag ändern
G2Change:
Gui, Submit, NoHide
Gui, 1:Default
Gui, 1:ListView, LV
AppDB[SelectedTBS] := {Title: G2Edit2, Text: G2Edit3}
LV_Modify(SelectedTBS, "Col2", G2Edit2)
LV_Modify(SelectedTBS, "Col3", G2Edit3)
GoSub, G2Close
Return
;----------[ GUI 2 Eintrag löschen
G2Delete:
Gui, 1:-Disabled
Gui, 2:Destroy
AppDB.RemoveAt(SelectedTBS)
If (SelectedTBS > AppDB.Length())
SelectedTBS := AppDB.Length()
Gosub, G1FillLV
GoSub, G2Close
Return
;----------[ GUI 2 schließen
G2Close:
Gui, 1:-Disabled
Gui, 2:Destroy
Gui, 1:Default
GuiControl, 1:Focus, LV
Gosub, G1SaveINI
Return
;----------[ GUI 2 Menü-Aktion
G2PluginsMenuHandler:
MsgBox, Plugin Menu
Return
;----------[ GUI 1 Verschiedene Tastenkürzel
#If ActiveControlIs("SysListView321")
~Up::
ShowPreview()
Return
~Down::
ShowPreview()
Return
#If
;----------[ Endloser Bildlauf in der ListView
; http://www.autohotkey.com/board/topic/41349-example-endless-scrolling-in-a-listview/
#If (WinActive(App) and ActiveControlIs("Edit1"))
Up::
PreviousPos:=LV_GetNext()
if (PreviousPos = 0) ; exeption, focus is not on listview this will allow you to jump to last item via UP key
{
ControlSend, SysListview321, {End}, %AppWindow%
Return
}
ControlSend, SysListview321, {Up}, %AppWindow%
ItemsInList:=LV_GetCount()
ChoicePos:=PreviousPos-1
if (ChoicePos <= 1)
ChoicePos = 1
if (ChoicePos = PreviousPos)
ControlSend, SysListview321, {End}, %AppWindow%
ShowPreview()
Return
Down::
PreviousPos:=LV_GetNext()
ControlSend, SysListview321, {Down}, %AppWindow%
ItemsInList:=LV_GetCount()
ChoicePos:=PreviousPos+1
if (ChoicePos > ItemsInList)
ChoicePos := ItemsInList
if (ChoicePos = PreviousPos)
ControlSend, SysListview321, {Home}, %AppWindow%
ShowPreview()
Return
#If
ActiveControlIs(Control)
{
ControlGetFocus, FocusedControl, A
if (FocusedControl = Control)
Return 1
else
Return 0
}
ShowPreview()
{
Gui, Submit, NoHide
SelItem := LV_GetNext()
if (SelItem = 0)
SelItem = 1
LV_GetText(TBSText, SelItem, 3) ; Suche in der Sektion zwei (TBSText)
TBSText := RegExReplace(TBSText, "<n>", "`n")
GuiControl, , G1Edit2, %TBSText%
}
;----------[ Anwendung neu laden
!r::
G1Reload:
Reload
Return
;----------[ Anwendung beenden
GuiClose:
ExitApp
Code: Select all
[Textbausteine]
Quantity=99
Title1=Test Titel Nummer 1.
Text1=Ich bin der Textbaustein Nummer 1.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title2=Test Titel Nummer 2.
Text2=Ich bin der Textbaustein Nummer 2.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title3=Test Titel Nummer 3.
Text3=Ich bin der Textbaustein Nummer 3.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title4=Test Titel Nummer 4.
Text4=Ich bin der Textbaustein Nummer 4.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title5=Test Titel Nummer 5.
Text5=Ich bin der Textbaustein Nummer 5.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title6=Test Titel Nummer 6.1
Text6=Ich bin der Textbaustein Nummer 6.<n>Zeile 2<n>Zeile 3<n>Zeile 4<n>Zeile 5
Title7=Test Titel Nummer 7.
Text7=Ich bin der Textbaustein Nummer 7.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title8=Test Titel Nummer 8.
Text8=Ich bin der Textbaustein Nummer 8.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title9=Test Titel Nummer 9.
Text9=Ich bin der Textbaustein Nummer 9.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title10=Test Titel Nummer 10.
Text10=Ich bin der Textbaustein Nummer 10.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title11=Test Titel Nummer 11.
Text11=Ich bin der Textbaustein Nummer 11.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title12=Test Titel Nummer 12.
Text12=Ich bin der Textbaustein Nummer 12.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title13=Test Titel Nummer 13.
Text13=Ich bin der Textbaustein Nummer 13.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title14=Test Titel Nummer 14.
Text14=Ich bin der Textbaustein Nummer 14.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title15=Test Titel Nummer 15.
Text15=Ich bin der Textbaustein Nummer 15.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title16=Test Titel Nummer 16.
Text16=Ich bin der Textbaustein Nummer 16.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title17=Test Titel Nummer 17.
Text17=Ich bin der Textbaustein Nummer 17.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title18=Test Titel Nummer 18.
Text18=Ich bin der Textbaustein Nummer 18.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title19=Test Titel Nummer 19.
Text19=Ich bin der Textbaustein Nummer 19.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title20=Test Titel Nummer 20.
Text20=Ich bin der Textbaustein Nummer 20.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Wenn das bei meinem Skript noch recht übersichtlich ist, bin ich erst recht gespannt auf das Tutorial. Wahrscheinlich wirft das mein Gefühl, es ein bisschen was verstanden zu haben, komplett über den Haufen. Mir haben in dem ersten Teil nur etwas die Beispiele gefehlt. Deshalb habe ich auch versucht mir das Ding mit den ganzen Schaltflächen zu bauen. Um zu verstehen, wie das in der Praxis aussieht. Aber ich habe eigentlich nichts mit Programmierung am Hut. Daher bin ich hin und wieder mal etwas begriffsstutzig. Ok, … in den letzten Tagen nur.
Ich vermute der Großteil hier hat bereits Erfahrung und liest das Tutorials wie ein Zeitungartikel.
Herzlichen Dank für's wiederbeleben und deine Engelsgeduld!
Viele viele Grüße
Umek
Ich verneige mich vor dir, deiner Geduld und der ermutigenden Worte. Dank dieser konnte ich das ganze zum Einsatz bringen. Das Beste dabei ist, dass ich anfange es zu verstehen. Die Suchfunktion funktioniert auch. Zudem konnte ich einige Fehler ausmerzen. Das muss alles noch verfeinert werden, aber das Grundgerüst steht. Selbst mit 500 Einträgen läuft es noch recht geschmeidig.
[code=autohotkey file=Untitled.ahk]SetBatchLines, -1
#SingleInstance, Force
;----------[ Konstanten
Title=APP
Version=1.0
App := Title . " " . Version
AppINI := "config.ini"
; AppICO = %A_ScriptDir%\icons\app.ico
SBIconDefault = %A_ScriptDir%\icons\app.ico
TBSSection := "Textbausteine"
CrmCN=Herr Mustermann
CrmDate=31.12.2015
CrmCust=12345
CrmOrder=852825689421
Gosub, ReadINI
;----------[ GUI 1 Tray Menü
Menu, Tray, NoStandard ; Removes all standard (non-custom) menu items
Menu, Tray, Icon, %AppICO%
Menu, Tray, Add, Öffnen, G1Show
Menu, Tray, Add, Beenden, G1ExitApp
Menu, Tray, Default, Öffnen ; Make a double-click on tray icon show the GUI.
;----------[ GUI 1
Gui, 1:Font, s8 Q5, Arial
Gui, 1:Add, Button, Hidden Default gG1ButtonOK, OK
Gui, 1:Add, Edit, x2 y2 w320 h21 vEdit1 gG1FindIt,
Gui, 1:Add, ListView, x2 y25 w750 h296 hwndLV1 vLV gG1ListViewEvents +AltSubmit -Multi, Nummer|Beschreibung|Textbaustein
LV_ModifyCol(1,50)
LV_ModifyCol(2,300)
; LV_ModifyCol(2,728)
LV_ModifyCol(3,300)
If (AppDB.Length() = 0)
SelectedTBS := 0
Else
SelectedTBS := 1
Gui, 1:Add, Text, x8 y328 w744 h58 vG1Edit2 c999999,
;----------[ GUI 1 Statusbar
Gui, 1:Font, s8 Bold Q5, Arial
Gui, 1:Add, StatusBar, h30 vG1StatusBar +Theme,
SB_SetIcon(SBIconDefault)
SB_SetParts(330, 330, 100)
SB_SetText("Auftrags-Nr.: " CrmOrder, 1)
SB_SetText("Endkunde: " CrmCN, 2)
SB_SetText("Gesamt: " TBSAmount, 3)
;----------[ GUI 1 Dateimenü
Menu, FileMenu, Add, &Schließen, G1Hide
Menu, FileMenu, Add, &Beenden, G1ExitApp
; Menu, EditMenu, Add, &Neuer Eintrag, G2New
Menu, EditMenu, Add, &Eintrag ändern, G2Show
Menu, FileMenuBar, Add, &Datei, :FileMenu
Menu, FileMenuBar, Add, &Bearbeiten, :EditMenu
Gui, 1:Menu, FileMenuBar
GUIsVisible := False
Gosub, G1FillLV
Return
;----------[ Initialisierungsdatei lesen
ReadINI:
AppDB := [] ; leeres Array für die Werte ause der INI erstellen
IniRead, TBSAmount, %AppINI%, %TBSSection%, Quantity
Loop, %TBSAmount%
{
IniRead, TBSTitle, %AppINI%, %TBSSection%, Title%A_Index%
IniRead, TBSText, %AppINI%, %TBSSection%, Text%A_Index%
AppDB.Push({Title: TBSTitle, Text: TBSText}) ; eingelesenen Werte anhängen
}
Gosub, G1FillLV
Return
;----------[ GUI 1 MenuHandler
G1MenuHandler:
Return
;----------[ GUI 1 Button Ok
G1ButtonOK:
Gui,1: Submit, Nohide
FocusedTBS =
GuiControlGet, FocusedTBS, FocusV
FocusedTBS := % LV_GetNext(0, "Focused")
if (FocusedTBS = "0")
{
MsgBox 8240, %GuiTitel%, Bitte wähle einen Eintrag aus.`t
return
}
LV_GetText(TBSNo, FocusedTBS, 1)
LV_GetText(TBSTitle, FocusedTBS, 2)
LV_GetText(TBSText, FocusedTBS, 3)
MsgBox, TBSNo:`t%TBSNo%`nTBSTitle:`t%TBSTitle%`nTBSText:`t%TBSText%
Gosub, G1Insert
Return
;----------[ GUI 1 ListView befüllen
G1FillLV:
Gui, 1:Default
Gui, ListView, LV
GuiControl, -Redraw, LV
LV_Delete()
For Index, TBS In AppDB
LV_Add("", Index, TBS.Title, TBS.Text)
GuiControl, +Redraw, LV
LV_Modify(SelectedTBS, "Select Focus Vis")
ShowPreview()
Return
;----------[ GUI 1 Suche
G1FindIt:
Gui,1: Submit, Nohide
SRC := Edit1
if (SRC="")
{
Gosub,G1FillLV
Return
}
LV_Delete()
For Index, TBS In AppDB
{
LR := TBS.Title
if SRC<>
{
re:="iUms)" Src ; Great job Mr. Unknown!
if InStr(Src,A_Space) ; prepare regular expression to ensure search is done independent on the position of the words
re:="iUms)(?=.*" RegExReplace(Src,"iUms)(.*)\s","$1)(?=.*") ")"
if RegExMatch(LR, re)
{
LV_Add("", Index, TBS.Title, TBS.Text)
}
ShowPreview()
}
else
Continue
}
Return
;----------[ GUI 1 Show
!1::
G1Show:
{
if GUIsVisible {
Gui, 1:Hide
Menu, Tray, Rename, Schließen, Öffnen
}
else {
Gui, Show, w754 h415, %App%
Menu, Tray, Rename, Öffnen, Schließen
GuiControl, , Edit1
GuiControl, Focus, Edit1
}
GUIsVisible := not GUIsVisible
}
ShowPreview()
Return
;----------[ GUI 1 schließen
G1Hide:
Gui, 1:Hide
; Gui, 1:Cancel ; Fenster verstecken
GUIsVisible := not GUIsVisible
Menu, Tray, Rename, Schließen, Öffnen
GuiControl, , Edit1, ; Edit1 leeren
GuiControl, , G1Edit2, ; G1Edit2 leeren
Return
;----------[ GUI 1 Textbaustein einfügen
G1Insert:
Gui, 1:Hide
GUIsVisible := not GUIsVisible
Menu, Tray, Rename, Schließen, Öffnen
TBSText := RegExReplace(TBSText, "<n>", "`n")
SendInput, %TBSText%
Return
;----------[ GUI 1 ListView Aktionen
G1ListViewEvents:
Gui,1:Default
Gui,1:ListView, LV
if(A_GuiEvent == "I") {
ShowPreview()
}
if(A_GuiEvent == "Normal") {
ShowPreview()
}
if(A_GuiEvent == "DoubleClick") {
LV_GetText(TBSText, A_EventInfo, 3)
MsgBox, %TBSText%
Gosub, G1Insert
}
Return
;----------[ Initialisierungsdatei speichern
G1SaveINI:
IniDelete, %AppINI%, %TBSSection% ; vorhandene Section löschen
NewAppDB := "Quantity=" . AppDB.Length() ; section neu aufbauen und ...
For Index, TBS In AppDB
NewAppDB .= "`nTitle" . Index . "=" . TBS.Title . "`nText" . Index . "=" . TBS.Text
IniWrite, %NewAppDB%, %AppINI%, %TBSSection% ; ... wegschreiben
GuiControl, Focus, LV
Return
;----------[ Anwendung beenden
G1ExitApp:
ExitApp
return
;----------[ GUI 2
G2Show:
If (LV_GetNext() <> 0) {
SelectedTBS := LV_GetNext()
}
If (SelectedTBS = 0) {
TBSNo := ""
TBSTitle := ""
TBSText := ""
}
Else {
LV_GetText(TBSNo, SelectedTBS, 1)
LV_GetText(TBSTitle, SelectedTBS, 2)
LV_GetText(TBSText, SelectedTBS, 3)
}
Gui, 1:+Disabled
Gui, 2:Default
Gui, 2: +AlwaysonTop
Gui, 2:-MaximizeBox -MinimizeBox -Resize -SysMenu +ToolWindow
Gui, 2:Add, Edit, x2 y2 w576 h20 vG2Edit2, Edit
Gui, 2:Add, Edit, x2 y24 w576 h140 vG2Edit3, Edit
Gui, 2:Add, Edit, Hidden vG2Edit1,
Gui, 2:Add, Button, x178 y166 w100 h23 gG2Add, &Neu
Gui, 2:Add, Button, x278 y166 w100 h23 vG2BtnChange gG2Change, &Ändern
Gui, 2:Add, Button, x378 y166 w100 h23 vG2BtnDelete gG2Delete, &Löschen
Gui, 2:Add, Button, x478 y166 w100 h23 gG2Close, &Abbrechen
;----------[ GUI 2 Dateimenü
Menu, G2FileMenu, Add, Neu, G2Add
Menu, G2PluginsMenu, Add, Zwischenablage, G2PluginsMenuHandler
Menu, G2FileMenuBar, Add, &Datei, :G2FileMenu
Menu, G2FileMenuBar, Add, &Plugins, :G2PluginsMenu
Gui, 2:Menu, G2FileMenuBar
If (SelectedTBS = 0) {
GuiControl, 2:Disable, G2BtnChange
GuiControl, 2:Disable, G2BtnDelete
}
GuiControl, 2:, G2Edit1, %TBSNo%
GuiControl, 2:, G2Edit2, %TBSTitle%
GuiControl, 2:, G2Edit3, %TBSText%
;----------[ GUI 2 Statusbar
Gui, 2:Font, s8 Bold Q5, Arial
Gui, 2:Add, StatusBar, h30 vG2StatusBar +Theme,
SB_SetIcon(SBIconDefault)
SB_SetParts(380, 100, 100)
SB_SetText("Textbaustein: ", 1)
SB_SetText("Nummer: " TBSNo, 2)
SB_SetText("Gesamt: " TBSAmount, 3)
Gui, 2:Show, w580 h214, Eintrag Nr. %TBSNo%
Return
;----------[ GUI 2 Neuer Eintrag
G2Add:
Gui, Submit, NoHide
Gui, 1:Default
Gui, 1:ListView, LV
NewTBS := AppDB.Push({Title: G2Edit2, Text: G2Edit3})
LV_Insert(NewTBS, "", NewTBS, G2Edit2, G2Edit3)
LV_Modify(NewTBS, "Select Focus Vis")
SelectedTBS := NewTBS
GoSub, G2Close
Return
;----------[ GUI 2 Eintrag ändern
G2Change:
Gui, Submit, NoHide
Gui, 1:Default
Gui, 1:ListView, LV
AppDB[SelectedTBS] := {Title: G2Edit2, Text: G2Edit3}
LV_Modify(SelectedTBS, "Col2", G2Edit2)
LV_Modify(SelectedTBS, "Col3", G2Edit3)
GoSub, G2Close
Return
;----------[ GUI 2 Eintrag löschen
G2Delete:
Gui, 1:-Disabled
Gui, 2:Destroy
AppDB.RemoveAt(SelectedTBS)
If (SelectedTBS > AppDB.Length())
SelectedTBS := AppDB.Length()
Gosub, G1FillLV
GoSub, G2Close
Return
;----------[ GUI 2 schließen
G2Close:
Gui, 1:-Disabled
Gui, 2:Destroy
Gui, 1:Default
GuiControl, 1:Focus, LV
Gosub, G1SaveINI
Return
;----------[ GUI 2 Menü-Aktion
G2PluginsMenuHandler:
MsgBox, Plugin Menu
Return
;----------[ GUI 1 Verschiedene Tastenkürzel
#If ActiveControlIs("SysListView321")
~Up::
ShowPreview()
Return
~Down::
ShowPreview()
Return
#If
;----------[ Endloser Bildlauf in der ListView
; http://www.autohotkey.com/board/topic/41349-example-endless-scrolling-in-a-listview/
#If (WinActive(App) and ActiveControlIs("Edit1"))
Up::
PreviousPos:=LV_GetNext()
if (PreviousPos = 0) ; exeption, focus is not on listview this will allow you to jump to last item via UP key
{
ControlSend, SysListview321, {End}, %AppWindow%
Return
}
ControlSend, SysListview321, {Up}, %AppWindow%
ItemsInList:=LV_GetCount()
ChoicePos:=PreviousPos-1
if (ChoicePos <= 1)
ChoicePos = 1
if (ChoicePos = PreviousPos)
ControlSend, SysListview321, {End}, %AppWindow%
ShowPreview()
Return
Down::
PreviousPos:=LV_GetNext()
ControlSend, SysListview321, {Down}, %AppWindow%
ItemsInList:=LV_GetCount()
ChoicePos:=PreviousPos+1
if (ChoicePos > ItemsInList)
ChoicePos := ItemsInList
if (ChoicePos = PreviousPos)
ControlSend, SysListview321, {Home}, %AppWindow%
ShowPreview()
Return
#If
ActiveControlIs(Control)
{
ControlGetFocus, FocusedControl, A
if (FocusedControl = Control)
Return 1
else
Return 0
}
ShowPreview()
{
Gui, Submit, NoHide
SelItem := LV_GetNext()
if (SelItem = 0)
SelItem = 1
LV_GetText(TBSText, SelItem, 3) ; Suche in der Sektion zwei (TBSText)
TBSText := RegExReplace(TBSText, "<n>", "`n")
GuiControl, , G1Edit2, %TBSText%
}
;----------[ Anwendung neu laden
!r::
G1Reload:
Reload
Return
;----------[ Anwendung beenden
GuiClose:
ExitApp[/code]
[code=ini file=config.ini][Textbausteine]
Quantity=99
Title1=Test Titel Nummer 1.
Text1=Ich bin der Textbaustein Nummer 1.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title2=Test Titel Nummer 2.
Text2=Ich bin der Textbaustein Nummer 2.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title3=Test Titel Nummer 3.
Text3=Ich bin der Textbaustein Nummer 3.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title4=Test Titel Nummer 4.
Text4=Ich bin der Textbaustein Nummer 4.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title5=Test Titel Nummer 5.
Text5=Ich bin der Textbaustein Nummer 5.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title6=Test Titel Nummer 6.1
Text6=Ich bin der Textbaustein Nummer 6.<n>Zeile 2<n>Zeile 3<n>Zeile 4<n>Zeile 5
Title7=Test Titel Nummer 7.
Text7=Ich bin der Textbaustein Nummer 7.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title8=Test Titel Nummer 8.
Text8=Ich bin der Textbaustein Nummer 8.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title9=Test Titel Nummer 9.
Text9=Ich bin der Textbaustein Nummer 9.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title10=Test Titel Nummer 10.
Text10=Ich bin der Textbaustein Nummer 10.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title11=Test Titel Nummer 11.
Text11=Ich bin der Textbaustein Nummer 11.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title12=Test Titel Nummer 12.
Text12=Ich bin der Textbaustein Nummer 12.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title13=Test Titel Nummer 13.
Text13=Ich bin der Textbaustein Nummer 13.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title14=Test Titel Nummer 14.
Text14=Ich bin der Textbaustein Nummer 14.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title15=Test Titel Nummer 15.
Text15=Ich bin der Textbaustein Nummer 15.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title16=Test Titel Nummer 16.
Text16=Ich bin der Textbaustein Nummer 16.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title17=Test Titel Nummer 17.
Text17=Ich bin der Textbaustein Nummer 17.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title18=Test Titel Nummer 18.
Text18=Ich bin der Textbaustein Nummer 18.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title19=Test Titel Nummer 19.
Text19=Ich bin der Textbaustein Nummer 19.<n>Zeile 2<n>Zeile 3<n>Zeile 4
Title20=Test Titel Nummer 20.
Text20=Ich bin der Textbaustein Nummer 20.<n>Zeile 2<n>Zeile 3<n>Zeile 4[/code]
Wenn das bei meinem Skript noch recht übersichtlich ist, bin ich erst recht gespannt auf das Tutorial. Wahrscheinlich wirft das mein Gefühl, es ein bisschen was verstanden zu haben, komplett über den Haufen. Mir haben in dem ersten Teil nur etwas die Beispiele gefehlt. Deshalb habe ich auch versucht mir das Ding mit den ganzen Schaltflächen zu bauen. Um zu verstehen, wie das in der Praxis aussieht. Aber ich habe eigentlich nichts mit Programmierung am Hut. Daher bin ich hin und wieder mal etwas begriffsstutzig. Ok, … in den letzten Tagen nur. ;) Ich vermute der Großteil hier hat bereits Erfahrung und liest das Tutorials wie ein Zeitungartikel.
Herzlichen Dank für's wiederbeleben und deine Engelsgeduld!
Viele viele Grüße
Umek