1

Тема: AHK: Удаление Gui элементов

Есть форма гуи с элементами Tab2, первая вкладка содержит таблицу ListView там есть список фалов по двойному клику создается новая вкладка с именем файла и его содержимым в формах, с созданием новой вкладки также создаются элементы гуи. Наверное все напсианно через "одно место" писал как умею. Задача такая нужно корректно закрывать вкладку и удалять все созданные на ней элементы. Приведу пример кода который создает вкладку. Буду очень благодарен за любую помощь.


Gui, 1:Add, Tab2, x0 y0 h20 w800 vMainTable gMainTable wrap, Заявки
Gui, 1:Tab, 1
Gui, 1:Add, ListView, vRequestList gRequestList r22 x20 y20 w510 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2 hwndlv, №|Заголовок|Статус|Ответ|Коментарий|


RequestList:
    SNumber := LV_GetNext( "Focused" )
    RowNumber := LV_GetNext( 0, "F" )
    if not RowNumber
        Return
    
    if A_GuiEvent = DoubleClick
    {
        SNumber := LV_GetNext( "Focused" )
        RowNumber := LV_GetNext( 0, "F" )
        FileNumber := "Request\"
        FileNumber .= NumberRequest
        FileNumber .= ".txt"
        GoSub MainTable
    }

