Page 70 of 96

Posted: Sat Mar 02, 2013 5:09 pm
by Infocatcher

Posted: Sat Mar 02, 2013 5:43 pm
by KDJ
AkelEdit.h wrote:AEM_SETRECT
...
(RECT *)lParam == pointer to a RECT structure that specifies the new dimensions of the rectangle. If this parameter is NULL, the formatting rectangle is set to its default values.
AkelPad crashes when executing the following:

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3178 /*AEM_SETRECT*/, 1 /*AERC_UPDATE*/, 0);

Posted: Sat Mar 02, 2013 10:25 pm
by KDJ
Translator.js
Improved function listening the text - now there is no limit to 100 characters.
Added border to the active edit window.
Fixed an error in the file Translator.ini.

Posted: Wed Mar 06, 2013 7:51 pm
by KDJ
Translator.js
Improved "Listen" function for long texts.
Added "Listen" to the context menu.
Added hotkeys:
Ctrl+L - listen entire text from active edit panel,
Ctrl+Shift+L - listen selected text from active edit panel.

Posted: Thu Mar 07, 2013 6:05 am
by akkorn
Подскажите пожалуйста, как можно получить/ задать текст определенной вкладке (например, вкладке с номером 2)? hWnd вкладки тоже известен.

Posted: Thu Mar 07, 2013 6:16 am
by Instructor
KDJ

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3178 /*AEM_SETRECT*/, 1 /*AERC_UPDATE*/, 0);
Fixed.

Posted: Thu Mar 07, 2013 6:19 am
by Instructor
akkorn
Переключиться на вкладку (AKD_FRAMEACTIVATE), если не активна, и использовать AkelPad.SetSel, AkelPad.ReplaceSel, AkelPad.GetSelText, AkelPad.GetTextRange.

Posted: Thu Mar 07, 2013 6:33 am
by akkorn
Instructor wrote:akkorn
Переключиться на вкладку (AKD_FRAMEACTIVATE), если не активна, и использовать AkelPad.SetSel, AkelPad.ReplaceSel, AkelPad.GetSelText, AkelPad.GetTextRange.
А без визуального переключения?

Задача стоит- найти во всех вкладках сочетание символов (напр. "asd") и вывести номера вкладок в msgbox. при этом хотелось бы,что бы интерфейс не "прыгал".

Спасибо.

Posted: Thu Mar 07, 2013 6:45 am
by Instructor
akkorn
Без переключения будет работать только в MDI: используем AKD_FRAMEFIND для перебора вкладок, получаем FI_WNDEDIT с помощью AKD_GETFRAMEINFO и передаем дескриптор окна редактирования в TextFind.

Posted: Thu Mar 07, 2013 7:21 am
by akkorn
Instructor wrote:akkorn
Без переключения будет работать только в MDI: используем AKD_FRAMEFIND для перебора вкладок, получаем FI_WNDEDIT с помощью AKD_GETFRAMEINFO и передаем дескриптор окна редактирования в TextFind.
А как можно проверить, использует ли пользователь MDI режим?

Posted: Thu Mar 07, 2013 7:38 am
by Infocatcher
akkorn
AkelFiles\Docs\Scripts-Rus.txt wrote:

Code: Select all

AkelPad.IsMDI
_____________

Проверить использование многооконного режима (MDI).

  IsMDI();

Возвращаемое значение
  0  //WMD_SDI   Одноконный режим (SDI).
  1  //WMD_MDI   Многооконный режим (MDI).
  2  //WMD_PMDI  Псевдо-многооконный режим (PMDI).

Пример:
  var nMDI=AkelPad.IsMDI();

Posted: Thu Mar 07, 2013 9:31 am
by akkorn
Infocatcher
Спасибо, все получилось.

Скажите, а как можно получить весь текст определенной вкладки? Везде требуется диапазон, а нам он как раз не известен..

Posted: Thu Mar 07, 2013 7:02 pm
by KDJ
akkorn
Read AkelPad sources: http://sourceforge.net/projects/akelpad ... &download=
AkelDLL.h wrote:#define AKD_GETTEXTLENGTH (WM_USER + 161)
WM_USER = 1024 (hex 0x400): http://msdn.microsoft.com/pl-pl/library ... 85%29.aspx

Posted: Thu Mar 07, 2013 7:29 pm
by FeyFre
akkorn, используй AkelPad.Include("win32\user32.js") там есть все константы используемые для работы с пользовательской частью WINAPI

Posted: Thu Mar 07, 2013 9:23 pm
by KDJ
akkorn wrote:Скажите, а как можно получить весь текст определенной вкладки? Везде требуется диапазон, а нам он как раз не известен..
The following code (GetTextFromTab.js) works in MDI and PMDI mode:

Code: Select all

if (AkelPad.IsMDI() > 0) //MDI or PMDI
{
  var nTab = 2; //zero-based tab index
  var hMainWnd = AkelPad.GetMainWnd();
  var lpFrameTab = AkelPad.SendMessage(hMainWnd, 1290 /*AKD_FRAMEFINDW*/, 8 /*FWF_BYTABINDEX*/, nTab);

  if (lpFrameTab)
  {
    AkelPad.SendMessage(hMainWnd, 11 /*WM_SETREDRAW*/, false, 0);
    var lpFrameCur = AkelPad.SendMessage(hMainWnd, 1285 /*AKD_FRAMEACTIVATE*/, 0, lpFrameTab);
    var sText = AkelPad.GetTextRange(0, -1);
    AkelPad.SendMessage(hMainWnd, 1285 /*AKD_FRAMEACTIVATE*/, 0, lpFrameCur);
    AkelPad.SendMessage(hMainWnd, 11 /*WM_SETREDRAW*/, true, 0);
    WScript.Echo(sText.substr(0, 50000));
  }
}