Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вопрос по GUI - GUICtrlSetData

Ответить
Настройки темы
Вопрос по GUI - GUICtrlSetData

Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Space-06
Дата: 25-06-2009
Вообщем собственно сам вопрос: есть код по созданию GUI,
Код: Выделить весь код
#include "array.au3"
#include "mysql.au3"
#include <GUIConstants.au3>

; Create GUI
GUICreate("History Show",800,500)
$clientIDs=GUICtrlCreateList ("",10,30,100,200 )
$rcvrAccs=GUICtrlCreateList ("",120,30,100,200)
$results=GUICtrlCreateEdit ("", 230,30,570,460)

_MySQL_InitLibrary()
$MysqlConn = _MySQL_Init()
$connected = _MySQL_Real_Connect($MysqlConn, "127.0.0.1", "root","", "chat")
If $connected = 0 Then
    $errno = _MySQL_errno($MysqlConn)
    MsgBox(0,"Error:",$errno & @LF & _MySQL_error($MysqlConn))
    If $errno = $CR_UNKNOWN_HOST Then MsgBox(0,"Error:","$CR_UNKNOWN_HOST" & @LF & $CR_UNKNOWN_HOST)
Endif
$query = "/*!40101 SET NAMES 'cp1251' */"
_MySQL_Real_Query($MysqlConn, $query)
$query = "SELECT DISTINCT ClientID FROM hist"
_MySQL_Real_Query($MysqlConn, $query)

$res = _MySQL_Store_Result($MysqlConn)
$gg = _MySQL_Fetch_Result_StringArray($res)
;_ArrayDelete($gg,0)
;_ArrayDisplay($gg)

GUISetState ()       ; will display an empty dialog box
; Run the GUI until the dialog is closed
Do
    $msg = GUIGetMsg()
    Select
    case $msg=$results
        GUICtrlSetData($results,$gg, "")

    EndSelect

Until $msg = $GUI_EVENT_CLOSE

_MySQL_Free_Result($res)
_MySQL_Close($MysqlConn)
_MySQL_EndLibrary()
Собственно основная часть кода обрабатывает Базу и выдает в итоге массив с значениями который необходимо в результате выполнения вставить в GUICtrlSetData, первый запрос создает первый массив значания строк кторого необходимо вставить в $clientIDs, второй ( в коде не отображен) будет в $rcvrAccs, и в последствии выбрав значения из этих контров - будет выполнен результирующий запрос к базе - результат которого будет в $results.

Прошу вашей помощи в подсказках решения, строго не судите.

Отправлено: 13:49, 22-06-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Получение данных из MySQl.rar
(1.4 Kb, 37 просмотров)

вариант, во вложении.
Обновил...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Последний раз редактировалось proxy, 25-06-2009 в 15:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:14, 22-06-2009 | #2



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

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


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго здравия !
Спасибо за пример он как нельзя кстати подходит к моему примеру но у меня маленький вопрос по функции вызова моих результатов, в вашем примере вы так и пишите в Case - вызов функции по запросу.

