Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#76: 2022-05-01 21:38:03 ЛС | профиль | цитата
ric писал(а):
посмотри ошибку

Убери XP-стиль, и ошибка исчезнет.

--- Добавлено в 2022-05-01 22:01:00

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

Add(MainForm,5412717,434,154)
{
Height=386
Name="form"
Position=1
Point(Handle)
Point(Width)
link(onCreate,8279789:doTimer,[(473,174)(473,202)(263,202)(263,216)])
}
Add(MST_ColAction,935753,385,210)
{
MSTControl="tab"
}
Add(DoData,5286389,336,210)
{
Data=String(col;110)
link(onEventData,935753:doColAction,[])
}
Add(MTStrTbl,2452207,371,154)
{
Top=32
Width=384
Height=315
Align=5
Font=[MS Sans Serif,8,1,0,204]
TabOrder=-1
Name="tab"
ColorSp=12639424
ColDelimiter=";"
ColumnWidth=120
ColorItems=0
HeaderDragDrop=0
TextAlign=2
Grid=0
InfoTip=1
SmallIconsManager="ico2"
DrawManager="userE"
Point(Handle)
Point(ItemAtPos)
Point(onDblClick)
Point(doFont)
}
Add(Timer,8279789,273,210)
{
Interval=500
Enable=1
AutoStop=6
link(onTimer,5286389:doData,[])
}
Add(StyleXP,1464817,273,154)
{
}

Я пока не вижу решения на уровне компонента.

Редактировалось 2 раз(а), последний 2022-05-01 22:01:18
карма: 22

0
Ответов: 245
Рейтинг: 4
#77: 2022-05-01 22:12:20 ЛС | профиль | цитата
это я знаю а как со стилем.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#78: 2022-05-01 22:24:42 ЛС | профиль | цитата
ric писал(а):
это я знаю а как со стилем.

Пост выше, примерная схема. Решения на уровне компонента я не вижу.

Редактировалось 1 раз(а), последний 2022-05-01 22:25:35
карма: 22

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#79: 2022-05-02 00:50:48 ЛС | профиль | цитата
Обновись с SVN, я исправил добавление колонок для XP-стиля.
карма: 22

0
Ответов: 245
Рейтинг: 4
#80: 2022-05-02 01:01:02 ЛС | профиль | цитата
Хорошо, спасибо посмотрю.
карма: 1

0
Ответов: 245
Рейтинг: 4
#81: 2022-05-02 10:56:49 ЛС | профиль | цитата
nesco теперь со стилем и без такая проблема, исчезает разметка столба, сделай откат назад, лучше ширину буду менять.
ScreenGif
Add(MainForm,5412717,273,217)
{
Height=386
Name="form"
Position=1
Point(Handle)
Point(Width)
link(onCreate,8279789:doTimer,[])
}
Add(MST_ColAction,935753,490,231)
{
MSTControl="tab"
}
Add(DoData,5286389,392,231)
{
Data=String(col;110)
link(onEventData,9976398:doEvent1,[])
}
Add(MTStrTbl,2452207,476,168)
{
Top=32
Width=384
Height=315
Align=5
Font=[MS Sans Serif,8,1,0,204]
TabOrder=-1
Name="tab"
ColorSp=12639424
ColDelimiter=";"
ColumnWidth=110
ColorItems=0
HeaderDragDrop=0
TextAlign=2
Grid=0
InfoTip=1
Point(Handle)
Point(ItemAtPos)
Point(onDblClick)
Point(doFont)
}
Add(Timer,8279789,343,231)
{
Interval=500
Enable=1
AutoStop=6
Point(onStop)
link(onTimer,5286389:doData,[])
}
Add(MST_RowAction,4842353,490,280)
{
MSTControl="tab"
}
Add(Hub,9976398,441,231)
{
link(onEvent1,935753:doColAction,[])
link(onEvent2,4842353:doRowAction,[(473,244)(473,286)])
}
Add(StyleXP,2073371,273,182)
{
}


