Вверх ↑
Этот топик читают: Гость
Ответов: 2293
Рейтинг: 678
#106: 2024-12-27 08:10:41 ЛС | профиль | цитата
nesco, думаю что так будет лучше.
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#107: 2024-12-28 04:13:06 ЛС | профиль | цитата
Пофиксил на SVN
карма: 22

0
Ответов: 2293
Рейтинг: 678
#108: 2025-01-16 09:04:16 ЛС | профиль | цитата
Заметил глюк с отрисовкой таблицы.

Тестовая схема:
Add(MainForm,2953706,105,91)
{
Width=444
Height=225
Caption="Test"
link(onCreate,12884905:doFor,[])
}
Add(MTStrTbl,16035729,350,105)
{
Width=428
Height=186
Align=5
Font=[MS Sans Serif,12,0,0,1]
Name="TestTable"
Layout="ver"
Columns=#5:Col_1|9:Col_2=200|
FlatScroll=1
HeaderDragDrop=0
Grid=0
Point(doHeight)
}
Add(MST_RowAction,1274236,294,105)
{
MSTControl="TestTable"
}
Add(For,12884905,168,105)
{
Start=1
End=100
link(onEvent,4328192:doConvert,[])
}
Add(MT_AddData,7206176,252,105)
{
InputMT=3
link(onAdd,1274236:doRowAction,[])
link(Data1,12884905:Position,[(258,79)(151,79)(151,157)(174,157)])
}
Add(Convertor,4328192,210,105)
{
Mode=8
Digits=16
link(onResult,7206176:doAdd,[])
}
Способ проверки:
-Запустить схему
-Нажать на кнопку Развернуть в заголовке окна (слева от кнопки закрытия окна)
-Можно потыкать в строки и они прорисуются

Так-же проблема если слои применить, таблица не прорисовывается вся.

На старой версии такого глюка у меня нет, возможно с последними правками что-то пошло не так.

Редактировалось 1 раз(а), последний 2025-01-16 09:31:59
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#109: 2025-01-16 18:15:12 ЛС | профиль | цитата
sla8a писал(а):
На старой версии такого глюка у меня нет

На какой старой версии? С патчем или без него?
карма: 22

0
Ответов: 2293
Рейтинг: 678
#110: 2025-01-16 21:00:01 ЛС | профиль | цитата
Без патча.
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#111: 2025-01-17 03:32:34 ЛС | профиль | цитата
Пока не знаю, почему так. Самое интересное, что с DubleBuffering работает нормально. И так же нормально работает с раздвижкой окна.

--- Добавлено в 2025-01-17 04:14:03

Попробуй погонять с таким кодом в Win (те убери ремарки, черт знает зачем я их поставил)

procedure THIWin._onResize;
var
i: integer;
begin
inherited;
Control.Invalidate;
for i := 0 to Control.ChildCount - 1 do
Control.Children[i].Invalidate;
Sendmessage(Control.Handle, US_RESIZE, 0, 0);
end;

--- Добавлено в 2025-01-17 04:17:55

??? Оригинально, но всего этого раньше и не было. Должно работать и без перерисовки.

--- Добавлено в 2025-01-17 04:22:09

А лучше всего погоняй вот с таким кодом

procedure THIWin._onResize;
//var
// i: integer;
begin
inherited;
if (Control.Width = GetSystemMetrics(SM_CXSCREEN)) or (Control.Height = GetSystemMetrics(SM_CYSCREEN)) then
Control.Invalidate;
// for i := 0 to Control.ChildCount - 1 do
// Control.Children[i].Invalidate;
Sendmessage(Control.Handle, US_RESIZE, 0, 0);
end;

Редактировалось 5 раз(а), последний 2025-01-17 04:22:09
карма: 22

0
Ответов: 2293
Рейтинг: 678
#112: 2025-01-17 08:00:25 ЛС | профиль | цитата
nesco писал(а):
вот с таким кодом

При разворачивании окна отрисовывает нормально, но вот на такое изменение размера не реагирует:

Add(MainForm,10888429,196,168)
{
Width=594
Height=495
Caption="Test"
Position=1
link(onCreate,12884905:doFor,[])
}
Add(MTStrTbl,16035729,441,182)
{
Width=558
Height=221
Font=[MS Sans Serif,12,0,0,1]
Name="TestTable"
Layout="ver"
HeightScale=100
Columns=#5:Col_1|9:Col_2=200|
FlatScroll=1
HeaderDragDrop=0
Grid=0
Point(doHeight)
}
Add(MST_RowAction,1274236,385,182)
{
MSTControl="TestTable"
}
Add(For,12884905,259,182)
{
Start=1
End=100
link(onEvent,4328192:doConvert,[])
}
Add(MT_AddData,7206176,343,182)
{
InputMT=3
link(onAdd,1274236:doRowAction,[])
link(Data1,12884905:Position,[(349,156)(242,156)(242,234)(265,234)])
}
Add(Convertor,4328192,301,182)
{
Mode=8
Digits=16
link(onResult,7206176:doAdd,[])
}
Add(VBoxLayout,15400704,441,245)
{
Name="ver"
}
Add(ChildPanelEx,11733249,385,245)
{
link(onClick,15400704:doResize,[])
}
BEGIN_SDK
Add(EditMultiEx,7688882,21,21)
{
EventCount=#7:onClick|
Width=335
}
Add(Panel,13529188,294,70)
{
Left=15
Top=230
Width=485
Height=215
Layout="parent.ver"
Point(doVisible)
Point(doHeight)
}
Add(Button,3123401,42,168)
{
Left=215
Top=15
Height=25
Font=[MS Sans Serif,12,0,0,1]
Caption="TEST"
link(onClick,4706100:doEvent1,[])
}
Add(Hub,4706100,105,168)
{
link(onEvent1,902366:doData,[(154,174)(154,83)])
link(onEvent2,7688882:onClick,[(345,181)(345,27)])
}
Add(DoData,902366,203,77)
{
Data=Integer(0)
link(onEventData,9217745:doEvent1,[])
AddHint(-1,-21,21,13,Data)
}
Add(Hub,9217745,252,77)
{
link(onEvent1,13529188:doVisible,[])
link(onEvent2,13529188:doHeight,[])
}
END_SDK

При нажатии на кнопку TEST, панель скрывается, таблица растягивается на всю высоту, но вся не прорисовывается.
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#113: 2025-01-17 12:01:46 ЛС | профиль | цитата
sla8a писал(а):
При разворачивании окна отрисовывает нормально, но вот на такое изменение размера не реагирует:

Тогда оставь первый код, он работает. Пусть тогда лишний раз перерисовывает.

--- Добавлено в 2025-01-17 12:05:00

А вот это заблокируй

(*
WM_SIZING:
begin
if (Msg.wParam = WMSZ_TOP) or (Msg.wParam = WMSZ_TOPLEFT) or (Msg.wParam = WMSZ_TOPRIGHT) or
(Msg.wParam = WMSZ_BOTTOM) or (Msg.wParam = WMSZ_BOTTOMLEFT) or (Msg.wParam = WMSZ_BOTTOMRIGHT) then
InvalidateRect(Control.Handle, nil, false);
end;
*)

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

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#114: 2025-01-17 13:50:09 ЛС | профиль | цитата
Мне так кажется, что перерисовку дочерних окон надо закрыть и оставить только перерисовку основного окна, закрыв при этом WM_SIZING
procedure THIWin._onResize;
//var
// i: integer;
begin
inherited;
Control.Invalidate;
// for i := 0 to Control.ChildCount - 1 do
// Control.Children[i].Invalidate;
Sendmessage(Control.Handle, US_RESIZE, 0, 0);
end;

Редактировалось 3 раз(а), последний 2025-01-17 13:52:58
карма: 22

0
Ответов: 2293
Рейтинг: 678
#115: 2025-01-17 14:50:32 ЛС | профиль | цитата
nesco писал(а):
А вот это заблокируй

Так оба варианта (и полное открытие окна и при использовании слоя) перерисовывают таблицу полностью.
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#116: 2025-01-17 16:16:14 ЛС | профиль | цитата
Я тебя не понял. Так последние рекомендации работают?
карма: 22

0
Ответов: 2293
Рейтинг: 678
#117: 2025-01-17 16:51:09 ЛС | профиль | цитата
Да работает.

Редактировалось 1 раз(а), последний 2025-01-17 16:51:43
карма: 11

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#118: 2025-01-17 17:02:10 ЛС | профиль | цитата
sla8a писал(а):
Да работает.

Ты еще погоняй, может еще чего выловишь. А я позже пофиксю.
карма: 22

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