Jump to content

Recommended Posts

Posted

I'm trying to learn about GUI.

I created a TAB control, but I can't understand the difference between this:

#Region TAB
    $sLVI = "||"
    Local $idTab = GUICtrlCreateTab(110, 20, 132, 475, $TCS_BOTTOM)

    ; Add tabs
    _GUICtrlTab_SetMinTabWidth($idTab, 25)
    GUICtrlCreateTabItem("1")
    GUICtrlCreateTabItem("2")
    GUICtrlCreateTabItem("3")
    GUICtrlCreateTabItem("") ; end tabitem definition
    #EndRegion TAB

and this:

#Region TAB
    $sLVI = "||"
    Local $idTab = GUICtrlCreateTab(110, 20, 132, 475, $TCS_BOTTOM)

    ; Add tabs
    _GUICtrlTab_SetMinTabWidth($idTab, 25)
    _GUICtrlTab_InsertItem($idTab, 0, "1")
    _GUICtrlTab_InsertItem($idTab, 2, "3")
    #EndRegion TAB

Then I'm trying to put this:

Global $hLV = GUICtrlCreateListView($sLVI, 110, 20, 100, 448, $LVS_NOCOLUMNHEADER)
    _GUICtrlListView_SetExtendedListViewStyle($hLV, $LVS_EX_GRIDLINES)
#Region TAB
    $sLVI = "||"
    Local $idTab = GUICtrlCreateTab(110, 20, 132, 475, $TCS_BOTTOM)

    ; Add tabs
    _GUICtrlTab_SetMinTabWidth($idTab, 25)
    _GUICtrlTab_InsertItem($idTab, 0, "1")
    Global $hLV = GUICtrlCreateListView($sLVI, 110, 20, 100, 448, $LVS_NOCOLUMNHEADER)
    _GUICtrlListView_SetExtendedListViewStyle($hLV, $LVS_EX_GRIDLINES)
    _GUICtrlTab_InsertItem($idTab, 1, "2")
    _GUICtrlTab_InsertItem($idTab, 2, "3")
    #EndRegion TAB

But no matter what TAB I press, the TAB change, but the listview follows.

 

But if I do this:

#Region TAB
    $sLVI = "||"
    Local $idTab = GUICtrlCreateTab(110, 20, 132, 475, $TCS_BOTTOM)

    ; Add tabs
    _GUICtrlTab_SetMinTabWidth($idTab, 25)
    _GUICtrlTab_InsertItem($idTab, 0, "1")
    Global $hLV = GUICtrlCreateListView($sLVI, 110, 20, 100, 448, $LVS_NOCOLUMNHEADER)
    _GUICtrlListView_SetExtendedListViewStyle($hLV, $LVS_EX_GRIDLINES)  _GUICtrlTab_InsertItem($idTab, 1, "2")
    _GUICtrlTab_InsertItem($idTab, 2, "3")
    #EndRegion TAB

The TAB change and I get a "fresh" TAB.

 

Another question is.

I have a listview with 3 column.

How do I add numbers in the start and then move other content 1 down?

Do
        $idMsg = GUIGetMsg()
        Switch $idMsg
            Case $idTest0
                _GUICtrlListView_AddSubItem($hLV, 0, $sNumber, 1)
            Case $idTest1
                _GUICtrlListView_AddItem($hlv,$sNumber,0)
        EndSwitch
    Until $idMsg = $GUI_EVENT_CLOSE

 

Yours sincerely

Kenneth.

  • Moderators
Posted

Valnurat,

It is best to stick with either the native or the UDF functions - trying to mix them as in those snippets usually ends in tears, as you have discovered. Might I suggest reading the Tabs tutorial in the Wiki as that will explain why the ListView always appears.

And if you want to add ListView items at a specific row, you need _GUICtrlListView_InsertItem, not _AddItem. The Help file is your friend here - look through the ListView UDF commands.

M23

 

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted

Thank you for pointing me to the TAB link. It was useful. :)

How ever, you tell me to use _GUICtrlListView_InsertItem, not _AddItem.

How can I add text to the 2nd and 3rd column with _GUICtrlListView_InsertItem?

In the help for _GUICtrlListView_InsertItem it is suggested that I should use _GUICtrlListView_SetItemText, but I can't see how. Sorry.

Yours sincerely

Kenneth.

Posted

_GUICtrlListView_InsertItem returns the index of the new inserted item. This index has to be used when updating the text for a subitem:

#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $idListview

    GUICreate("ListView Set Item Text", 400, 300)
    $idListview = GUICtrlCreateListView("", 2, 2, 394, 268)
    GUISetState(@SW_SHOW)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Items", 100)
    _GUICtrlListView_AddColumn($idListview, "SubItems", 100)

    ; Add items
    _GUICtrlListView_AddItem($idListview, "Item 1")
    _GUICtrlListView_AddItem($idListview, "Item 2")
    _GUICtrlListView_AddItem($idListview, "Item 3")

    ;Insert item
    Local $iIndex= _GUICtrlListView_InsertItem($idListview,'New Item with Index 1',1)
    _GUICtrlListView_SetItemText($idListview,$iIndex,'SubItem 1',1)

MsgBox($MB_SYSTEMMODAL, "Information", "Item 2 Text: " & _GUICtrlListView_GetItemText($idListview, 1))

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

 

Posted

Ok. I see. But in this case I'm not interested in adding text in C1 and C2, only in C2.

So it could be done like this:

;Insert item
    Local $iIndex= _GUICtrlListView_InsertItem($idListview,'',1)
    _GUICtrlListView_SetItemText($idListview,$iIndex,'SubItem 1',1)

and this:

;Insert item
    _GUICtrlListView_InsertItem($idListview,'',1)
    _GUICtrlListView_AddSubItem($idListview, 0, 'Test', 1)

As I always want the text be added to first row.

Or I'm i wrong?

Both exampels works, but is it the correct way to do it?

Yours sincerely

Kenneth.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...