Вверх ↑
Этот топик читают: Гость
Ответов: 283
Рейтинг: 23
#16: 2022-05-18 20:48:10 ЛС | профиль | цитата
Gunta писал(а):
Также прикрутил dll. Теперь можно выбирать стиль создаваемой таблицы.

Супер!
Документацию конечно выкладывай.
карма: 2
0
Ответов: 670
Рейтинг: 140
#17: 2022-05-18 21:02:53 ЛС | профиль | цитата
envoy_sky писал(а):
Документацию конечно выкладывай

https://disk.yandex.ru/d/-G-a7N5vP9F1kA
Также добавил ссылку в предыдущий пост.
карма: 14

0
Ответов: 5227
Рейтинг: 585
#18: 2022-05-18 22:48:11 ЛС | профиль | цитата
Если бы изначально штатный пакет FPC не кастрировали из за ~100кб лишнего веса к exe (выкинули типа ненужные модули) то палитра HiAsm давно бы была другой. Вот от такого решения годами прикручиваем всякого рода костыли
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 585
#19: 2022-05-19 00:24:35 ЛС | профиль | цитата
Gunta, кстати с dll то я вроде уже выкладывал тут где то ещё одну свою поделку или ты что то пропустил

Редактировалось 3 раз(а), последний 2022-05-19 13:28:40
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 670
Рейтинг: 140
#20: 2022-05-19 07:51:38 ЛС | профиль | цитата
andrestudio писал(а):
выкладывал тут где то ещё одну свою поделку или ты что то пропустил

Нет, не пропустил. Даже немного поэкспериментировал.
Схему на всеобщее обозрение выкладывать не буду.
Exsport with elv dll.PNG

Редактировалось 1 раз(а), последний 2022-05-19 07:51:52
карма: 14

0
Ответов: 5227
Рейтинг: 585
#21: 2022-05-19 13:38:33 ЛС | профиль | цитата
Gunta, а ну понял тогда, извиняй. У той приблуды недостаток в экспорте в том что все значения становятся строковыми. В своей библиотеке рассчитываю добавить несколько функций чтобы иметь возможность работать с документом, записывать данные в произвольную ячейку произвольной страницы, добавлять удалять страницы. Даже этого будет достаточно что бы иметь возможность работать с шаблонами, которые соответственно могут содержать макросы и т.п
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 585
#22: 2022-05-19 21:48:58 ЛС | профиль | цитата
Ну что, StringTableEx становится всё интересней и интересней
Подкинули ей немного точек

*onEndLoad=Событие происходит после загрузки документа и выводит в поток список страниц документа XLS|2|
*onSelectSheet=Событие происходит после выбора страницы и выдаёт её имя в поток|2|
*SheetNames=Содержит имена страниц книги XLS|3|2
*SheetCount=Содержит количество страниц книги XLS|3|1
*ActiveIndex=Содержит индекс активной страницы|3|1
*IdxActive=Индекс для активной страницы|4|1
*doLoadFromIndex=Метод загружает таблицу страницей согласно индексу, индекс передаётся в потоке или с точки IdxActive|1|

Теперь можно открывать многостроничные файлы, делать правки на страницах и успешно их сохранять. Как то так...
демка с тестовым файлом и схемой https://forum.hiasm.com/getfile/39465


карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1TestReadXLS4.zip [169.1KB] [245]
Ответов: 5227
Рейтинг: 585
#23: 2022-05-20 13:58:06 ЛС | профиль | цитата
Добавил ещё пару методов, пожалуй уже достаточно

*doAddSheet=Метод добовляет страницу в документ, имя страницы передаётся в потоке|1|
*doDeleteSheet=Метод удаляет активную страницу из документа XLS|1|




--- Добавлено в 2022-05-20 14:10:12

Не знаю конечно интересно или нет но в методе Add добавил проверку на отсутствие колонок. Если истина то создаются согластно полученной строки
Ну как бы ну нет заголовков ну виг с ними, что из за этого типа данные не получать
const
alf = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
.....

procedure THIStringTableEx.Add;
var
s:string;
i:byte;

procedure AddColums;
var
j: integer; dt: TData;
begin
for j := 1 to Length(s) do
if s[j] = _prop_StrDelimiter then
Control.LVColAdd(alf[Control.LVColCount+1],taLeft,80);
end;

begin
if _prop_StrDelimiter = '' then
_prop_StrDelimiter := ' ';
s := Data + _prop_StrDelimiter;

if Control.LVColCount = 0 then
AddColums;

--- Добавлено в 2022-05-20 14:25:43

Так то библиотека обширна, всё необходимое присутствует


