возможно полезные изменения
TfsSyntaxMemo:
добавил inherited; в начале процедур MouseDown, MouseMove, MouseUp, MouseWheelDown, MouseWheelUp компонента
в процедуре ShiftSelected изменил
Shift:=3; //было Shift:=2;
чтобы блоки сдвигались по 3 символа вправо/влево, а не по 2 при нажатии Ctr+U/I (лучше сделать свойством компонента)
заремил лимит Undo (было 32 - СЛИШКОМ мало) в процедуре AddUndo
в процедуре ShowCaretPos добавил условие <if FMessage = '' then> перед вызовом ShowPos (если у нас была вызвана TSyntaxMemo.ShowMessage(s: string) и у нас внизу пишется наше ссобщение, то, чтобы при прорисовке этого SyntaxMemo, например, при скроллинге, у нас не налезали друг на друга наше сообщение и текст о положении курсора. До изменения они быстро перемаргивались)
в процедуре KeyDown в case при удалении строки (выбор Ctrl+Y), добавил вызов DoChange, чтобы изменения фиксировались в Modified
в published добавил 'property OnKeyPress' (надо перекомпилировать, чтобы можно было пользоваться: Component->Install Packages-> в списке выбрать 'FastScript 1.0 Components' и нажать Edit. На вопрос об отмене этого окна и открытии dclfs.dpk ответить Yes. Откомпилировать заново dclfs.dpk)
в процедуре MouseDown при вызове SetPos изменил в первом параметре
'(X-FGutterWidth) div FCharWidth + 1 + FOffset.X'
на
'(X-FGutterWidth+FCharWidth div 2-1) div FCharWidth+1+FOffset.X', чтобы при нажатии мыши в окне, курсор прыгал в сторону от нажатого символа в зависимости от того, где нажали ближе на символе (ближе к его правому или левому краю символа - туда и ставится курсор)
в процедуру SetText в конце добавил DoChange, чтобы при любом изменении текста срабатывала процедура OnChange
добавил удаление блока (Ctrl+Backspace)
в процедуре KeyDown в case'е при выборе vk_back добавил условие 'if not (ssCtrl in Shift) then', чтобы BackSpace срабатывал только если НЕ нажата Ctrl
а в процедуре KeyPress в case добавил
TfsTree:
добавил поле 'FShowVariables: Boolean;' в private и свойство 'property ShowConstants: boolean read FShowConstants write FShowConstants;' в published. Еще в процедуре FillTree добавил условие
в конструкторе Create добавил строку 'ShowConstants := True;'
в процедуре TreeDblClick изменил 'SyntaxMemo.SelText := Tree.Selected.Text;' на 'SyntaxMemo.SelText := GetFieldName;', чтобы при вставке слова в SynMemo вставлялась не вся конструкция с описаниями параметров и т.п., а только название, скобки и запятые для параметров
чтобы сделать рабочим событие OnDblClick, добавил поле 'FOnDblClick: TNotifyEvent;', а в published изменил свойство 'property OnDblClick;' на 'property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;'
А в процедуре TeeDblClick добавил:
модуль fs_synmemo:
в глоб переменную WordChars добавлены символы (чтобы русские слова распознавались как слова, а не как посторонние символы, типа '!@#')
константы CppKeywords, JSKeywords, PasKeywords, SQLKeywords, VBKeywords, WordChars вынесены из implementation в interface, чтобы были доступны программисту из его модулей
модуль fs_isysrtti:
в функции TFunctions.CallMethod2 исправлена ошибка 'StrToDateTime' (в этом слове стояли 2 буквы 'D') - взято с этого же форума
добавил inherited; в начале процедур MouseDown, MouseMove, MouseUp, MouseWheelDown, MouseWheelUp компонента
в процедуре ShiftSelected изменил
Shift:=3; //было Shift:=2;
чтобы блоки сдвигались по 3 символа вправо/влево, а не по 2 при нажатии Ctr+U/I (лучше сделать свойством компонента)
заремил лимит Undo (было 32 - СЛИШКОМ мало) в процедуре AddUndo
в процедуре ShowCaretPos добавил условие <if FMessage = '' then> перед вызовом ShowPos (если у нас была вызвана TSyntaxMemo.ShowMessage(s: string) и у нас внизу пишется наше ссобщение, то, чтобы при прорисовке этого SyntaxMemo, например, при скроллинге, у нас не налезали друг на друга наше сообщение и текст о положении курсора. До изменения они быстро перемаргивались)
в процедуре KeyDown в case при удалении строки (выбор Ctrl+Y), добавил вызов DoChange, чтобы изменения фиксировались в Modified
в published добавил 'property OnKeyPress' (надо перекомпилировать, чтобы можно было пользоваться: Component->Install Packages-> в списке выбрать 'FastScript 1.0 Components' и нажать Edit. На вопрос об отмене этого окна и открытии dclfs.dpk ответить Yes. Откомпилировать заново dclfs.dpk)
в процедуре MouseDown при вызове SetPos изменил в первом параметре
'(X-FGutterWidth) div FCharWidth + 1 + FOffset.X'
на
'(X-FGutterWidth+FCharWidth div 2-1) div FCharWidth+1+FOffset.X', чтобы при нажатии мыши в окне, курсор прыгал в сторону от нажатого символа в зависимости от того, где нажали ближе на символе (ближе к его правому или левому краю символа - туда и ставится курсор)
в процедуру SetText в конце добавил DoChange, чтобы при любом изменении текста срабатывала процедура OnChange
добавил удаление блока (Ctrl+Backspace)
в процедуре KeyDown в case'е при выборе vk_back добавил условие 'if not (ssCtrl in Shift) then', чтобы BackSpace срабатывал только если НЕ нажата Ctrl
а в процедуре KeyPress в case добавил
#127: //Ctrl+BackSpace
begin
DoCtrlL;
AddSel;
DoDel;
end;
//изменить условие
#32..#126,#128..#255://пропускаем #127, т.к. он возвращается при Ctrl+BackSpace
begin
DoChar(Key);
FMoved := True;
end;
TfsTree:
добавил поле 'FShowVariables: Boolean;' в private и свойство 'property ShowConstants: boolean read FShowConstants write FShowConstants;' в published. Еще в процедуре FillTree добавил условие
if ShowConstants then
AddConstants(FXML.Root.FindItem('Constants'), nil);
и локальную процедуру AddConstants по аналогии с AddVariables, AddTypes и т.д.в конструкторе Create добавил строку 'ShowConstants := True;'
в процедуре TreeDblClick изменил 'SyntaxMemo.SelText := Tree.Selected.Text;' на 'SyntaxMemo.SelText := GetFieldName;', чтобы при вставке слова в SynMemo вставлялась не вся конструкция с описаниями параметров и т.п., а только название, скобки и запятые для параметров
чтобы сделать рабочим событие OnDblClick, добавил поле 'FOnDblClick: TNotifyEvent;', а в published изменил свойство 'property OnDblClick;' на 'property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;'
А в процедуре TeeDblClick добавил:
if Assigned(FOnDblClick) then
FOnDblClick(Sender);
модуль fs_synmemo:
в глоб переменную WordChars добавлены символы (чтобы русские слова распознавались как слова, а не как посторонние символы, типа '!@#')
константы CppKeywords, JSKeywords, PasKeywords, SQLKeywords, VBKeywords, WordChars вынесены из implementation в interface, чтобы были доступны программисту из его модулей
модуль fs_isysrtti:
в функции TFunctions.CallMethod2 исправлена ошибка 'StrToDateTime' (в этом слове стояли 2 буквы 'D') - взято с этого же форума