MainTable:
    Gui SubMit, NoHide
    NameTab := NumberRequest
    Loop %PageNum%
    {
        TmpNamePage := PageMass[A_Index]
        TmpFlagNum := FlagMass[A_Index]
        if ( TmpNamePage = NameTab )
        {
            if ( TmpFlagNum = 1 )
            {
                NameTab := MainTable
                Return
            }
            else
            {
                GoSub ClearGuiControlSource
                GuiControl,, MainTable, %NameTab%
                Gui, Tab, %NameTab%,, Exact
                FlagMass[A_Index] := 1
                GuiControl, Choose, MainTable, %A_Index%
                StringPageTabs .= "|"
                StringPageTabs .= NumberRequest
                Gui SubMit, NoHide        
                GoSub RefreshGuiControlSource
                Return
            }
        }
    }
    PageNum ++
    PageMass[PageNum] := NumberRequest
    FlagMass[PageNum] := 1
    StringPageTabs .= "|"
    StringPageTabs .= NumberRequest
    PrevNameTabs := NameTab
    
    GuiControl,, MainTable, %NameTab%
    Gui, Tab, %NameTab%,, Exact

    ForChooseRab := PageNum + 1
    GuiControl, Choose, MainTable, %ForChooseRab%
    Gui SubMit, NoHide
    
    Gui, 1:Add, Text, x425 y10 w60 vDateRequest%MainTable%

    Gui, 1:Add, Text, x30 y20, Номер заявки
    Gui, 1:Add, Edit, x30 y40 w70 h20 Number vNumberRequest%MainTable% ReadOnly
    Gui, 1:Add, Text, x130 y20, Заголовок заявки
    Gui, 1:Add, Edit, x130 y40 w338 h20 vTitleRequest%MainTable%

    Gui, 1:Add, GroupBox, x10 y70 w475 h180, Характириситки автомобиля

    Gui, 1:Add, Text, x30 y90, Марка
    Gui, 1:Add, DropDownList, vBrandSource%MainTable% x30 y110, Acura|Alfa Romeo|Audi|BMW|Chevrolet|Chrysler|Citroen|Dacia|Daewoo|DAF|Daihatsu|Dodge|Fiat|Ford|Honda|Hummer|Hyundai|Infiniti|Isuzu|Iveco|Jaguar|Jeep|Kia|Lancia|Land Rover|LDV (DAF)|Lexus|Man|Mazda|Mercedes-Benz|Mini|Mitsubishi|Nissan|Opel|Peugeot|Plymouth|Pontiac|Porsche|Proton|Renault|Rover|Saab|Seat|Skoda|Ssang Yong|Subaru|Suzuki|Toyota|Volkswagen|Volvo

    Gui, 1:Add, Text, x174 y90, Модель
    Gui, 1:Add, Edit, x174 y110 w200 h21 vModelSource%MainTable%

    Gui, 1:Add, Text, x395 y90, Год
    Gui, 1:Add, DropDownList, vYearSource%MainTable% AltSubmit x395 y110 w70, |2015|2014|2013|2012|2011|2010|2009|2008|2007|2006|2005|2004|2003|2002|2001|2000|1999|1998|1997|1996|1995|1994|1993|1992|1991|1990|1989|1988|1987|1986|1985|1984|1983|1982|1981|1980

    Gui, 1:Add, Text, x30 y140, Тип кузова
    Gui, 1:Add, DropDownList, vKuzovSource%MainTable% x30 y160 w90,|Седан|Внедорожник 5д|Внедорожник 3д|Компакт|Универсал|Хэтчбэк 5д|Хетчбэк 3д|Купе|Минивэн|Автобус

    Gui, 1:Add, Text, x148 y140, Тип двигателя
    Gui, 1:Add, DropDownList, vDvsSource%MainTable% x148 y160 w90, |Дизель|Дизель Турбо|Бензин|Бензин Турбо

    Gui, 1:Add, Text, x261 y140, Обьем двигателя
    Gui, 1:Add, DropDownList, vObemSource%MainTable% x261 y160 w90, |0.8|0.9|1.0|1.1|1.2|1.3|1.4|1.5|1.6|1.7|1.8|1.9|2.0|2.1|2.2|2.3|2.4|2.5|2.6|2.7|2.8|2.9|3.0|3.1|3.2|3.3|3.4|3.5|3.6|3.7|3.8|3.9|4.0|4.1|4.2|4.3|4.4|4.5|4.6|4.7|4.8|4.9|5.0|5.1|5.2|5.3|5.4|5.5|5.6|5.7|5.8|5.9|6.0|6.1|6.2|6.3|6.4|6.5|6.6|6.7|6.8|6.9|7.0|7.1|7.2|7.3|7.4|7.5|7.6|7.7|7.8|7.9|8.0

    Gui, 1:Add, Text, x376 y140, Тип КПП
    Gui, 1:Add, DropDownList, vKPPSource%MainTable% x376 y160 w90, |АКПП|Вариатор|МКПП-4ст|МКПП-5ст|МКПП-6ст|Робот|Типтроник

    Gui, 1:Add, Text, x30 y190, Тип привода
    Gui, 1:Add, DropDownList, vPrivodSource%MainTable% x30 y210 w90, |Передний|Задний|Полный


    Gui, 1:Add, Text,  x148 y190, Кондиционер
    Gui, 1:Add, DropDownList, vKonditionSource%MainTable%  x148 y210 w90, |Есть|Нет

    Gui, 1:Add, Text, x261 y190, ABS
    Gui, 1:Add, DropDownList, vAbsSource%MainTable% x261 y210 w90, |ABS|ABS+ASD|Без ABS|ESP

    Gui, 1:Add, Text, x376 y190, VIN
    Gui, 1:Add, Edit, x376 y210 w90 h21 vVinSource%MainTable%

    Gui, 1:Add, GroupBox, x10 y255 w335 h165, Список запчастей
    Gui, 1:Add, Edit, x30 y275 w300 h135 vDetaliSource%MainTable%

    Gui, 1:Add, GroupBox, x350 y255 w137 h165, Контакты клиента
    Gui, 1:Add, Text, x360 y270, Имя
    Gui, 1:Add, Edit, x360 y290 w120 vName%MainTable%

    Gui, 1:Add, Text, x360 y320 vPhoneTextMain%MainTable% w100, Телефон
    Gui, 1:Add, Edit, x360 y340 w120 vPhone%MainTable%

    Gui, 1:Add, Text, x360 y370, E-Mail
    Gui, 1:Add, Edit, x360 y390 w120 vMail%MainTable%

    Gui, 1:Add, GroupBox, x10 y425 w335 h130, Коментарий
    Gui, 1:Add, Edit, x30 y440 w300 h100 vCommentSource%MainTable%

    Gui, 1:Add, Button, x360 y430 w120 h30 gCallPhone vbCall%MainTable%, Позвонить
    Gui, 1:Add, Button, x360 y477 w120 h30 gSendMail vbSendMailForm%MainTable%, Отправить E-Mail
    Gui, 1:Add, Button, x360 y525 w120 h30 gSendSMS vbSendSMS%MainTable%, Отправить SMS

    Gui, 1:Add, Button, x60 y580 w140 h24 gSaveSource vbSaveSource%MainTable%, Сохранить
    Gui, 1:Add, Button, x300 y580 w140 h24 gCloseSource vbCloseSource%MainTable%, Закрыть

    Gui, 1:Add, GroupBox, x500 y10 w300 h600, История общения
    Gui, 1:Add, Edit, x510 y30 w280 h570 ReadOnly vHistoryMessengMain%MainTable%

    GoSub EditRequest

    Return

