Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подсветка параметров функции

15K
07 июля 2007 года
Ivolg
18 / / 15.06.2006
Всем привет ! Например, есть RichEdit, в нем например пишу слово "copy(" и при открытии скобки должна выплывать подсказка с параметрами функции, как в Delphi. Как это можно реализовать ? Может имеются специальные компоненты ?

Вот что я сделал:

Код:
...
const
   Symbols: Array[0..2] of String = ('copy', 'deletefile', 'save'); // слова
функций.
   Parameters: Array[0..2] of String = ('copy (Input: String, Output: String)',
   'deletefile (FileName: String)', 'save (FileName: String)'); //Описание
параметров функции.
...
procedure TForm1.RichEdit1Change(Sender: TObject);
var
   S, S2: String;
   I: Integer;
begin
   S:=RichEdit1.Lines.Text;
   if Pos('(', S) > 0 then  
     begin
       for I:=0 to 2 do
         begin
           S2:=Copy(S, Pos('(', S)-Length(Symbols), Length(Symbols));
           if S2=Symbols then
             begin
               Panel1.Caption:=Parameters;
               Panel1.Left:=28+(8*RichEdit1.CaretPos.X);
               Panel1.Top:=(16*RichEdit1.CaretPos.Y)-5;
               Panel1.Visible:=True;
             end;
         end;
     end
      else
          S2:='';
          Panel1.Visble:=False;
end;


Parent Panel1 на форме. Но возикла проблема: Например, когда каретка по Y > 17, то получается что Top у Panel1 увеличивается и она выходит за рамки RichEdit'a. Тоже самое происходит с Panel1.Left. Left у Panel1 увиличивается и панель уходит за рамки. Как можно запретить панели не выходить за рамки RichEdit'a, при условии что ее Top и Left увеличиваются ? Спасибо !

[color=red]используй [ code ] [ /code ]. Модератор.[/color]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог