Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#16: 2014-07-08 14:36:47 ЛС | профиль | цитата
nesco, никогда не пользовался и даже не вникал как пользоваться.
Мне колонка с id(rowid) не мешает ( в отличии от miver-а)

Вот, если интересно, что мне не нравится.
http://tempfile.ru/file/3089344
Файл большой - 14 мега. Но если кто-то хочет поэксперементировать с выборкой в SQLite, советую скачать.
Там вроде ссылка действительна 30 суток.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 26
Рейтинг: 6
#17: 2014-07-08 18:02:55 ЛС | профиль | цитата
Tad, мы немного не понимаем друг друга, я про сохранение после ручного редактирования, но всё равно спасибо!Всем спасибо за ответы!
карма: 1

0
Ответов: 2267
Рейтинг: 676
#18: 2014-07-08 19:18:27 ЛС | профиль | цитата
Dseren, сделайте так:
   1. Отсюда ссылка скачиваете элемент, на данный момент не стандартный, но очень хороший
   2. Устанавливаете себе в HiAsm: Установить компонент
   3. И вот такой схемой: for_dseren.sha (не сложной), получаете нужный результат. Ширина столбцов будет сохранятся

Если удастся доработать MST_Save, то вам только останется удалить часть схемы (помеченной "временное решение").
Tad, вы действительно понимаете то что нужно Dseren?
nesco, может сделаете это ссылка элемент стандартным?
карма: 11

1
файлы: 1for_dseren.sha [2.5KB] [388]
Голосовали:Dseren
Разработчик
Ответов: 26153
Рейтинг: 2127
#19: 2014-07-08 19:54:34 ЛС | профиль | цитата
sla8a писал(а):
может сделаете это ссылка элемент стандартным?

До конца еще не решен вопрос с деревом, поэтому пока добавлять ничего никуда не будем.
------------ Дoбавленo в 19.54:
sla8a писал(а):
Если удастся доработать MST_Save

Удастся, но не гарантирую, что вот прямо сейчас.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#20: 2014-07-08 20:22:39 ЛС | профиль | цитата
sla8a писал(а):
вы действительно понимаете то что нужно Dseren?
Понимаю, но sla8a, я ещё немного понимаю как работать с таблицами Баз Данных.
Для этого нужен специальный компонент SQLite_Query, выдающий <Имя колонки=Max(Length(имя колонки))> и точка doAddCols, понимающая этот формат и умножающая число букв на ширину шрифта, применённого в MTStrTbl.
Применять точки doSave и doLoad при работе с БД - полный абсурд.
Заставлять пользователя руками устанавливать ширину колонок - вообще нет слов.
ИМХО.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2267
Рейтинг: 676
#21: 2014-07-08 23:12:00 ЛС | профиль | цитата
0
карма: 11

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#22: 2014-07-09 00:50:46 ЛС | профиль | цитата
0
карма: 22

0
Ответов: 2267
Рейтинг: 676
#23: 2014-07-09 01:26:34 ЛС | профиль | цитата
nesco писал(а):
Не полное. Ты не учел
Согласен.
Тогда так, вместо этого (77-78):
#pas
for i := 0 to _prop_MSTControl.clistcount - 1 do
s := s + _prop_MSTControl.clistitems(i) + _Dlm
это:
#pas
with sControl{$ifndef F_P}^{$endif} do
s := ThiMTStrTbl(Tag).FullSaveColumns(_Dlm)
и будет счастье?
карма: 11

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#24: 2014-07-09 02:41:58 ЛС | профиль | цитата
sla8a писал(а):
и будет счастье?

Этого вообще нет в оригинальной версии, это эксперимент.
------------ Дoбавленo в 02.41:
Я кажется нашел оригинальное и универсальное решение...

Обновленный компонент MtStrTbl -- himtstrtbl.zip

Вопрос -- нужно ли оставлять старый режим, когда изменения ширины сбрасывались в дефолт на любой чих со столбцами
карма: 22

2
файлы: 1himtstrtbl.zip [8.7KB] [421]
Голосовали:sla8a, Dseren
Ответов: 2267
Рейтинг: 676
#25: 2014-07-09 04:13:58 ЛС | профиль | цитата
nesco писал(а):
Вопрос -- нужно ли оставлять старый режим, когда изменения ширины сбрасывались в дефолт на любой чих со столбцами
Думаю что нет.
А что сразу case не поставить? Вместо:
        if (HD_NOTIFY(Pointer(Msg.LParam)^).Hdr.code = HDN_ITEMCHANGEDW) then
        case HD_NOTIFY(Pointer(Msg.LParam)^).Hdr.code of 
