Показать сообщение отдельно
Старый 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(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; 
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...

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