Что нового

Создание формы для заполнения по типу базы данных

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Версия AutoIt: 3.3.8.1

Описание: Надо создать форму для заполнения, по типу Екселя. В ней некоторое кол-во столбцов (н-р: название фирмы, ИНН, адрес, иные поля). Вверху все поля подписаны, есть поля для заполнения.
Самую большую сложность представляет добавление "строк" в форму, ибо изначально кол-во строк - непонятно, их может быть 1-2 а может и до 10 и больше (по максимму в пределах 50). Делать сразу 50 - как то не хочется, некрасиво.
Т.е. должны быть типа кнопка "добавить запись" и по ней добавляется строка для заполнения.
После заполнения этой формы, по нажанию Кнопки, данные должны перенестись в текстовый файл с разделителями. (как вариант - ";")

Примечания: Ну хотя б в каком направлении копать? не могу сообразить как добавлять "записи" в форму.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Смотрите в сторону UDF "GuiListView.au3".
 
A

Alofa

Гость
ВиталийВВ
Как вы себе это представляете? Типа так:
Код:
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>

; Создание GUI
$hGUI = GUICreate("Форма", 435, 250)
$iListView = GUICtrlCreateListView("", 2, 2, 430, 200, $LVS_EDITLABELS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
GUISetState()

; Добавляет колонки
_GUICtrlListView_InsertColumn($iListView, 0, "№", 30, 2)
_GUICtrlListView_InsertColumn($iListView, 1, "Название Фирмы", 100, 2)
_GUICtrlListView_InsertColumn($iListView, 2, "ИНН", 100, 2)
_GUICtrlListView_InsertColumn($iListView, 3, "Адрес", 100, 2)
_GUICtrlListView_InsertColumn($iListView, 4, "Иное поле", 100, 2)

_GUICtrlButton_Create($hGUI, "Добавить Запись", 70, 210, 110, 30)
_GUICtrlButton_Create($hGUI, "Запись в Файл", 250, 210, 110, 30)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

И еще, поясните откуда берутся данные - вы их сами заполняете или считываете из файла? Если последнее - предоставьте образец.
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Да! Именно так! практически идеально - как мне и виделось.
Данные надо вносить в эту форму.
По кнопке "Добавить запись" - добавлять строку
По кнопке "Запись в файл" - выгрузить данные в обычный текст с разделителями ";"
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
По кнопке "Добавить запись" - добавлять строку
Откуда брать добавляемую строку ? Или нужны еще дополнительные поля для ввода данных ? Нужно ли заполнять эту таблицу из сохраненного ранее файла ?
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
ra4o сказал(а):
По кнопке "Добавить запись" - добавлять строку
Откуда брать добавляемую строку ? Или нужны еще дополнительные поля для ввода данных ? Нужно ли заполнять эту таблицу из сохраненного ранее файла ?

Изначально сама таблица - пустая. Строк там - немного (ну пусть 5-7)
Пользователь их заполняет данными.
При необходимости, если данныедля ввода есть, а строки пустые закончились, то добавляет пустую строку (или несколько, последовательно, одну за одной) и продолжает их заполнять.

Поля сколько есть столько и будет добавлять поля - ненадо.

В идеале да, было бы великолепно, если бы была возможность вчитать в эту таблицу данные из файла. Естественно этот файл и его структура полностью совпадают с той структурой, которая формируется этой программой (но это уже в самом идеальном варианте).
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Вот мой вариант
Код:
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <File.au3>

; Создание GUI
$hGUI = GUICreate("Форма", 435, 350)
$iListView = GUICtrlCreateListView("№|Название Фирмы|ИНН|Адрес|Иное поле", 2, 2, 430, 200, $LVS_EDITLABELS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
GUISetState()

; Ширина колонки 0-я 30, остальные - 100
  _GUICtrlListView_SetColumnWidth($iListView, 0, 30)
For $i=1 to 4
  _GUICtrlListView_SetColumnWidth($iListView, $i, 100)
Next

; Поля ввода данных
$Name = GUICtrlCreateInput('Название Фирмы',5,250,210,30)
GUICtrlSetFont(-1,12,500)
$INN = GUICtrlCreateInput('ИНН',220,250,210,30)
GUICtrlSetFont(-1,12,500)
$Adres = GUICtrlCreateInput('Адрес',5,290,210,30)
GUICtrlSetFont(-1,12,500)
$Else = GUICtrlCreateInput('Иное поле',220,290,210,30)
GUICtrlSetFont(-1,12,500)



$AddBut = GUICtrlCreateButton('Добавить Запись', 10, 210, 110, 30)
$SaveBut = GUICtrlCreateButton('Запись в Файл', 130, 210, 110, 30)
$ReadBut = GUICtrlCreateButton('Прочитать из файла',250,210,110,30)



While 1
$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			  Exit
		Case $msg = $AddBut ; Добавить пункт в таблицу

			GUICtrlCreateListViewItem(_GUICtrlListView_GetItemCount($iListView)+1&'|'&GuiCtrlRead($Name)&'|'&GuiCtrlRead($INN)&'|'&GuiCtrlRead($Adres)&'|'&GuiCtrlRead($Else),$iListView)

		Case $msg = $SaveBut ;Записать в файл

			$Path = FileSaveDialog("Выберите имя.", @ScriptDir, "Текстовый файл (*.txt)", 2)
            If not @error Then
				$hFile = FileOpen($Path, 2)
			      For $i = 0 to _GUICtrlListView_GetItemCount($iListView)-1
				     $Text = ''
				        For $j = 0 to _GUICtrlListView_GetColumnCount($iListView)-1
					    	 $Text=$Text&_GUICtrlListView_GetItemText($iListView,$i,$j)&';'
						Next
				     FileWriteLine ( $hFile, $Text)
				  Next
				FileClose($hFile)
            EndIf
        Case $msg = $ReadBut ;Заполнение таблицы из файла
			_GUICtrlListView_DeleteAllItems($iListView)
			$OpenPath = FileOpenDialog('Открыть файл',@ScriptDir,'Текстовый файл (*.txt)',1+2)
			   If Not @error Then
			      $hFile = FileOpen($OpenPath, 0)

			       For $i = 1 to _FileCountLines($OpenPath)

					 $Text = StringReplace (FileReadLine($hFile,$i),';','|')
					 $Text = StringTrimRight($Text,1)
					 GUICtrlCreateListViewItem($Text,$iListView)

                   Next
                  FileClose($hFile)
			   EndIf

	EndSelect
WEnd

Нужна возвможность редактировать уже ранее введенные данные ?
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Попробовал. при запуске вижу так:
и при попытке заполнения полей в самих заполняемых полях - тоже, как я понимаю, неверная кодировка.
Но в поле попадает верная кодировка.
вот так выглядит.

Но суть того что надо было - именно такая! Если будет еще и возможность редактирования это будет божественно.


Добавлено:
Сообщение автоматически объединено:

Видимо были проблемы в кодировке
закомментировал строки:
Код:
$Name = GUICtrlCreateInput('Название Фирмы',5,250,210,30)
;GUICtrlSetFont(-1,12,500)
$INN = GUICtrlCreateInput('ИНН',220,250,210,30)
;GUICtrlSetFont(-1,12,500)
$Adres = GUICtrlCreateInput('Адрес',5,290,210,30)
;GUICtrlSetFont(-1,12,500)
$Else = GUICtrlCreateInput('Иное поле',220,290,210,30)
;GUICtrlSetFont(-1,12,500)


Сейчас - ИДЕАЛЬНО!!!!!!!!!!!!!!!
В некотором ожидании версии с возможностью правки ранее введенного
 

Вложения

  • Безымянный.JPG
    Безымянный.JPG
    32.6 КБ · Просмотры: 46
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
joiner сказал(а):
ВиталийВВ
http://autoit-script.ru/index.php?topic=19225.msg115667#msg115667

Да, но текущий проект мне больше нравится. По идее если помогут дописать редактирование строк будет совсем идеально, но и в текущем варианте он на 99% выполняет задачи.
Исходя из этого пока не ставлю что задача решена, ибо - надеюсь на оставшийся 1% :smile:
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Закомментированные Вами строки - это размер и "жирность" шрифта , никакого влияния на кодировку не имеет
Редактирование допишу обязательно, но чуток позже - работы у меня навалилось :smile:
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
ra4o сказал(а):
Закомментированные Вами строки - это размер и "жирность" шрифта , никакого влияния на кодировку не имеет
Редактирование допишу обязательно, но чуток позже - работы у меня навалилось :smile:

Возможно, но когда я их убрал, стало хорошо. Мне без них больше нравится :smile:

В большом ожидании "дописки" :laugh:
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Дописал. Несколько изменил формат записи данных в файл - теперь не записывается первая колонка с номером по порядку, редактируется список по нажатию правой кнопки мыши на нужной строке.
Код:
#Include <GuiListView.au3>
#Include <GUIConstantsEx.au3>
#Include <GuiButton.au3>
#Include <File.au3>
#Include <WindowsConstants.au3>

Global $iIndex, $EditLine = 0
; Создание GUI
$hGUI      = GUICreate("Форма", 435, 350)
$iListView = GUICtrlCreateListView("№|Название Фирмы|ИНН|Адрес|Иное поле", 2, 2, 430, 200, $LVS_EDITLABELS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
GUISetState()

; Ширина колонки 0-я 30, остальные - 100
_GUICtrlListView_SetColumnWidth($iListView, 0, 30)
For $i = 1 To 4
	_GUICtrlListView_SetColumnWidth($iListView, $i, 100)
Next

; Поля ввода данных
$Name = GUICtrlCreateInput('Название Фирмы', 5, 250, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
$INN = GUICtrlCreateInput('ИНН', 220, 250, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
$Adres = GUICtrlCreateInput('Адрес', 5, 290, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
$Else = GUICtrlCreateInput('Иное поле', 220, 290, 210, 30)
;GUICtrlSetFont(-1, 12, 500)

$AddBut  = GUICtrlCreateButton('Добавить Запись', 10, 210, 110, 30)
$SaveBut = GUICtrlCreateButton('Запись в Файл', 130, 210, 110, 30)
$ReadBut = GUICtrlCreateButton('Прочитать из файла', 250, 210, 110, 30)

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			Exit
		Case $msg = $AddBut ; Добавить пункт в таблицу
			
			GUICtrlCreateListViewItem(_GUICtrlListView_GetItemCount($iListView) + 1 & '|' & GUICtrlRead($Name) & '|' & GUICtrlRead($INN) & '|' & GUICtrlRead($Adres) & '|' & GUICtrlRead($Else), $iListView)
			
		Case $msg = $SaveBut ;Записать в файл
			
			$Path = FileSaveDialog("Выберите имя.", @ScriptDir, "Текстовый файл (*.txt)", 2)
			If Not @Error Then
				$hFile = FileOpen($Path, 2)
				For $i = 0 To _GUICtrlListView_GetItemCount($iListView) - 1
					$Text = ''
					For $j = 1 To _GUICtrlListView_GetColumnCount($iListView) - 1
						$Text = $Text & _GUICtrlListView_GetItemText($iListView, $i, $j) & ';'
					Next
					FileWriteLine($hFile, $Text)
				Next
				FileClose($hFile)
			EndIf
		Case $msg = $ReadBut ;Заполнение таблицы из файла
			_GUICtrlListView_DeleteAllItems($iListView)
			$OpenPath = FileOpenDialog('Открыть файл', @ScriptDir, 'Текстовый файл (*.txt)', 1 + 2)
			If Not @Error Then
				$hFile = FileOpen($OpenPath, 0)
				
				For $i = 1 To _FileCountLines($OpenPath)
					
					$Text = StringReplace(FileReadLine($hFile, $i), ';', '|')
					$Text = $i & '|' & StringTrimRight($Text, 1)
					GUICtrlCreateListViewItem($Text, $iListView)
					
				Next
				FileClose($hFile)
			EndIf
			
	EndSelect
	
	If $EditLine = 1 Then _AditLine($hGUI)
	
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
	
	$hWndListView = $iListView
	If Not IsHWnd($iListView) Then $hWndListView = GUICtrlGetHandle($iListView)
	
	$tNMHDR   = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
	$iCode    = DllStructGetData($tNMHDR, 'Code')
	
	Switch $hWndFrom
		Case $hWndListView
			Switch $iCode
				
				Case $NM_RCLICK ;один клик правой кнопки мыши
					$tInfo  = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					$iIndex = DllStructGetData($tInfo, 'Index')
					
					If $iIndex <> -1 Then
						
						$EditLine = 1
						
					EndIf
					
			EndSwitch
	EndSwitch
	
	Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY

Func _AditLine($hParent = 0)
	Local $hSettings, $iGOEM_Opt
	
	$hAditLine_GUI = GUICreate('Редактировать данные', 280, 170, -1, -1, -1, -1, $hParent) ; создаём окно
	GUICtrlCreateLabel('Название', 5, 7, 60, 20)
	$Name = GUICtrlCreateInput(_GUICtrlListView_GetItemText($iListView, $iIndex, 1), 70, 5, 200, 20)
	GUICtrlCreateLabel('ИНН', 5, 32, 60, 20)
	$INN = GUICtrlCreateInput(_GUICtrlListView_GetItemText($iListView, $iIndex, 2), 70, 30, 200, 20)
	GUICtrlCreateLabel('Адрес', 5, 57, 60, 20)
	$adres = GUICtrlCreateInput(_GUICtrlListView_GetItemText($iListView, $iIndex, 3), 70, 55, 200, 20)
	GUICtrlCreateLabel('Иное поле', 5, 84, 60, 20)
	$Else = GUICtrlCreateInput(_GUICtrlListView_GetItemText($iListView, $iIndex, 4), 70, 80, 200, 20)
	
	$SaveBut = GUICtrlCreateButton('Сохранить', 80, 120, 120, 30)
	
	GUISetState(@SW_DISABLE, $hParent)
	GUISetState(@SW_SHOW, $hAditLine_GUI) ; отображаем окно
	$EditLine = 0
	While 1
		$msg1 = GUIGetMsg()
		
		Switch $msg1
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $SaveBut
				_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($Name), 1)
				_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($INN), 2)
				_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($adres), 3)
				_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($Else), 4)
				ExitLoop
		EndSwitch
		
	WEnd
	;закрываем дочернее окно и возвращаем основное
	Opt("GUIOnEventMode", $iGOEM_Opt)
	GUISetState(@SW_ENABLE, $hParent)
	GUIDelete($hAditLine_GUI)
	
EndFunc
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Супер!
Сейчас у нас фактически целый отдел перестанет заниматься откровенной хренью, и займутся делом а не складыванием чисел в калькуляторе.
Спасибо огромное!!!
 

ildar

Осваивающий
Сообщения
252
Репутация
30
OffTopic:
Сейчас у нас фактически целый отдел перестанет заниматься откровенной хренью, и займутся делом а не складыванием чисел в калькуляторе.
Устроит тебе этот отдел "темную" ;D
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
ildar сказал(а):
OffTopic:
Сейчас у нас фактически целый отдел перестанет заниматься откровенной хренью, и займутся делом а не складыванием чисел в калькуляторе.
Устроит тебе этот отдел "темную" ;D

Как раз наоборот!
До сей поры как было я даже не поленюсь - расскажу:
Вечером в каждом отделении по городу (а у нас их около 90) тетенька начальник ВРУЧНУЮ перебирала квитанции об оплате.
Из этих квитанций выбирались данные (на самом деле раза в 3-4 больше чем тут полей, поля допишу сам, тут алгоритмпонятный)
По некоторым данным показатели складывались на калькуляторе
В итоге все сводилось в табичку ексель
В итоге данная табличка ексель (за прошедшие сутки) прилетала в "головной офис"
Где специальная дефочка РАСПЕЧАТЫВАЛА все эти 90 страничек (а то и больше, ибо на 1 страницу с одного отделения могло не влезть)
И вручную всю эту ***** все эти позиции вводила в 1С

Не забываем, что на места тетеньки могли таблицу переиначить, ибо им НЕ ТАК видится таблица, а дефочка разрывала голову от вида разнообразия.

Счас все это можно отчасти автоматизировать. ввод (таблицу нельзя изменить) суммирования данных (это я сам допишу) отправка данных - тоже сам допишу, ну и пр.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
прошу извинить, ошибся с предыдущим кодом.
нужный вариант
Код:
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <File.au3>
#include <WindowsConstants.au3>

Global $iIndex, $EditLine = 0
; Создание GUI
Global $hGUI = GUICreate("Форма", 435, 350)
Global $iListView = GUICtrlCreateListView("№|Название Фирмы|ИНН|Адрес|Иное поле", 2, 2, 430, 200, $GUI_SS_DEFAULT_LISTVIEW, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
Global $hWndListView = GUICtrlGetHandle($iListView)
; Ширина колонки 0-я 30, остальные - 100
_GUICtrlListView_SetColumnWidth($iListView, 0, 30)
For $i = 1 To 4
	_GUICtrlListView_SetColumnWidth($iListView, $i, 100)
Next

; Поля ввода данных
Local $Name = GUICtrlCreateInput('Название Фирмы', 5, 250, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
Local $INN = GUICtrlCreateInput('ИНН', 220, 250, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
Local $Adres = GUICtrlCreateInput('Адрес', 5, 290, 210, 30)
;GUICtrlSetFont(-1, 12, 500)
Local $Else = GUICtrlCreateInput('Иное поле', 220, 290, 210, 30)
;GUICtrlSetFont(-1, 12, 500)

Local $AddBut = GUICtrlCreateButton('Добавить Запись', 10, 210, 110, 30)
Local $SaveBut = GUICtrlCreateButton('Запись в Файл', 130, 210, 110, 30)
Local $ReadBut = GUICtrlCreateButton('Прочитать из файла', 250, 210, 110, 30)
GUISetState(@SW_SHOW, $hGUI)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

Local $hAditLine_GUI = GUICreate('Редактировать данные', 280, 170, -1, -1, -1, -1, $hGUI) ; создаём окно
GUICtrlCreateLabel('Название', 5, 7, 60, 20)
Local $NameL = GUICtrlCreateInput('', 70, 5, 200, 20)
GUICtrlCreateLabel('ИНН', 5, 32, 60, 20)
Local $INNL = GUICtrlCreateInput('', 70, 30, 200, 20)
GUICtrlCreateLabel('Адрес', 5, 57, 60, 20)
Local $AdresL = GUICtrlCreateInput('', 70, 55, 200, 20)
GUICtrlCreateLabel('Иное поле', 5, 84, 60, 20)
Local $ElseL = GUICtrlCreateInput('', 70, 80, 200, 20)
Local $SaveButL = GUICtrlCreateButton('Сохранить', 80, 120, 120, 30)
GUISetState(@SW_HIDE, $hAditLine_GUI) 

Local $msg, $Text, $hFile
While 1
	$msg = GUIGetMsg(1)
	Switch $msg[0]
		Case $GUI_EVENT_CLOSE
			If $msg[1] = $hGUI Then
				Exit
			ElseIf $msg[1] = $hAditLine_GUI Then
				GUISetState(@SW_HIDE, $hAditLine_GUI)
				GUISetState(@SW_ENABLE, $hGUI)
				WinActivate($hGUI)
			EndIf
		Case $SaveButL
			_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($NameL), 1)
			_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($INNL), 2)
			_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($AdresL), 3)
			_GUICtrlListView_SetItemText($iListView, $iIndex, GUICtrlRead($ElseL), 4)
			GUISetState(@SW_HIDE, $hAditLine_GUI)
			GUISetState(@SW_ENABLE, $hGUI)
			WinActivate($hGUI)
		Case $AddBut ; Добавить пункт в таблицу
			GUICtrlCreateListViewItem(_GUICtrlListView_GetItemCount($iListView) + 1 & '|' & GUICtrlRead($Name) & '|' & GUICtrlRead($INN) & '|' & GUICtrlRead($Adres) & '|' & GUICtrlRead($Else), $iListView)
		Case $SaveBut ;Записать в файл
			Local $Path = FileSaveDialog("Выберите имя.", @ScriptDir, "Текстовый файл (*.txt)", 2)
			If Not @error Then
				$hFile = FileOpen($Path, 2)
				For $i = 0 To _GUICtrlListView_GetItemCount($iListView) - 1
					$Text = ''
					For $j = 1 To _GUICtrlListView_GetColumnCount($iListView) - 1
						$Text = $Text & _GUICtrlListView_GetItemText($iListView, $i, $j) & ';'
					Next
					FileWriteLine($hFile, $Text)
				Next
				FileClose($hFile)
			EndIf
		Case $ReadBut ;Заполнение таблицы из файла
			_GUICtrlListView_DeleteAllItems($iListView)
			Local $OpenPath = FileOpenDialog('Открыть файл', @ScriptDir, 'Текстовый файл (*.txt)', 1 + 2)
			If Not @error Then
				$hFile = FileOpen($OpenPath, 0)
				For $i = 1 To _FileCountLines($OpenPath)
					$Text = StringReplace(FileReadLine($hFile, $i), ';', '|')
					$Text = $i & '|' & StringTrimRight($Text, 1)
					GUICtrlCreateListViewItem($Text, $iListView)
				Next
				FileClose($hFile)
			EndIf
	EndSwitch
	If $EditLine = 1 Then
		GUISetState(@SW_DISABLE, $hGUI)
		GUISetState(@SW_SHOW, $hAditLine_GUI)
		GUICtrlSetData($NameL, _GUICtrlListView_GetItemText($iListView, $iIndex, 1))
		GUICtrlSetData($INNL, _GUICtrlListView_GetItemText($iListView, $iIndex, 2))
		GUICtrlSetData($AdresL, _GUICtrlListView_GetItemText($iListView, $iIndex, 3))
		GUICtrlSetData($ElseL, _GUICtrlListView_GetItemText($iListView, $iIndex, 4))
		$EditLine = 0
	EndIf
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	Local $hWndFrom, $iCode, $tNMHDR, $tInfo
	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
	$iCode = DllStructGetData($tNMHDR, 'Code')
	Switch $hWndFrom
		Case $hWndListView
			Switch $iCode
				Case $NM_RCLICK ;один клик правой кнопки мыши
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					$iIndex = DllStructGetData($tInfo, 'Index')
					If $iIndex <> -1 Then
						$EditLine = 1
					EndIf
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
а чем последний вариант отличаетсяот предпоследнего?
Смотрю по работе скрипта - визуально различий нет.
А еще, раз уж пошла такая пьянка, можно ли основное окно сделать "резиновым"? ну чтоб была возможность растягивать.

Сам себе отвечу про второй вопрос (9-я строка скрипта):
Код:
Global $hGUI = GUICreate("Форма", 435, 350, "", "", $WS_THICKFRAME)
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
а чем последний вариант отличаетсяот предпоследнего?
Разница в способе создания дочернего окна (окно редактирования). Как по мне, проще создавать дочернее окно, когда оно нужно в своей функции , а затем его удалять, ведь если таких окон может быть несколько так будет проще, чем создавать все окна сразу и затем вызывать нужное , следить, что-бы не остались "старые" значения и относительно загрузки памяти рациональнее. Но это всё моё личное мнение... ;)
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Но тогда, какой вариант программы оставить?
Если правильно понял, они ВНЕШНЕ работаю одинаково, разницей является лишь алгоритм создания/удаления окон.
Так получается?
 
Верх