Такой же глюк и с меню. Если текст в пункте меню большой и делаешь его прокрутку, то окно приходится делать на весть дисплей.
Вот оригинальный код от odd он к тому же еще и с сенсором
procedure Cls2; // Очистка экрана
begin
SetColor(15,155,255); FillRect(0,0,wi,hi);
end;
Procedure ShowInfo(s: string); // Показ какой-либо информации
var text_height, y: integer;
hh: boolean;
im: Image;
begin
hh:=false; im:=LoadImage('/beck.png');
Loadvscroll(LoadImage('/vscroll.png')); // Загрузка скина для скроллера
SetVScroll(wi - VScrollWidth, 0, hi - 22); // Установка положения и длины скроллера
vscroll.SetOffset(6); // Отступ (чтоб не закрыть ползунком стрелочки)
TextWindow(2, 2, wi - VScrollWidth - 2, hi - 22); // Установка текстового окна (на весь экран за вычетом ширины скроллера)
text_height:=Format(s, 0);
Cls2; DrawTextWindow;
if text_height < hi - 22 then hh:=true;
if hh = false then DrawVScroll(0, text_height, GetPosition, hi - 20); else DrawVScroll(0, text_height, 0, 0);
FillRect(0, hi - 22, wi, 22); DrawImage(im, wi - 56, hi - 20); Repaint; Delay(200);//Вот это как раз закрашивает ту часть дисплея в низу
repeat // Главный цикл программы
key2:=GetKeyPressed; key:=KeyToAction(key2); Delay(5);
if hh = false then
begin
if key = GA_DOWN then
begin
MoveDown(2); Cls2; DrawTextWindow; DrawVScroll(0, text_height, GetPosition, hi - 20);
end;
if key = GA_UP then
begin
MoveUp(2); Cls2; DrawTextWindow; DrawVScroll(0, text_height, GetPosition, hi - 20);
end;
FillRect(0, hi - 20, wi, 20); DrawImage(im, wi - 56, hi - 20); Repaint;//Вот это как раз закрашивает ту часть дисплея в низу
end;
if (pointer_state = 1) then
begin
y:=pointer_pressed_y;
if (pointer_pressed_x > wi - GetImageWidth(im)) and (pointer_pressed_x < wi) and (pointer_pressed_y > hi - GetImageHeight(im)) and (pointer_pressed_y < hi) then break; // Выход если нажали на кнопку выход на сенсорном экране
While (pointer_state = 1) do Delay(50); // Ждем пока отпустит перо (для перемотки текста пером)
y:=y - pointer_dragged_y; // Отпустил
if y > 0 then MoveUp(y) else MoveDown(-y); // Перемотка текста
Cls2; DrawTextWindow; DrawVScroll(0, text_height, GetPosition, hi - 20);
end;
if (key2=-4) or (key2=-7) or (key2=22) then break; // Выход
until false;
end;