Редактировалось 2 раз(а), последний 2022-05-02 10:58:03
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#82: 2022-05-02 13:47:46 ЛС | профиль | цитата
ric писал(а):
теперь со стилем и без такая проблема, исчезает разметка столба, сделай откат назад, лучше ширину буду менять.
ScreenGif

Это не поможет, я уже пробовал. Так же точно иногда пропадает, если вернуть назад.
карма: 22

0
Ответов: 245
Рейтинг: 4
#83: 2022-05-02 14:28:07 ЛС | профиль | цитата
не пропадало, вроде бы не замечал, переотресовка формы помогает но это не то, моргает то и дело.
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#84: 2022-05-02 15:00:42 ЛС | профиль | цитата
ric писал(а):
не пропадало, вроде бы не замечал, переотресовка формы помогает но это не то, моргает то и дело.

Это лаг самой системы, никак не зависящий от правок, тк я ничего не добавлял, а просто разбил метод добавления столбца на две части -- 1-е: создание столбца нулевой ширины; 2-е: уже после создания столбца назначение ему ширины, а не сразу при создании. В таком случае, отрисовка скроллинга после добавления столбца происходит нормально, тк меняется ширина уже созданного столбца с нулевой до нужной.

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

Редактировалось 11 раз(а), последний 2022-05-02 15:47:45
карма: 22

0
Ответов: 245
Рейтинг: 4
#85: 2022-05-02 15:56:45 ЛС | профиль | цитата
ок
карма: 1

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#86: 2022-05-02 21:53:53 ЛС | профиль | цитата
Попробуй заменить код функции WndHDR вот на этот:


function WndHDR(Sender: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;
const
HDN_FIRST = -300; { Header }
HDN_ITEMCHANGINGA = HDN_FIRST - 0;
HDN_ITEMCHANGEDA = HDN_FIRST - 1;
HDN_DIVIDERDBLCLICKA = HDN_FIRST - 5;
HDN_BEGINTRACKA = HDN_FIRST - 6;
HDN_ENDTRACKA = HDN_FIRST - 7;
HDN_ITEMCHANGINGW = HDN_FIRST - 20;
HDN_ITEMCHANGEDW = HDN_FIRST - 21;
HDN_DIVIDERDBLCLICKW = HDN_FIRST - 25;
HDN_BEGINTRACKW = HDN_FIRST - 26;
HDN_ENDTRACKW = HDN_FIRST - 27;
type
tagNMHEADERA = packed record
Hdr: TNMHdr;
Item: Integer;
Button: Integer;
PItem: PHDItemA;
end;
HD_NOTIFY = tagNMHEADERA;
PHDNotify = ^HD_NOTIFY;
PNMHEADER = ^tagNMHEADERA;
var
fClass: ThiMTStrTbl;
ind: integer;
di, dw: TData;
s: string;
begin
Result := false;
fClass := ThiMTStrTbl(Sender.Tag);
with fClass do
begin
case Msg.message of
WM_NOTIFY:
case HD_NOTIFY(Pointer(Msg.LParam)^).Hdr.code of
HDN_ITEMCHANGINGA, HDN_ITEMCHANGINGW:
_hi_onEvent(_event_onChangeWidth, Sender.LVColWidth[HD_NOTIFY(Pointer(Msg.LParam)^).Item]);
HDN_ENDTRACKA, HDN_ENDTRACKW:
begin
ind := HD_NOTIFY(Pointer(Msg.LParam)^).Item;
s := Sender.LVColText[ind] + _ColDlm +
int2str(PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy) + _ColDlm +
int2str(Sender.LVColImage[ind]) + _ColDlm +
int2str(ord(Sender.LVColAlign[ind]));
CList.Items[ind] := InitColStr(s);
dtInteger(di, ind);
dtInteger(dw, PHDNotify(PNMHEADER(Msg.LParam))^.pItem^.cxy);
di.ldata := @dw;
// _hi_onEvent_(_event_onChangeWidth, di);
end;
HDN_BEGINTRACKA, HDN_BEGINTRACKW, HDN_DIVIDERDBLCLICKA, HDN_DIVIDERDBLCLICKW:
if not FChangeWidth then
begin
Rslt := 1;
Result := True;
end;
end;
// Костыль для борьбы с лагом отрисовки сетки при скроллинге со cтилем XP;
WM_HSCROLL, WM_VSCROLL:
case LOWORD(Msg.wParam) of
SB_THUMBPOSITION, SB_THUMBTRACK, SB_ENDSCROLL: Sender.Invalidate;
end;
end;
end;
end;
карма: 22

0
Ответов: 245
Рейтинг: 4
#87: 2022-05-03 19:20:36 ЛС | профиль | цитата
nesco писал(а):
Попробуй заменить код функции WndHDR

Работает красота
Благодарствую.
карма: 1

0
Ответов: 188
Рейтинг: 2
#88: 2022-05-28 22:37:01 ЛС | профиль | цитата
Извиняюсь! Проблема найдена!

Редактировалось 2 раз(а), последний 2022-05-28 23:16:13
карма: 0

0
Ответов: 245
Рейтинг: 4
#89: 2022-12-07 14:35:28 ЛС | профиль | цитата
Привет всем, может кто исправить этот косяк в таблице, при перемещении столба запись при редактировании открывается предыдущего находившегося там столба, даже не так в том положении как были загружены данные так и хранятся в матрице, а после перемещения не обновляются данные в матрице или еще как то. на видео видно.
Видео
Add(MainForm,3910667,161,84)
{
Height=319
Caption="Example"
link(onCreate,2290980:doEnum,[])
}
Add(MTStrTbl,2452207,98,84)
{
Left=5
Top=5
Width=380
Height=220
Align=5
Name="tab"
FlatScroll=1
Redaction=0
HeaderDragDrop=0
Grid=0
}
Add(StrList,6602338,210,28)
{
Strings=#10:Col=100==210:Co2=100==2|10:Co3=100==2|
}
Add(ArrayEnum,2290980,224,98)
{
link(onItem,4863294:doColAction,[])
link(onEndEnum,10041622:doEnum,[(282,111)(282,90)])
link(Array,6602338:Array,[])
}
Add(MST_ColAction,4863294,301,98)
{
MSTControl="tab"
}
Add(MST_RowAction,12985991,455,70)
{
MSTControl="tab"
}
Add(StrList,15034837,336,28)
{
Strings=#11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|11:111;222;333|
}
Add(MT_String,922736,406,70)
{
link(onResult,12985991:doRowAction,[])
}
Add(ArrayEnum,10041622,350,84)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
|
Редактировалось 6 раз(а), последний 2022-12-07 18:08:48
карма: 1

0
Ответов: 245
Рейтинг: 4
#90: 2022-12-08 19:31:14 ЛС | профиль | цитата
Еще одна неисправность, при использовании внешнего редактора выдаются неверная высота для редактора при смещении в право уменьшается и уходит в минус, а при переносе столба в плюс.
может кто поможет решить проблему.

Запись


Add(MainForm,3910667,175,252)
{
Width=454
Height=273
Caption="Example"
link(onCreate,2290980:doEnum,[])
}
Add(StrList,6602338,238,210)
{
Strings=#8:1=100==2|8:2=100==2|8:3=100==2|
}
Add(ArrayEnum,2290980,252,266)
{
link(onItem,4863294:doColAction,[])
link(onEndEnum,10041622:doEnum,[(296,279)(296,230)])
link(Array,6602338:Array,[])
}
Add(MST_ColAction,4863294,343,266)
{
MSTControl="tab1"
}
Add(MST_RowAction,12985991,427,210)
{
MSTControl="tab1"
}
Add(StrList,15034837,294,168)
{
Strings=#11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|11:1111;2222;0|
}
Add(MT_String,922736,364,210)
{
link(onResult,12985991:doRowAction,[])
}
Add(ArrayEnum,10041622,308,224)
{
link(onItem,922736:doMTString,[])
link(Array,15034837:Array,[])
}
Add(MTStrTbl,4055523,511,77)
{
Left=10
Top=5
Width=270
Height=220
Name="tab1"
FlatScroll=1
ColumnWidth=120
ColumnClick=1
ColorItems=0
HeaderDragDrop=0
TextAlign=2
Grid=0
DrawManager="000"
Point(onMouseEnter)
Point(onMouseLeave)
Point(onChar)
}
Add(MST_UseEditCtrl,3498945,567,301)
{
MSTControl="tab1"
Point(doClientRect)
Point(onClientRect)
PColor(onCellSize,8421440)
PColor(onEscCell,32768)
link(onCellSize,13620734:doValue,[(667,307)(667,244)])
link(onEnterCell,87120:doEvent1,[])
link(onEscCell,11620372:doWork2,[(667,321)(667,405)(791,405)(791,342)])
link(onClientRect,6501317:doSeparateMT,[(624,328)(624,356)])
}
Add(MT_MultiData,2622840,735,308)
{
Point(Data)
link(onData1,13270797:doLeft,[])
link(onData2,13270797:doTop,[])
link(Data,13620734:Value,[])
}
Add(Hub,15922927,805,322)
{
link(onEvent1,13270797:doSetFocus,[])
link(onEvent2,13270797:doBringToFront,[])
}
Add(Hub,87120,679,308)
{
OutCount=6
link(onEvent1,3498945:doClientRect,[(705,314)(705,291)(546,291)(546,314)])
link(onEvent2,2622840:doSeparateMT,[(711,321)(711,314)])
link(onEvent3,15922927:doEvent1,[])
link(onEvent4,13270797:doText2,[(721,335)(721,307)])
link(onEvent5,13270797:doSelectAll,[(769,342)(769,363)])
link(onEvent6,12709971:doRead,[(704,349)(704,483)(555,483)(555,440)])
}
Add(MT_Memory,13620734,735,238)
{
}
Add(Edit,13270797,861,294)
{
Left=305
Top=105
Width=90
Alignment=2
Point(doLeft)
Point(doTop)
Point(doSetFocus)
Point(doBringToFront)
Point(doSendToBack)
Point(doHeight)
Point(doWidth)
Point(doSelectAll)
link(onEnter,8159470:doEvent1,[])
link(Str,3498945:Cell,[(867,280)(613,280)(613,349)(594,349)])
}
Add(MT_MultiData,6501317,721,350)
{
link(onData1,15880877:doEvent1,[(779,356)(779,349)])
}
Add(MST_ArrayCols,12639332,539,385)
{
MSTControl="tab1"
}
Add(MT_MTArrayRW,12709971,567,434)
{
link(onRead,16402293:doSplit,[])
link(Array,12639332:ColumnArray,[(573,426)(545,426)])
link(Index,3498945:SubItem,[])
}
Add(StrPart,16402293,651,434)
{
Char="="
link(onSplit,3107408:doSplit,[])
}
Add(StrPart,3107408,721,434)
{
Char="="
link(onPart,1162960:doEvent1,[])
}
Add(Hub,8159470,903,301)
{
PColor(onEvent2,32768)
link(onEvent1,3498945:doSetData,[(931,307)(931,380)(555,380)(555,307)])
link(onEvent2,11620372:doWork1,[(938,314)(938,271)(844,271)])
}
Add(HubEx,11620372,840,336)
{
PColor(onEvent,32768)
link(onEvent,13270797:doSendToBack,[])
}
Add(Label,13122282,882,406)
{
Left=305
Top=145
}
Add(Label,6375608,882,448)
{
Left=305
Top=165
}
Add(Hub,1162960,812,441)
{
link(onEvent1,13270797:doWidth,[(849,447)(849,356)])
link(onEvent2,6375608:doText,[])
}
Add(Hub,15880877,805,343)
{
link(onEvent1,13270797:doHeight,[])
link(onEvent2,13122282:doText,[(840,356)(840,412)])
}
Add(StyleXP,9160581,168,84)
{
}

карма: 1

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