Вырваны куски кода которые должны хоть немного обрисовать картину.

2

Re: AHK: Удаление Gui элементов

+ Error

Error:  Target label does not exist.

Specifically: ClearGuiControlSource

Line#
031: if ( TmpFlagNum = 1 ) 
032: {
033: NameTab := MainTable
034: Return
035: }
036: Else
037: {
---> 038: Gosub,ClearGuiControlSource
039: GuiControl,,MainTable,%NameTab%
040: Gui,Tab,%NameTab%,,Exact
041: FlagMass[A_Index] := 1 
042: GuiControl,Choose,MainTable,%A_Index%
043: StringPageTabs .= "|" 
044: StringPageTabs .= NumberRequest 
045: Gui,SubMit,NoHide

The program will exit.

3

Re: AHK: Удаление Gui элементов

Да тут я выложил 1\30 кода, в таком виде он не скомпелируется... В коде основное для того что бы понят принцип создания вкладке это метка MainTable:
Все прогу не реально все равно выложить что бы она работала, у нее там очень тонкие настройки да и базу программы нужно скидывать что бы она работала...
Более подробнее попытаюсь объяснить.
Новая вкладка создается вот так
NameTab - Это переменная которая содержит имя файла из таблицы ЛистВью


GuiControl,, MainTable, %NameTab%
                Gui, Tab, %NameTab%,, Exact

Затем активируем новую вкладку


GuiControl, Choose, MainTable, %ForChooseRab%
Gui SubMit, NoHide

Затем на этой вкладке создаются элементы вот таким образом:


Gui, 1:Add, Text, x425 y10 w60 vDateRequest%MainTable%

    Gui, 1:Add, Text, x30 y20, Номер заявки
    Gui, 1:Add, Edit, x30 y40 w70 h20 Number vNumberRequest%MainTable% ReadOnly
    Gui, 1:Add, Text, x130 y20, Заголовок заявки
    Gui, 1:Add, Edit, x130 y40 w338 h20 vTitleRequest%MainTable%

Вот так создается новая вкладка с новыми элементами...
Задача в состоит в том, что бы когда эта вкладка не нужна, ее со всеми элементами можно было бы удалить подобно

Gui Destroy

Но не все окно а элементы окна.

4 (изменено: serzh82saratov, 2015-10-21 00:32:53)

Re: AHK: Удаление Gui элементов

Если у вас есть вводные по которым создаётся вкладка, почему по ним же не удалять?

В любом случае в таком коде никто не будет копатся, приведите небольшой рабочий код, на который получив ответ, вы сможете понять принцип.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: Strongest, 2015-10-21 01:05:49)

Re: AHK: Удаление Gui элементов

Написал короткий код (работающий), который должен полностью раскрывать прицеп работы.
Задача придать кнопки Close удалять вкладку и все ее элементы.


;For Gray

PageNum := 0
PageMass := []

Gui, 1:Add, Tab2, x0 y0 h20 w800 vMainTable gMainTable wrap, Главная

