Дублируется текст, содаваемый индикатором

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Ответить
Сообщение
Автор
jam
Сообщения: 8
Зарегистрирован: Сб окт 03, 2009 9:36 am

Дублируется текст, содаваемый индикатором

#1 Сообщение jam » Ср ноя 25, 2009 10:33 pm

Доброго времени суток!

Предыстория такая: надумал написать для себя индикатор новостей. Поскольку TextLabel в FT еще не поддерживается (я правильно понял?) и простой текст в угол экрана никак не сориентируешь, решил выводить текст в подокно. Пока там для теста одна единственная надпись.
Так вот, после того, как я просто открываю и закрываю окно настроек индикатора, этот текст дублируется. И в подокне индюка их становится уже два. и т.д. Подскажите, что неправильно делаю, как побороть?
OnParametersChange никак не обрабатываю.
Лучше сделать и жалеть, чем не сделать и жалеть.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

Re: Дублируется текст, содаваемый индикатором

#2 Сообщение Terranin » Чт ноя 26, 2009 2:41 am

jam писал(а):Доброго времени суток!

Предыстория такая: надумал написать для себя индикатор новостей. Поскольку TextLabel в FT еще не поддерживается (я правильно понял?) и простой текст в угол экрана никак не сориентируешь, решил выводить текст в подокно. Пока там для теста одна единственная надпись.
Так вот, после того, как я просто открываю и закрываю окно настроек индикатора, этот текст дублируется. И в подокне индюка их становится уже два. и т.д. Подскажите, что неправильно делаю, как побороть?
OnParametersChange никак не обрабатываю.
Киньте код который это делает, так сложно сказать.
Asta la vista
Mike

jam
Сообщения: 8
Зарегистрирован: Сб окт 03, 2009 9:36 am

#3 Сообщение jam » Чт ноя 26, 2009 6:07 am

Ок, вот он:

Код: Выделить всё

library News;

uses
  SysUtils, Graphics, IndicatorInterfaceUnit,
  TechnicalFunctions in 'TechnicalFunctions.pas';

var
  sNews: string;
  ShiftFromRight: integer;

//---------------------------------------------------------------------------
// Initialize indicator
//---------------------------------------------------------------------------
procedure Init; stdcall;
begin
  // define properties
  IndicatorShortName('News');
  SetOutputWindow(ow_SeparateWindow);

  // register options
  RegOption('ShiftFromRight', ot_Integer, ShiftFromRight);
  SetOptionRange('ShiftFromRight', 1, MaxInt);
  ShiftFromRight := 200;
end;

//---------------------------------------------------------------------------
// Redraw indicator
//---------------------------------------------------------------------------
procedure OnParametersChange; stdcall;
begin      

end; 

//---------------------------------------------------------------------------
// Deinitialize indicator
//---------------------------------------------------------------------------
procedure Done; stdcall;
begin
  if ObjectExists('TextLabel_01') then
    ObjectDelete('TextLabel_01');
end;

//---------------------------------------------------------------------------
// Calculate requested bar
//---------------------------------------------------------------------------
procedure Calculate(index: integer); stdcall;
begin
  if not(ObjectExists('TextLabel_01')) then
  begin
    ObjectCreate('TextLabel_01', obj_Text, 0, Time(ShiftFromRight), 0);
    ObjectSetText('TextLabel_01', 'Test text', 12, 'Arial', clBlack);
  end
  else ObjectSet('TextLabel_01', OBJPROP_TIME1, Time(ShiftFromRight));
end;


exports

Init, Done, {OnParametersChange, }Calculate;

begin
end.
Лучше сделать и жалеть, чем не сделать и жалеть.

jam
Сообщения: 8
Зарегистрирован: Сб окт 03, 2009 9:36 am

#4 Сообщение jam » Чт ноя 26, 2009 6:23 am

Ощущение, что после вызова окна настроек, меняется имя объекта.

И ещё вопрос к вам, Terranin
Нет ли каких недокументированных функций для работы с координатами экрана? А то как-то неудобно выходит - при изменении высоты подокна надписи конечно же съезжаются-разъезжаются. Похоже придётся выводить их в отдельное окно и периодически туда подглядывать. А отображение линий времени выхода новостей отдельным индюком сделать.

Или может вы планируете сделать поддержку obj_TextLabel? Было бы отлично.
Лучше сделать и жалеть, чем не сделать и жалеть.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#5 Сообщение Terranin » Чт ноя 26, 2009 5:14 pm

jam писал(а):Ощущение, что после вызова окна настроек, меняется имя объекта.

И ещё вопрос к вам, Terranin
Нет ли каких недокументированных функций для работы с координатами экрана? А то как-то неудобно выходит - при изменении высоты подокна надписи конечно же съезжаются-разъезжаются. Похоже придётся выводить их в отдельное окно и периодически туда подглядывать. А отображение линий времени выхода новостей отдельным индюком сделать.

Или может вы планируете сделать поддержку obj_TextLabel? Было бы отлично.
Недокументированных функций нет а поддержку статичного текста планируем. Так глядя на код вроде все нормально, надо потестировать.

С выводом текста проблемы, если переключиться на другой таймфрейм где нету окна осциллятора возникают ошибки. Так что текст лучше выводить на график.
Asta la vista
Mike

Ответить