Показать сообщение отдельно
Старый 29.12.2011, 18:45   #229
Gonzo
Оператор ЭВМ
 
Аватар для Gonzo
 
Регистрация: 12.01.2011
Адрес: Воронеж
Сообщений: 32
Написано одно полезное сообщение
Сообщение Ответ: Lib_font32: Графические шрифты

Второй день пытаюсь прикрутить библиотеку, но стабильного результата нет. На первых версиях библиотеки на эмуляторе всё работало стабильно,
на телефоне пустой экран и зависание.
Скачал новую версию библиотеки (вроде как последнюю - с функцией поворота). Демка не работает (эмулятор SjBoy).
Ладно. Попробовал использовать в проекте - пустой экран и зависание.
Вот выдрал функцию из проекта и немного подправил для лучшего восприятия:
program TestChat;
uses font32,vscroll;

function ShowChat: Integer;
var
	i, wi, hi, text_height, key: integer;
	fBack,fMsg,fClicked: Command;
begin
	wi:=GetWidth;
	hi:=GetHeight;
	//задаём шрифт
	font32.rotate(0);
	font32.init(1);
	font32.Font(0);
	font32.LoadFont('Verdana');
	font32.color(255, 0, 255, 0);
	//задаём окно, текст и рисуем
	font32.TextWindow(1, 1, wi - 16, hi);
	text_height:=font32.Format('Нет сообщений',0);
	font32.DrawTextWindow;
	//если есть что прокручивать
	if text_height>hi then
	begin
		//задаём и рисуем скроллер
		vscroll.LoadVScroll(LoadImage('/vscroll.png'));
		vscroll.SetVScroll(wi - VScrollWidth, 0, hi);
		vscroll.SetOffset(16);
		vscroll.DrawVScroll(0, text_height, 0, hi);
	end;
	//создаём и добавляем команды
	fBack := createCommand('Назад', CM_BACK, 1);
  fMsg:= createCommand('Написать', CM_ITEM, 2);
  addCommand(fBack);
  addCommand(fMsg);
  //перерисовываем всё
  Repaint;
  repeat
    Delay(100);
    //если есть что прокручивать
    if text_height>hi then
    begin
			//контролируем клавиши прокрутки
			key:=KeyToAction(GetKeyPressed);
			if key = GA_DOWN then
			begin
				FillRect(0,0,wi,hi);
				font32.MoveDown(TextHeight); 
				font32.DrawTextWindow;
				vscroll.DrawVScroll(0, text_height, GetPosition, hi);
				Repaint;
			end
			else if key = GA_UP then
			begin
				FillRect(0,0,wi,hi);
				font32.MoveUp(TextHeight);
				font32.DrawTextWindow;
				vscroll.DrawVScroll(0, text_height, GetPosition, hi);
				Repaint;
			end;
		end;
    fClicked := getClickedCommand;
  until (fClicked = fBack) or (fClicked = fMsg);
  if fClicked = fBack then
		ShowChat := 0
	else if fClicked = fMsg then
		ShowChat := 1;
	//else
  removeCommand(fBack);
  removeCommand(fMsg);
  font32.init(0);
end;

begin
	repeat
	until ShowChat=0;
end.
Проект так же прикладываю в аттаче.

Допустил ли я какую-то ошибку при использовании библиотеки или
может кто-нибудь поделится ссылкой на стабильную версию библиотеки?

Спасибо
Вложения
Тип файла: rar TestChat.rar (4.5 Кб, 854 просмотров)
(Offline)
 
Ответить с цитированием