Gui, 1:Tab, 1
Gui, 1:Add, ListView, vRequestList gRequestList r5 x40 y40 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4" )
LV_Add("", "BMW", "B1", "B2", "B3", "B4" )
LV_Add("", "KIA", "C1", "C2", "C3", "C4" )
LV_Add("", "Opel", "D1", "D2", "D3", "D4" )
LV_Add("", "Mazda", "E1", "E2", "E3", "E4" )

Gui, 1:Show, w500 h300 xCenter yCenter

Return


RequestList:
    SNumber := LV_GetNext( "Focused" )
    RowNumber := LV_GetNext( 0, "F" )
    if not RowNumber
        Return
    
    if A_GuiEvent = DoubleClick
    {
        LV_GetText( NameTab, RowNumber , 1 )
        
        GoSub MainTable
        
        LV_GetText( ForMyEdit1, RowNumber , 1 )
        LV_GetText( ForMyEdit2, RowNumber , 2 )
        LV_GetText( ForMyEdit3, RowNumber , 3 )
        LV_GetText( ForMyEdit4, RowNumber , 4 )
        
        GuiControl,, MyEdit1%NameTab%, %ForMyEdit1%
        GuiControl,, MyEdit2%NameTab%, %ForMyEdit2%
        GuiControl,, MyEdit3%NameTab%, %ForMyEdit3%
        GuiControl,, MyEdit4%NameTab%, %ForMyEdit4%
    }

    Return
    
    
MainTable:
    Gui SubMit, NoHide
    Loop %PageNum%
    {
        TmpNamePage := PageMass[A_Index]
        if ( TmpNamePage = MainTable || TmpNamePage =  NameTab )
        {
            Return
        }
    }
    PageNum ++
    PageMass[PageNum] := NameTab
    GuiControl,, MainTable, %NameTab%
    Gui, Tab, %NameTab%,, Exact
    ForChooseTab := PageNum + 1
    GuiControl, Choose, MainTable, %ForChooseTab%
    Gui, 1:Add, Text, x20 y30 w60 vMyEdit1%NameTab%
    Gui, 1:Add, Text, x20 y60 w60 vMyEdit2%NameTab%
    Gui, 1:Add, Text, x20 y90 w60 vMyEdit3%NameTab%
    Gui, 1:Add, Text, x20 y120 w60 vMyEdit4%NameTab%
    Gui, 1:Add, Text, x20 y150 w60 vMyEdit5%NameTab%
    Gui, 1:Add, Button, x20 y200 w140 h24 gClose vClose%NameTab%, Закрыть
    Return
    
Close:

    Return

GuiClose:
    ExitApp
    

Саму вкладку я удалить могу, а вот ее элементы не могу придумать как.
Удалить саму вкладку можно вот так.

StringPageTabs := "Главная"

Добавить этот код при создании вкладки


StringPageTabs .= "|"
StringPageTabs .= NameTab

А при удалении вот так


Gui SubMit, NoHide
StringReplace, StringPageTabs, StringPageTabs, |%MainTable%
GuiControl, Choose, MainTable, 1
GuiControl,, MainTable, |
GuiControl,, MainTable, %StringPageTabs%

После такого удаления эта вклада больше не откроется.
Если удалить из массива, то будет при повторном ее открытии ругаться ну дублирующийся переменную.
Короче не знаю что делать...

6

Re: AHK: Удаление Gui элементов

Кривой вариант если вкладки удалять с "конца", то так:


Gui, 1:Add, Tab2, x0 y0 h20 w800 vMainTable gMainTable wrap, % PageMass := "Главная|" 
Gui, 1:Tab, 1
Gui, 1:Add, ListView, vRequestList gRequestList r5 x40 y40 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4")
LV_Add("", "BMW", "B1", "B2", "B3", "B4")
LV_Add("", "KIA", "C1", "C2", "C3", "C4")
LV_Add("", "Opel", "D1", "D2", "D3", "D4")
LV_Add("", "Mazda", "E1", "E2", "E3", "E4")
Gui, 1:Show, w500 h300 xCenter yCenter
Return 
     
MainTable:
    GuiControlGet, MainTable
    Return
 
RequestList:
    If A_GuiEvent != DoubleClick
        Return
    If !(RowNumber := LV_GetNext(0, "F")) 
        Return 
    LV_GetText(NameTab, RowNumber, 1) 
    If InStr("|" PageMass, NameTab)
    {
        GuiControl, Choose, MainTable, %NameTab%
        Return
    }    
    PageMass .= NameTab "|"
    GuiControl,, MainTable, %NameTab%
    GuiControl, Choose, MainTable, %NameTab%
    Gui, Tab, %NameTab%,, Exact
    Loop 5 
        LV_GetText(ForMyEdit%A_Index%, RowNumber, A_Index)
    Gui, 1:Add, Text, x20 y30 w60 HWNDhMyEdit1%NameTab%, % ForMyEdit1
    Gui, 1:Add, Text, x20 y60 w60 HWNDhMyEdit2%NameTab%, % ForMyEdit2
    Gui, 1:Add, Text, x20 y90 w60 HWNDhMyEdit3%NameTab%, % ForMyEdit3
    Gui, 1:Add, Text, x20 y120 w60 HWNDhMyEdit4%NameTab%, % ForMyEdit4
    Gui, 1:Add, Text, x20 y150 w60 HWNDhMyEdit5%NameTab%, % ForMyEdit5
    Gui, 1:Add, Button, x20 y200 w140 h24 gClose HWNDhClose%NameTab%, Закрыть
    Return
    
Close: 
    GuiControlGet, MainTable 
    PageMass := RegExReplace(PageMass, "\|" MainTable "\|", "|")
    Loop 5
        DllCall("DestroyWindow", "Ptr", hMyEdit%A_Index%%MainTable%)
    DllCall("DestroyWindow", "Ptr", hClose%MainTable%)
    GuiControl,, MainTable, % "|" PageMass 
    Return

В конечном итоге правильный вариант наверняка будет зависеть от того что вы будете изменять в ListView и контролах вкладок.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Удаление Gui элементов

Да, удаления элементов управления не существует.
При визуальном удалении вкладок элементы управления остаются висеть в памяти, жёстко привязанные к порядковому номеру вкладки.

Можно вместо вкладок использовать несколько GUI и команду GUI, Destroy. Окна GUI как-нибудь прикрепить к основному окну.

Gui, 1:Add, ListView, vRequestList gRequestList r5 x40 y40 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4" )
LV_Add("", "BMW", "B1", "B2", "B3", "B4" )
LV_Add("", "KIA", "C1", "C2", "C3", "C4" )
LV_Add("", "Opel", "D1", "D2", "D3", "D4" )
LV_Add("", "Mazda", "E1", "E2", "E3", "E4" )
Gui, 1: Add, tab2, vMyTab
GUI,1: Show
Return



RequestList:
    SNumber := LV_GetNext( "Focused" )
    RowNumber := LV_GetNext( 0, "F" )
    if not RowNumber
        Return
    
    if A_GuiEvent = DoubleClick
    {
        LV_GetText( NameTab, RowNumber , 1 )
    LV_GetText( ForMyEdit1, RowNumber , 1 )
    GuiControl,, MyTab, %ForMyEdit1%
    Gui, 2:Add, Button, x20 y200 w140 h24, Закрыть
    Gui, 2:Show
    }
Return

8 (изменено: serzh82saratov, 2015-10-21 05:13:30)

Re: AHK: Удаление Gui элементов

Рабочий вариант, можно показывать блок контролов.

+ открыть спойлер

Gui, 1:+LastFound -DPIScale
Loop 5 
    Gui, 1:Add, Text, % "Hidden x20 y" A_Index*30 " w60 vMyEdit" A_Index 
Gui, 1:Add, Button, Hidden x20 y200 w140 h24 gClose vClose, Закрыть

Gui, 1:Add, Tab2, x0 y0 h20 w800 vMainTable gMainTable wrap, % PageMass := "Главная|" 
Gui, 1:Tab, 1
Gui, 1:Add, ListView, vRequestList gRequestList r5 x40 y40 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4")
LV_Add("", "BMW", "B1", "B2", "B3", "B4")
LV_Add("", "KIA", "C1", "C2", "C3", "C4")
LV_Add("", "Opel", "D1", "D2", "D3", "D4")
LV_Add("", "Mazda", "E1", "E2", "E3", "E4")
Gui, 1:Show, w500 h300
Return 
     
MainTable:
    GuiControlGet, MainTable   
    Loop % LV_GetCount()
    {
        LV_GetText(RowText, A_Index), RowNumber := ""
        If (MainTable = RowText && (RowNumber := A_Index))
            Break
    }
    BlockShow(!!RowNumber)
    If RowNumber
        BlockPaste(RowNumber) 
    Return
    
RequestList:
    If A_GuiEvent != DoubleClick
        Return
    If !(RowNumber := LV_GetNext(0, "F"))
        Return
    LV_GetText(NameTab, RowNumber, 1) 
    If InStr("|" PageMass, "|" NameTab "|") 
        Return 
    PageMass .= NameTab "|"
    GuiControl,, MainTable, %NameTab%
    GuiControl, Choose, MainTable, %NameTab% 
    BlockPaste(RowNumber) 
    BlockShow(1)
    Return
    
Close:  
    GuiControl,, MainTable, % "|" PageMass := RegExReplace(PageMass, "\|" MainTable "\|", "|")
    BlockShow(0)
    Return    
    
BlockShow(Show) {
    Loop 5
        GuiControl, Show%Show%, MyEdit%A_Index% 
    GuiControl, Show%Show%, Close
}

BlockPaste(RowNumber) {
    Loop 5 
    {
        LV_GetText(ForMyEdit, RowNumber, A_Index)
        GuiControl, , MyEdit%A_Index%, % ForMyEdit  
    } 
}

Нет, лучше встроить блок контролов во второй таб.


Gui, 1:-DPIScale
Gui, 1: Margin, 0, 0
Gui, 1:Add, Tab2, h300 w500 vMainTable gMainTable Wrap, % PageMass := "Главная|"  
Gui, 1:Add, ListView, gRequestList r5 x90 y60 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4")
LV_Add("", "BMW", "B1", "B2", "B3", "B4")
LV_Add("", "KIA", "C1", "C2", "C3", "C4")
LV_Add("", "Opel", "D1", "D2", "D3", "D4")
LV_Add("", "Mazda", "E1", "E2", "E3", "E4") 
Gui, 1:Add, Tab2, w0 h0 vHiddenTab Hidden, |
Loop 4
    Gui, 1:Add, Text, % "xm+30 y" A_Index*30+30 " w60 vMyEdit" A_Index
Gui, 1:Add, Button, xp y+30 gClose, Закрыть
Gui, 1:Show
Return
     
MainTable:
    GuiControlGet, MainTable   
    Loop % LV_GetCount()
    {
        LV_GetText(RowText, A_Index), RowNumber := ""
        If (MainTable = RowText && (RowNumber := A_Index))
            Break
    }  
    BlockPaste(RowNumber) 
    Return
    
RequestList:
    If A_GuiEvent != DoubleClick
        Return
    If !(RowNumber := LV_GetNext(0, "F"))
        Return
    LV_GetText(NameTab, RowNumber) 
    If InStr("|" PageMass, "|" NameTab "|") 
        Return 
    GuiControl, 1:, MainTable, % MainTable := NameTab 
    GuiControl, 1:Choose, MainTable, %MainTable% 
    BlockPaste(RowNumber), PageMass .= MainTable "|"
    Return

Close:  
    GuiControl, 1:, MainTable, % "|" PageMass := StrReplace(PageMass, "|" MainTable "|", "|") 
    GuiControl, 1:Show0, HiddenTab
    Return     

BlockPaste(RowNumber) {
    Loop % 4 * (!!RowNumber)
    {
        LV_GetText(ForMyEdit, RowNumber, A_Index + 1) 
        GuiControl, 1:, MyEdit%A_Index%, % ForMyEdit  
    } 
    GuiControl, % "1:Show" (!!RowNumber), HiddenTab
}