Switch $iwParam
Case $clientIDs
MsgBox(64, 'Внимание', 'Клик по Clients ListView' & @CRLF & _
'Индикс: ' & $iIndex & @CRLF & _
'Текст: ' & $sText & @CRLF & _
соответсвующих функций')

здесь все понятно - что нужное нам значение находится в $sText - так вот собственно сам то и вопрос - как из моего кода сделать эту самую функцию. Прошу не пинать сильно и бить ногами, с функциями чуток слабоват.

И еще в коде мы объявили сразу $gg - а нам бы его вернуть из при первой инициализации интерфейса - выполнением запроса к базе, чтоб массив заполнился нужными нам значениями - а их то уже представить в ClientIDs

Отправлено: 08:29, 25-06-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Обновил, осталось только сформировать запрос в базу на вывод данных по выбранным позициям - в коде помеченно комментарием.

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 25-06-2009 | #4


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar debbug Получение данных из MySQl.rar
(1.5 Kb, 9 просмотров)

Доброго времени суток еще раз, стал чуток по коду разбираться.
Да я согласен немного сложноватый для меня вопрос, но стал запускать чуток правленный собой код, ( поправил читание параметров из файла) - и все равно выходит с ошибкой.

одна ошибка Error in my_thread_global_end(): 1 threads didn't exit ( она и не критичная)
другая:
(90) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
_GUICtrlListView_AddItem($hList, $aArray[$i])
_GUICtrlListView_AddItem($hList, ^ ERROR
>Exit code: 1 Time: 9.133

если закоментировать получения массива из запроса - то скрипт доробатывает до построения GUI, но мне бы все таки разобраться бы с далнейшим решением...

Отправлено: 07:34, 07-07-2009 | #5


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


псоле:

$gg = _SQL_GetData($sHost,$sUser,$sPass,$sDbName, 'SELECT DISTINCT ClientID FROM hist')

Массив выводится? Показывается?:
_ArrayDisplay($gg)

А еслудующая функция: Обработка только одномерного массива!
_ArrayToList($clientIDs, $gg, 1)

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 09:26, 07-07-2009 | #6


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата proxy:
$gg = _SQL_GetData($sHost,$sUser,$sPass,$sDbName, 'SELECT DISTINCT ClientID FROM hist') »
да массив выводится, а вот при обращении к функции ошибка выходит:
Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
_GUICtrlListView_AddItem($hList, $aArray[$i])
_GUICtrlListView_AddItem($hList, ^ ERROR
>Exit code: 1 Time: 7.866

Отправлено: 09:55, 07-07-2009 | #7


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Массив там точно одномерный?

В сообщение ошибки - в массиве используется не верный индекс...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 10:01, 07-07-2009 | #8


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Отправить PM | Цитировать


массив там точно одномерный, в ArrayDisplay показывает только две колонки Row и Col0
в колонке наш массив,

Может нам проще попытаться поступить, у нас проблема с выводом данных в GUICtrlListView_AddItem
может попробовать как то по другому все сделать?
к примеру массив вывести в временный файл - считать от туда и вставить,
или на совсем худший вариант - мускульную базу перегнать в dbf а с помощью AutoIt работать с dbf базой по нашему алгоритму...
просто уверен куча ошибок еще в самом мускуле. Как бы только с dbf можно было бы все организовать?

Отправлено: 10:28, 07-07-2009 | #9


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


проще уже базу или только одну таблицу из нее экспартировать и я потестю .. )

попробуй мож так, посмотрим на каком i будет error:
читать дальше »


Код: Выделить весь код
#include 'array.au3'
#include 'mysql.au3'
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>

Global $sHost = FileReadLine ("set.ini",1)
Global $sUser = FileReadLine ("set.ini",2)
Global $sPass = FileReadLine ("set.ini",3)
Global $sDbName = FileReadLine ("set.ini",4)

Global $hMainWin    = GUICreate('History Show', 800, 500)
    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

Global $clientIDs  = GUICtrlCreateListView('', 10,  30, 100, 200)
    _GUICtrlListView_SetExtendedListViewStyle($clientIDs, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    _GUICtrlListView_AddColumn($clientIDs, 'CLients', 96)

Global $rcvrAccs    = GUICtrlCreateListView('', 120, 30, 100, 200)
    _GUICtrlListView_SetExtendedListViewStyle($rcvrAccs, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    _GUICtrlListView_AddColumn($rcvrAccs, 'Access', 96)

Global $results = GUICtrlCreateEdit('', 230, 30, 570, 460)

$gg = _SQL_GetData($sHost,$sUser,$sPass,$sDbName, 'SELECT DISTINCT ClientID FROM hist')
_ArrayDisplay($gg)
_ArrayToList($clientIDs, $gg, 1)

;$gg = _SQL_GetData('127.0.0.1', 'root', 'GsM2562r', 'chat', 'SELECT DISTINCT rcvrAccs FROM hist')
;_ArrayDisplay($gg)
;_ArrayToList($rcvrAccs, $qq, 1)

Func _SQL_GetData($sHost, $sUser, $sPass, $sDbName, $sQuery)
    Local $MysqlConn, $connected, $errno, $res, $gg

    _MySQL_InitLibrary()
    $MysqlConn = _MySQL_Init()
    $connected = _MySQL_Real_Connect($MysqlConn, $sHost, $sUser, $sPass, $sDbName)
    If $connected = 0 Then
        $errno = _MySQL_errno($MysqlConn)
        MsgBox(0,'Error:',$errno & @LF & _MySQL_error($MysqlConn))
        If $errno = $CR_UNKNOWN_HOST Then MsgBox(0, 'Error:', '$CR_UNKNOWN_HOST' & @LF & $CR_UNKNOWN_HOST)
    Endif

    $query = "/*!40101 SET NAMES 'cp1251' */"
    _MySQL_Real_Query($MysqlConn, $query)
    $query = $sQuery
    _MySQL_Real_Query($MysqlConn, $query)

    $res = _MySQL_Store_Result($MysqlConn)
    $gg = _MySQL_Fetch_Result_StringArray($res)

    Return $gg
EndFunc

GUISetState()
Do
    $msg = GUIGetMsg()
;~  Select
;~      Case
;~  EndSelect
Until $msg = $GUI_EVENT_CLOSE

_MySQL_Free_Result($res)
_MySQL_Close($MysqlConn)
_MySQL_EndLibrary()

Func _ArrayToList($hList, $aArray, $iStart=0, $iEnd=0)
    If NOT $iEnd Then $iEnd = UBound($aArray)-1
    Local $i
    For $i=$iStart To $iEnd
        MsgBox(0, 'Ввод данных', 'i: ' & $i & @CRLF & 'Строка: ' & $aArray[$i])
        _GUICtrlListView_AddItem($hList, $aArray[$i])
    Next
EndFunc

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
;~  Local $tBuffer
    $hWndListView = $iwParam
    If Not IsHWnd($hWndListView) Then $hWndListView = GUICtrlGetHandle($hWndListView)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_CLICK
                    Local $iIndex = _GUICtrlListView_GetSelectedIndices($hWndListView)
                    Local $sText = _GUICtrlListView_GetItemText($hWndListView, $iIndex)
                    Switch $iwParam
                        Case $clientIDs
                            _GetClientData($sText)
                        Case $rcvrAccs
                            _GetAccessData($sText)
                    EndSwitch
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _GetClientData($sText)
    MsgBox(0, 'Client выбранно:', $sText)
;~  Сформировать нужный SELECT запрос для базы:
    Local $aResult = _SQL_GetData('127.0.0.1', 'root', 'GsM2562r', 'chat', 'SELECT DISTINCT ClientID FROM hist')
    GUICtrlSetData($results, _ArrayToString($aResult, 1, UBound($aResult), @CRLF))
EndFunc

Func _GetAccessData($sText)
    MsgBox(0, 'Access выбранно:', $sText)
;~  Сформировать нужный SELECT запрос для базы:
    Local $aResult = _SQL_GetData('127.0.0.1', 'root', 'GsM2562r', 'chat', 'SELECT DISTINCT rcvrAccs FROM hist')
    GUICtrlSetData($results, _ArrayToString($aResult, 1, UBound($aResult), @CRLF))
EndFunc

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Последний раз редактировалось proxy, 07-07-2009 в 16:15.


Отправлено: 15:07, 07-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вопрос по GUI - GUICtrlSetData

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Вопрос по GUI DenNC AutoIt 15 28-06-2009 21:28
[решено] Вопрос по GUI FlatX007 AutoIt 5 22-05-2009 16:17
Не работает GUI после выхода другова GUI sashadeg AutoIt 3 15-05-2009 22:03
[решено] [GUI] Вопрос с отображением формы и циклом D_Master AutoIt 4 05-03-2009 19:20
c++ с gui sad koder Программирование и базы данных 3 16-06-2004 08:51




 
Переход