HDN_ITEMCHANGEDW:
Можно же кроме HDN_ITEMCHANGEDW еще что полезное добавить.И еще событие добавить с выдачей индекса измененного столбца:
_hi_OnEvent(_event_onChangeWidth, ind);
onChangeWidth=Событие происходит всякий раз после изменения ширины столбца ARG(Index)|2|0


------------ Дoбавленo в 04.13:
Вот к примеру можно добавить запрет на изменение ширины столбцов.
  HDN_DIVIDERDBLCLICKW = HDN_FIRST - 25;
HDN_BEGINTRACKW = HDN_FIRST - 26;


HDN_BEGINTRACKW,
HDN_DIVIDERDBLCLICKW : begin
Rslt := 1;
Result := True;
end;

Конечно функционально все это сделать.
карма: 11

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#26: 2014-07-09 04:42:14 ЛС | профиль | цитата
sla8a писал(а):
А что сразу case не поставить?

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

sla8a писал(а):
onChangeWidth=Событие происходит всякий раз после изменения ширины столбца ARG(Index)|2|0

Может хвостом еще и новую ширину добавить

onChangeWidth=Событие происходит всякий раз после изменения ширины столбца ARG(Index, ColWidth)|2|

карма: 22

0
Ответов: 2267
Рейтинг: 676
#27: 2014-07-09 12:56:18 ЛС | профиль | цитата
nesco писал(а):
Может хвостом еще и новую ширину добавить
Тоже не плохо.
nesco писал(а):
Какие будут еще предложения, кроме озвученных
  • Возможность блокировать изменение размеров как всех столбцов, так и по выбору(строкой с индексами или добавить еще одно свойство в clist.
  • Есть еще удобное сообщение, не помню как называется, код: -530, происходит когда остановился курсор над таблицей. Удобно по этому событию, выводить подсказки к ячейкам.
    [offtop]nesco, надо потихоньку перебираться в вашу тему по MTStrTbl.[/offtop]
    ------------ Дoбавленo в 12.56:
    nesco, если не сложно, то объясните почему вы добавили новую функцию WndHDR, а не отлавливаете эти события (HDN_*) в WndProcTabGrid. Есть какая-то разница или это сделано для удобства?
  • карма: 11

    0
    Разработчик
    Ответов: 26153
    Рейтинг: 2127
    #28: 2014-07-09 14:37:26 ЛС | профиль | цитата
    sla8a писал(а):
    если не сложно, то объясните почему вы добавили новую функцию WndHDR, а не отлавливаете эти события (HDN_*) в WndProcTabGrid

    Дело в том, что WndProcTabGrid перекрывается в элементе MST_UseEditCtrl и обработчик WndProcTabGrid в основном компоненте MSTStrTbl отключается методом detachwndproc. Вот потому я и прицепил независимый обработчик WndHDR
    ------------ Дoбавленo в 14.37:
    Кстати, HDN_ITEMCHANGED срабатывает не только на изменение ширины, но и на любое изменение в столбце, так что onChangeWidth надо бы заменить на onChangeCol. Вот только надо бы решить, выдавать MT-потоком параметры или форматной строкой, я бы остановился на форматной строке, те ARG(IdxCol, FormatStrCol)
    карма: 22

    0
    Ответов: 2267
    Рейтинг: 676
    #29: 2014-07-09 18:21:20 ЛС | профиль | цитата
    nesco писал(а):
    Вот только надо бы решить, выдавать MT-потоком параметры или форматной строкой, я бы остановился на форматной строке, те ARG(IdxCol, FormatStrCol)
    Выдача индекса уже хорошо, если за индексом будет идти (МТ-поток) ширина замечательно, а все остальное, так балласт. ИМХО
    nesco писал(а):
    Дело в том, что ...
    Вот моя первая ошибка (и точно не единственная) в моей версии доработки MTStrTbl .
    карма: 11

    0
    Разработчик
    Ответов: 26153
    Рейтинг: 2127
    #30: 2014-07-09 18:50:40 ЛС | профиль | цитата
    Что-то мне не понравилось событие onChangeCol, оно выдает слишком много событий на каждый чих со столбцами
    карма: 22

    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)