Если по ходу работы, в ListView будут производится изменения, и не будут добавлятся колонки, то изменения будут отображатся во вкладках.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9 (изменено: Strongest, 2015-10-21 12:36:23)

Re: AHK: Удаление Gui элементов

Спасибо большое.
Очень хороший способ, буду пробовать его влипать в свой код, но чет кажется вряд ли получится, во вкладке много элементов, и из них еще вызывается несколько окон и т.д. Еще понравилась идея создавать новое окно и как не будь его прилепить к основному, а затем его удалять полностью..

10 (изменено: serzh82saratov, 2015-10-21 15:11:02)

Re: AHK: Удаление Gui элементов

Тогда на скорую руку так:


GuiNames := {}
Gui, 1:-DPIScale
Gui, 1: Margin, 0, 0
Gui, 1:Add, Tab2, h300 w500 vMainTable gMainTable Wrap HWNDhTab, % PageMass := "Главная|"  
Gui, 1:Add, ListView, gRequestList r5 x90 y60 w300 AltSubmit Grid -LV0x10 -Multi NoSortHdr -WantF2, Название|Поле1|Поле2|Поле3|Поле4
LV_Add("", "Audi", "A1", "A2", "A3", "A4")
LV_Add("", "BMW", "B1", "B2", "B3", "B4")
LV_Add("", "KIA", "C1", "C2", "C3", "C4")
LV_Add("", "Opel", "D1", "D2", "D3", "D4")
LV_Add("", "Mazda", "E1", "E2", "E3", "E4")   
Loop % LV_GetCount() 
    LV_GetText(Text, A_Index), GuiNames[Text] := "Item" A_Index  
Gui, 1:Show 
Return
     
MainTable:
    GuiControlGet, MainTable
    Loop % LV_GetCount()
    {
        LV_GetText(RowText, A_Index), RowNumber := ""
        If (MainTable = RowText && (RowNumber := A_Index))
            Break
    }
    Name := GuiNames[MainTable]
    If (Name != GuiName)
        Gui, %GuiName%:Show, Hide
    If Name
        Gui, % (GuiName := Name) ":Show", NA
    Return
    
RequestList:
    If A_GuiEvent != DoubleClick
        Return
    If !(RowNumber := LV_GetNext(0, "F"))
        Return
    LV_GetText(MainTable, RowNumber)
    If InStr("|" PageMass, "|" MainTable "|")
    {
        GuiControl, 1:Choose, MainTable, % MainTable
        Gui, % (GuiName := GuiNames[MainTable]) ":Show", NA
        Return
    }
    GuiControl, 1:, MainTable, % MainTable
    GuiControl, 1:Choose, MainTable, %MainTable%  
    PageMass .= MainTable "|", GuiName := GuiNames[MainTable]
    
    Gui, %GuiName%: +Parent%hTab% -Caption -DPIScale
    Loop 4
    {
        LV_GetText(Text, RowNumber, A_Index + 1)
        Gui, %GuiName%:Add, Text, % "x30 y" A_Index*30 " w60 vMyEdit" GuiName "_" A_Index, % Text
    }
    Gui, %GuiName%:Add, Button, xp y+30 gClose, Закрыть
    Gui, %GuiName%:Show, NA x0 y30 h270 w500
    Gui, 1:Show 
    Return

Close:  
    GuiControl, 1:, MainTable, % "|" PageMass := StrReplace(PageMass, "|" MainTable "|", "|")  
    Gui, % (GuiName := GuiNames[MainTable]) ":Destroy"
    Return

|

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Удаление Gui элементов

Вот это вообще круто!!! То что надо... Спасибо Вам огромное!!! Так и сделаем!

12

Re: AHK: Удаление Gui элементов

Вдогонгку - на англоязычном сайте анонсирована разработка эл. упр. «Tab3»: New test builds - Tab3 control, Menu improvements, LoadPicture, new vars. Борются с недочётами при перерисовке окна.