1

Тема: AHK: Заполнение ListView переменными

Всем привет!
Имеются данные в виде переменных (подключенные к скрипту через #include), которые хочется отобразить в виде таблицы. Перебрав элементы управления, наиболее удобной для восприятия показалась ListView. Но как я понимаю, она делает только выборку и автозаполнение таблицы, и нет возможности заполнить ее вручную. Или все же есть способ забить ее переменными?

2

Re: AHK: Заполнение ListView переменными

Нужно заполнять вручную или переменными?

3

Re: AHK: Заполнение ListView переменными

ypppu Наименование вручную, а остаток будет подгружаться с файлов.

4

Re: AHK: Заполнение ListView переменными

a := "123"
b := "456"
c := "789"
var1 := "тест1"
var2 := "тест2"


VarListView := "a|b|c|var1|var2"
Gui, Add, ListView,r10,Имя|Значение
Gui,show

loop,parse,VarListView,|
	LV_Add("",A_LoopField , %A_LoopField%)
	

5

Re: AHK: Заполнение ListView переменными

Я думал нужно вручную править уже созданный ListView.

6

Re: AHK: Заполнение ListView переменными

yalanne, А допустим, у меня имеется 5 столбцов. Как это можно реализовать? На каждый столбец отдельный парсинг? Вчера допоздна просидел, пробовал своими силами, но я еще далек от этого. Сделал отдельные парсинги, но вставить их корректно в столбцы не получилось.

7

Re: AHK: Заполнение ListView переменными

ypppu, Объясню ситуацию, возможно так будет понятней, чего именно я хочу. Данная таблица содержит список продуктов, следующие 4 столбца это их остатки: "Общий остаток", "Весовой", "Нафасованный" и "К отгрузке". На каждый товар создан отдельный текстовый файл, в котором содержатся переменные со значением количества, и подключаются через #include.

8

Re: AHK: Заполнение ListView переменными

ProgMaster90, всё равно непонятно объясняете задачу. Лучше как-нибудь так:

«Имеется элемент ListView в режиме Report (вид по умолчанию). В каждой строке описывается отдельный продукт, а именно:
- 1 столбец "Наименование"
- 2 столбец "Общий остаток"
- 3 столбец "Весовой"
- 4 столбец "Нафасованный"
- 5 столбец "К отгрузке"
Первый столбец пользователь заполняет вручную. В остальные столбцы данные загружаются  автоматически из файла / файлов, подключенных через Include и т. д. и т. п.». Далее идёт описание формата данных в файле / файлах.

9

Re: AHK: Заполнение ListView переменными

ypppu, ну вот как то так, извиняюсь.

10

Re: AHK: Заполнение ListView переменными

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

Gui, Add, ListView, gMyListView w500 h300 -ReadOnly Grid, Наименование|Общий остаток|Весовой|Нафасованный|К отгрузке
Loop, 5
LV_Add() ;Добавляем штук пять строк
Gui, Show
Return


MyListView:
If A_GuiEvent = e ;e - это событие редактирования текста в первом столбце
{
LV_GetText(RowText, A_EventInfo)  ;Извлекаем текст из первого столбца строки, в которой произошло событие. Помещаем его в переменную RowText.
filename := RowText . ".txt"

;Читаем параметр из файла, если таковой существует
IniRead, OutputVar2, %filename%, %RowText%, Общий остаток
IniRead, OutputVar3, %filename%, %RowText%, Весовой
IniRead, OutputVar4, %filename%, %RowText%, Нафасованный
IniRead, OutputVar5, %filename%, %RowText%, К отгрузке

; Изменяем значения в столбцах для строки, в которой произошло событие
LV_Modify(A_EventInfo, , , OutputVar2,  OutputVar3,  OutputVar4, OutputVar5)

;(для отладки) ToolTip, You edited row number %A_EventInfo%. Text: "%RowText%"
}
Return

Подразумевается, что рядом с файлом скрипта лежат файлы овощей.

кабачки.txt

[кабачки]
Общий остаток = К2222
Весовой = К3333
Нафасованный = К4444
К отгрузке = К5555

морковь.txt

[морковь]
Общий остаток = M2222
Весовой = M3333
Нафасованный = M4444
К отгрузке = M5555

11

Re: AHK: Заполнение ListView переменными

ypppu, Что-то не пойму, при каждом запуске таблица пустая, и заново добавлять поля приходится.

12

Re: AHK: Заполнение ListView переменными

ypppu, и дело в том, что у меня уже написан скрипт, который обрабатывает все остатки, то есть отнимает значение с одной переменной, прибавляя к другой. То есть происходит движение по складу. И все эти переменные под корень связаны с основным скриптом. В вашем варианте заголовки столбцов, это те же самые переменные в файле.

13

Re: AHK: Заполнение ListView переменными

у меня такого формата переменные. ves_sahar, fas_sahar, reserv_sahar
ves_grechka, fas_grechka, reserv_grechka

14

Re: AHK: Заполнение ListView переменными

Общие переменные конечно лучше было бы, но чувствую много придется менять, да и обдумывать новую стратегию.

15

Re: AHK: Заполнение ListView переменными

ProgMaster90 пишет:

ypppu, Что-то не пойму, при каждом запуске таблица пустая, и заново добавлять поля приходится.

Так и задумано.

ProgMaster90 пишет:

ypppu, и дело в том, что у меня уже написан скрипт, который обрабатывает все остатки

Вот с этого и надо было начинать.

ProgMaster90 пишет:

Общие переменные конечно лучше было бы, но чувствую много придется менять, да и обдумывать новую стратегию.

Ещё раз подумайте хорошенько и сформулируйте - каким образом вводить и хранить данные. C каждым шагом какие-то новые подробности выясняются. Напишешь скрипт - оказывается  не то.

16

Re: AHK: Заполнение ListView переменными

ypppu, скину скрин, как буду на работе. Все это реализовал пока в GUI.

17

Re: AHK: Заполнение ListView переменными

http://savepic.ru/10185448.jpg

18 (изменено: ProgMaster90, 2016-06-22 09:43:58)

Re: AHK: Заполнение ListView переменными

рядом со скриптом лежат файлы, подключенные через #include:
sahar.txt
yachka.txt
.....
Содержание sahar.txt:
Ov_sahar = 26175
Ves_sahar = 21000
Fas_sahar = 5175
Reserv_sahar = 0

19

Re: AHK: Заполнение ListView переменными

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

20

Re: AHK: Заполнение ListView переменными

Левая колонка точно никогда не изменится? Ассортимент имеет свойство меняться.
Текстовые файлы будут иметь точно такой формат как у sahar.txt и будут заполняться вручную? Редактировать кучу маленьких файлов, при том на транслите, по-моему неудобно.  AutoHotkey умеет работать с форматом, который я предложил в 10 сообщении (читать / сохранять), а у Вашего sahar.txt есть небольшое отличие, из-за которого придётся разбирать файл на строки.

21

Re: AHK: Заполнение ListView переменными

ypppu пишет:

Левая колонка точно никогда не изменится? Ассортимент имеет свойство меняться.

Ассортимент не изменится точно, но изо дня в день добавляется.

ypppu пишет:

Текстовые файлы будут иметь точно такой формат как у sahar.txt

Текстовые файлы вероятней всего пока такими и останутся, если не придет в голову их усовершенствовать и объединить в один. По мере изучения AutoHotkey со знанием приходят и идеи.

ypppu пишет:

и будут заполняться вручную?

Возможно это покажется глупым и нубским методом, но заполняются текстовые файлы так:
У каждого товара имеются команды-префиксы - П- (приход), р- (расход), ф- (фасовка) и о- (отгрузка). Когда я ставлю товар на приход в основной программе, одновременно с этим я вызываю окно ввода поверх программы и ввожу команду п-сахар, и затем количество. После этого идет считывание переменных с файла sahar.txt,  к переменной Ves_sahar(Весовой) добавляется введенное количество, идет перерасчет переменной Ov_sahar(Общий остаток) = Fas_sahar(фасованный) + Ves_sahar(весовой) и файл sahar.txt перезаписывается с новыми значениями переменных. По такому принципу и с расходом, отгрузкой и фасовкой.

yuppu пишет:

Редактировать кучу маленьких файлов, при том на транслите, по-моему неудобно.

Процесс редактирования я описал выше, а что касается транслита, я с ним и не работаю. Редактирую их только тогда, когда остатки не сходятся с фактом. И да, мне проще найти один файл, и подправить в нем значения, чем искать строку в одном текстовом файле.

yuppu пишет:

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

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

22

Re: AHK: Заполнение ListView переменными

В общем ясно, что дело тёмное. Если хотите тренироваться в AutoHotkey - пожалуйста, пример, который можно взять  за основу, я дал.
Если нужна программа для записи, хранения, редактирования и систематизации информации - AutoHotkey это может. Но лучше сразу всё продумать, нежели начать с простого, а затем долго совершенствовать алгоритм.