Редактировалось 3 раз(а), последний 2022-05-20 14:25:43
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 585
#24: 2022-05-24 21:14:45 ЛС | профиль | цитата
Итак, решился я сделать ещё пару компонентов.
Это будет:
xReadData: Чтение произвольной строки с данными типа (Integer,Real,String,Images) Произвольное количество нижних точек МТ потока
xWriteData: Запись произвольной строки с данными типа (Integer,Real,String,Images) Произвольное количество верхних точек МТ потока
Такие файлы будут не обязательны к просмотру и редактированию в офисе а скорей всего могут использоваться как защищённая база данных в приложении.
Ночь длинна, можно приступать
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 585
#25: 2022-05-27 19:16:23 ЛС | профиль | цитата
компоненты сделал
Довольно гибкие штуковины получились.



writer
Count=Количество столбцов данных XLS документа|1|2
@FileName=Имя файла XLS|2|
@Password=Пароль для открытия файла XLS|2|
@Row=Индекс строки для чтения методами doSetDataXLS,doSetRowXLS|1|0
@Col=Индекс колонки для чтения методом doSetDataXLS|1|0
@SheetIndex=Индекс страницы при открытии файла|1|0
@IndexStr=Индекс формата Excel типа A1,A2... и т.д. Всегда в приоритете над Row и Col|2|A1
WholeLine=Записать MT поток в строку методом doSetRowXLS независимо от количества точек Count|14|0|False,True
WholeColumn=Записать в MT поток в столбец методом doSetColXLS независимо от количества точек Count|14|0|False,True
Delimiter=Разделитель для данных получаемых методом doWriteAllData|2|;
xReader=Поток открытый xReaderData. Если указан то имя файла,пароль,индекс страницы не требутся|20|(empty)|XlsFile

[Methods]
doOpenFile=Метод открывает XLS файл для записи|1|
doCloseFile=Метод закрывает XLS файл|1|
doSetDataXLS=Метод записывает данные в таблицу по адресу Row и Col. Данные передаются в потоке или с первой верхней точки|1|
*doSetRowXLS=Метод записывает строк Row. Данные передаются в МТ потоке или с верхних точек|1|
*doSetColXLS=Метод записывает колонку Col. Данные передаются в МТ потоке или с верхних точек|1|
onSheetNames=Событие происходит после открытия файла и выдаёт список страниц в поток|2|
RowCount=Содержит количество строк открытой страницы документа|3|1
ColCount=Содержит количество колонок открытой страницы документа|3|1

reader
FileName=Имя файла XLS|2|
Password=Пароль для открытия файла XLS|2|
Count=Количество столбцов данных XLS документа|1|2
WholeLine=Читать в MT поток всю строку методом doGetRowXLS независимо от количества точек Count|14|0|False,True
WholeColumn=Читать в MT поток весь столбец методом doGetColXLS независимо от количества точек Count|14|0|False,True
Delimiter=Разделитель для данных получаемых методом doReadAllData|2|;
Name=Имя файлового потока для xWriteData|2|


[Methods]
doOpenFile=Метод открывает XLS файл для чтения|1|
doCloseFile=Метод закрывает XLS файл|1|
doGetDataXLS=Метод запрашивает данные таблицы из ячейки Row и Col|1|
*doGetRowXLS=Метод запрашивает данные таблицы из строки Row|1|
*doGetColXLS=Метод запрашивает данные таблицы из колонки Col|1|
*doReadAllData=Выводит в цикле на onDataStr все строки таблицы со всеми столбцами|1|
*doClear=Метод очищает внутренний буфер данных|1|
FileName=Имя файла XLS|4|2
*Password=Пароль для открытия файла XLS|4|2
*SheetIndex=Индекс страницы при открытии файла|4|1
onData=Событие происходит после методов doGetDataXLS, doGetRowXLS и выдает MT поток данные таблицы|2|
*onDataStr=Событие происходит после вызова метода doReadAllData и выдаёт в поток строки таблицы, столбцы которых разделены делиметром|2|
onSheetNames=Событие происходит после открытия файла и выдаёт список страниц в поток|2|
*Row=Индекс строки для чтения методами doGetDataXLS,doGetRowXLS|4|1
*Col=Индекс колонки для чтения методом doGetDataXLS|4|1
IndexStr=Индекс формата Excel типа A1,A2... и т.д. Всегда в приоритете над Row и Col|4|2

в ячейках можно хранить достаточно объёмные данные. Это могут быть html,rtf,txt документы. Стримы делать не стал т.к лучше их хранить в ячейках в Base64,91. т.к таблица она и есть матрица то можно строить в ней различные деревья и т.п списки
Короче тут есть где разгуляться на предмет творчества

Редактировалось 3 раз(а), последний 2022-05-27 19:27:11
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
1
Голосовали:tig-rrr
25
Сообщение
...
Прикрепленные файлы
(файлы не залиты)