forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Графическое меню в Midlet Pascal. Как? (http://forum.boolean.name/showthread.php?t=6053)

JIexa 26.06.2008 22:43

Графическое меню в Midlet Pascal. Как?
 
Вот в MP есть функции, чтобы сделать стандартное меню. А как мне сделать, чтобы было свое меню? с красивыми кнопка и пр.
Чтобы инетерфейс вобщем был красивый а не обычный как в Midlet Pascal.
Кто может подскажет?

ABTOMAT 26.06.2008 23:19

Ответ: Графическое меню в Midlet Pascal. Как?
 
Сам рисуй, сам обрабатывай, всё ручками...

JIexa 26.06.2008 23:29

меню
 
Ну это так то так. а вот при нажатии кнопки "вниз" перерисовывать весь экран? дык так на телефон много нагрузки. Или перерисовывать только некоторые части. Кто может так делал? Может приведете пример?

ViNT 27.06.2008 00:07

Ответ: Графическое меню в Midlet Pascal. Как?
 
В либе cnv2 есть функция repaint_part, хотя и на перерисовку экрана много ресурсов не нужно.

odd 27.06.2008 08:16

Ответ: Графическое меню в Midlet Pascal. Как?
 
Я тебе выложил парочку примеров создания меню:
http://forum.boolean.name/showthread...1471#post81471

Romanzes 27.06.2008 12:05

Ответ: меню
 
Цитата:

Сообщение от JIexa (Сообщение 81456)
Ну это так то так. а вот при нажатии кнопки "вниз" перерисовывать весь экран? дык так на телефон много нагрузки. Или перерисовывать только некоторые части. Кто может так делал? Может приведете пример?

Конечно перерисовывать, причем весь экран, и не только при нажатии кнопки. Это не такая уж и большая нагрузка.

JIexa 28.06.2008 16:16

Ответ: Графическое меню в Midlet Pascal. Как?
 
А подскажите еще как сделать вывод текста чтобы он при достижения конца экрана переходил на новую строчку. И как сделать форму ввода текста в showcanvas??? делать в виде полей может? а при нажатии кнопки ОК выводить TextBox ??? а лучше как при нажатии цифры она сразу появлялась на экране в showcanvas.

ViNT 28.06.2008 22:23

Ответ: Графическое меню в Midlet Pascal. Как?
 
Цитата:

Сообщение от JIexa (Сообщение 81520)
А подскажите еще как сделать вывод текста чтобы он при достижения конца экрана переходил на новую строчку.

Тут нужно самому определть предполагаемую длину текста(с помощью GetStringWidth), делить его на блоки и выводить.
Цитата:

И как сделать форму ввода текста в showcanvas???
Над этим бились давно, на MP это реализовать сложно.
Цитата:

делать в виде полей может? а при нажатии кнопки ОК выводить TextBox ???
Пожалуй, самый подходящий вариант.

odd 29.06.2008 09:57

Ответ: Графическое меню в Midlet Pascal. Как?
 
Вот простейшая процедура для разбиения длинной строки на маленькие строчечки:

Код:


Function DLT3 (start: integer): integer; // Это служебная функция для процедуры Format
var i, j, len, oi: integer;
begin
 i:=start; len:=Length(str); oi:=i;
 while (GetStrWidth2(Copy(str,start,i))<wi-ch) and (i<len) and (GetChar(str,i)<>nn) do begin if GetChar(str,i)=' ' then oi:=i; i:=i+1; end;
 if (oi<>i) and (GetChar(str,i)<>nn) then begin
      j:=oi; repeat j:=j+1; until (GetChar(str,j)=nn) or (GetChar(str,j)=' ') or (j>len);
      if j<len then if GetStrWidth2(Copy(str,oi,j))<wi-ch then i:=oi;
      end;
 if GetChar(str,i)=' ' then i:=i+1;
 if GetChar(str,i)=nn then i:=i+1;
 DLT3:=i;
end;
 
Procedure Format;
var finish, start, k: integer;
begin
 max:=0;
 If GetStrWidth2(str)<wi-ch then begin for k:=0 to 32 do w[k]:=''; w[max]:=str; max:=1; end;
 else begin
    start:=0;
    for k:=0 to 15 do begin
    w[k]:=''; finish:=DLT3(start);
    if GetChar(str,finish-1)<>nn then w[max]:=Copy(str,start,finish); else w[max]:=Copy(str,start,finish-1);
    if w[max]=nn then w[max]:='';
    if start<>finish then max:=max+1;
    start:=finish; end;
  end;
end;

Для разбиения строчки нужно её поместить в переменную str и вызвать функцию Format. После форматирования маленькие строчки будут содержаться в массиве w, а количество полученных строк будет храниться в переменной max.
Так же ещё нужно задать такие переменные:
w[0..32] - массив обрезанных строк
wi - ширина экрана
hi - высота экрана
ch - отступ от правого края экрана в пикселах
nn - символ для переноса, например "|"
Функция GetStringWidth2 - вычисляет ширину строки в пикселах, если у тебя шрифт не графический, а встроенный в телефон, то можно заменить на обычную GetStringWidth.

Особенности - чтобы процедура нормально работала нужно перед каждым символом переноса (задаваемым переменной nn) и в самом конце разбиваемой строки ставить пробел.

ARV 29.06.2008 13:37

Ответ: Графическое меню в Midlet Pascal. Как?
 
Цитата:

Сообщение от JIexa (Сообщение 81520)
А подскажите еще как сделать вывод текста чтобы он при достижения конца экрана переходил на новую строчку.

где-то среди наработок я выкладывал модуль CRT там есть и исходники, и требуемая функция.


Часовой пояс GMT +4, время: 02:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot