Показать сообщение отдельно
Старый 10.01.2010, 09:17   #85
GRAY_WOLF
Разработчик
 
Аватар для GRAY_WOLF
 
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений
(для 93 пользователей)
Ответ: Lib_font32: Графические шрифты

Такой же глюк и с меню. Если текст в пункте меню большой и делаешь его прокрутку, то окно приходится делать на весть дисплей.
Вот оригинальный код от odd он к тому же еще и с сенсором
procedure Cls2// Очистка экрана
begin
    SetColor
(15,155,255); FillRect(0,0,wi,hi);
end;

Procedure ShowInfo(sstring); // Показ какой-либо информации
var     text_heightyinteger;
        
hhboolean;
        
imImage;
begin
    hh
:=falseim:=LoadImage('/beck.png');
    
Loadvscroll(LoadImage('/vscroll.png')); // Загрузка скина для скроллера
    
SetVScroll(wi VScrollWidth0hi 22); // Установка положения и длины скроллера
    
vscroll.SetOffset(6); // Отступ (чтоб не закрыть ползунком стрелочки)
    
TextWindow(22wi VScrollWidth 2hi 22); // Установка текстового окна (на весь экран за вычетом ширины скроллера)
    
text_height:=Format(s0);
    
Cls2DrawTextWindow;
    if 
text_height hi 22 then hh:=true;
    if 
hh false then DrawVScroll(0text_heightGetPositionhi 20); else DrawVScroll(0text_height00);
    
FillRect(0hi 22wi22); DrawImage(imwi 56hi 20); RepaintDelay(200);//Вот это как раз закрашивает ту часть дисплея в низу
    
repeat // Главный цикл программы        
        
key2:=GetKeyPressedkey:=KeyToAction(key2); Delay(5);
        if 
hh false then
        begin
            
if key GA_DOWN then
                begin
                    MoveDown
(2); Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
            
end;
            if 
key GA_UP then
                begin
                    MoveUp
(2); Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
                
end;
            
FillRect(0hi 20wi20); DrawImage(imwi 56hi 20); Repaint;//Вот это как раз закрашивает ту часть дисплея в низу
        
end;
        if (
pointer_state 1then
        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 hithen break; // Выход если нажали на кнопку выход на сенсорном экране
            
While (pointer_state 1) do Delay(50); // Ждем пока отпустит перо (для перемотки текста пером)
            
y:=pointer_dragged_y// Отпустил
            
if 0 then MoveUp(y) else MoveDown(-y); // Перемотка текста
            
Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
        
end;
        if (
key2=-4) or (key2=-7) or (key2=22then break; // Выход
    
until false;
end
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...

Последний раз редактировалось GRAY_WOLF, 10.01.2010 в 18:51. Причина: Добавлен код.
(Offline)
 
Ответить с цитированием