Page 91 of 97

Posted: Mon Jun 27, 2011 5:12 pm
by KDJ
I have a question.
How in ComboBox or ListBox place text aligned in columns.

Image

If you insert a space between the columns, is resulting like this:

Image

And if a tab like this:

Image

Posted: Mon Jun 27, 2011 6:49 pm
by FeyFre
KDJ
1. ListBox have special style LBS_USETABSTOPS, which enables LB to handle tab characters as Tab stop markers(and LB_SETTABSTOPS message to set tabstop positions). ComboBox does not have such feature.

2. ComboBox and ListBox are very simple controls, they have not any built-in text formatting and decoration features. But they can delegate painting task outer environment, i.e. to parent window. It is called OwnerDrawn. Both of them have special styles LBS_OWNERDRAWVARIABLE,LBS_OWNERDRAWFIXED for ListBox and CBS_OWNERDRAWVARIABLE,CBS_OWNERDRAWFIXED for ComboBox.
Such CBs and LBs when want to draw its item will ask parent(Dialog or window) for it(for each item), sending special messages WM_MEASUREITEM and WM_DRAWITEM message. WM_MEASUREITEM send by control to determine size of item, and WM_DRAWITEM is request to draw specified item.
Difference between *FIXED style and *VARIABLE style:
In *FIXED-styled control all items are of the same height(width is common, equal to control width), and so WM_MEASUREITEM will be sent once after Control creation.
In *VARIABLE-styled control each item can have its own height, so WM_MEASUREITEM will be sent for each item.
In both cases WM_DRAWITEM will be sent for each item, and handler should (surprise)draw item on its own manner.
For more help see http://bit.ly/jrbNmN
You can see how it works in my SpellCheck plugin(underline style selector is CBS_OWNERDRAWFIXED standard ComboBox and color chooser is BS_OWNERDRAW standart Button).

Posted: Tue Jun 28, 2011 5:02 am
by KDJ
FeyFre
Many thanks for your extensive explanation.

Posted: Fri Jul 01, 2011 8:29 am
by [Yustas.NeO]
Помогите, пожалуйста, сделать форму с выпадающим списком, заполняющимся динамически?

Posted: Fri Jul 01, 2011 10:08 am
by FeyFre
[Yustas.NeO]
Полно скриптов с "формами" с комбиками в коллекции, берите откуда хотите.

Posted: Fri Jul 01, 2011 12:07 pm
by [Yustas.NeO]
Спасибо за помощь

numberCount.js by cnnnc v0.6

Posted: Sat Jul 09, 2011 1:15 am
by cnnnc
NumberCount.js is updated to v0.6.
improved: Speed up.
changed: Multiple controls into one.
added: two custom Esc sequences, \N for number sequence and $1 for original line.
added: a messagebox about how much time is spent by script.
fixed: some bugs.

Posted: Mon Jul 11, 2011 1:09 pm
by [Yustas.NeO]
ShiftTabSize.js Version v1.4

Если попытаться выставить размер локальной табуляции в число, меньшее единицы, то выставится в "8".



заменить

Code: Select all

     AkelPad.SendMessage(hWndEdit, 3240 /*AEM_SETTABSTOP*/, nTabSize, 0); 
на

Code: Select all

     if (nTabSize < 1)
       nTabSize = 1;
     AkelPad.SendMessage(hWndEdit, 3240 /*AEM_SETTABSTOP*/, nTabSize, 0); 
Ну или внести изменения в функцию "AEM_SETTABSTOP" :oops:



P.S.
А так же хотелка.

Posted: Mon Jul 11, 2011 6:24 pm
by Instructor
[Yustas.NeO] wrote:Если попытаться выставить размер локальной табуляции в число, меньшее единицы, то выставится в "8".
Изменено.

Posted: Fri Jul 15, 2011 3:52 pm
by Instructor
VladSh
Favourites.js wrote:reload AkelPad...
С версии ContextMenu 9.9 можно так написать:

Code: Select all

var bRunning=false;
...

if (AkelPad.IsPluginRunning("ContextMenu::Main"))
{
  //Отключаем плагин.
  AkelPad.Call("ContextMenu::Main", 10);
  bRunning=true;
}

oINI.write(pFavTextParam, pFavFileText);

if (bRunning)
{
  //Включаем плагин.
  AkelPad.Call("ContextMenu::Main", 10);
}

...

Posted: Sat Jul 16, 2011 3:29 pm
by Infocatcher
measuresConverter.js
Added «Information» section (bytes and bits).
Improved redraws when measure type is changed. I'm not sure, but some bugs may happens...
Fixed bugs with next update after update cancellation.
Added -updateOnStartupReport argument.

Posted: Sat Jul 16, 2011 7:27 pm
by Instructor
Обновлены TabSwitch.js, ShiftTabSize.js, ShiftMarker.js, OpenSaveMask.js, LinesWrap.js, CodePoster.js, ChmKeyword.js на использование AkelPad.GetArgValue.

Posted: Mon Jul 18, 2011 7:26 am
by VladSh
Instructor wrote:
Favourites.js wrote:reload AkelPad...
...
Спасибо! Так гораздо лучше! :D


Ура! Теперь GetArgValue на борту! 8)


Возвернусь )) к давней просьбе:
GetEditFile(hHandle) - определить имя файла.
hHandle - дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования.
можно ли сделать так, чтобы при отсутствии параметра, т.е.

Code: Select all

var arrFileNames = GetEditFile();
возвращался бы массив наименований открытых файлов с полными путями?

Частный случай применения: хотелось немного переделать скрипт WinMerge.js, чтобы он, когда открыто 2 файла, не открывал бы диалог, а подхватывал имена и пути их обоих.
Вообще это было бы полезно для скриптов, перебирающих все (или не все) открытые файлы.

Если вообще нагло, то желателен метод, возвращающий массив объектов-структур информации о файле - хотелось бы ещё чего-нибудь знать о файле кроме его имени.. :)

Posted: Mon Jul 18, 2011 7:52 am
by Instructor
VladSh wrote:возвращался бы массив наименований открытых файлов с полными путями?
См. функцию GetFrameList в скрипте TabSwitch.js.

Posted: Wed Jul 20, 2011 11:44 am
by VladSh
Instructor
Спасибо, буду знать.


Коллеги, подскажите, есть ли какая-нибудь команда, которая позволяет быстро возвращать индекс первого вхождения в окне редактирования от текущей позиции курсора, вверх или вниз?
TextFind хорош, но он не подходит тем, что это UI-шная фишка, т.е. производится переброска выделения.
GetTextRange - хороший метод, но с параметрами (-1, -2) он может быть затратен по памяти (на больших файлах).
Т.е. нужен метод, который бы работал в бэкграунде, и брал на анализ текст порциями.. есть такой?
Вот если бы TextFind не перебрасывал выделение, а просто возвращал индекс (дополнительный параметр? :)), хотя и он непонятно, как ищет, весь текст берёт или порциями?..