Учим меня писать плагины :)

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Учим меня писать плагины :)

Post by SUSim »

Решил попробовать написать плагинчик, маленький такой :)
и сразу куча непоняток:

1)Первое чем воспользовался - InputBox, вопрос почему используя InputBox Helptopic приходится указывать полностью с путем, а при Message можно без пути???
API.Message(API.ModuleNumber, 0,'Contents',@Msg,2,1); открывает мой *.hlp файл
API.InputBox(nil,nil,nil,'',CMD,0,'Contents',0); открывает главную страницу хелпа фара.
Да и вообще InputBox как-то по формату не вписывается в идеологию...

2)Далее InputBox меня не удовлетворил, перешел к DialogInit и DialogRun, в PluginW есть куча обёрток для работы с элементами диалога типа DlgItem_GetCheck, а обертки получения текста из эдита нет, почему?

3)Почему бы в писании не сказать что для обработки событий диалога не обязательно писать свой обработчик, я воспользовался API.DialogInit(API.ModuleNumber,-1,-1,76,10,'Contents',@DialogItems,8,0,0,API.DefDlgProc,0); правильно ли это?

Если будут ответы, то ждите дальнейших вопросов %)

P.S. под x64 паскалевский исходник умеет только FreePascal компилить? дайте ссылочку.
SimSU ··· ·· -- ··· ··-
User avatar
Px
Posts: 826
Joined: Fri 08 Sep, 2006 15:52
Location: Вишнёвый (под Киевом)
Contact:

Re: Учим меня писать плагины :)

Post by Px »

SUSim wrote:P.S. под x64 паскалевский исходник умеет только FreePascal компилить? дайте ссылочку.
http://www.freepascal.org/download.var
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

Что надо сделать чтобы вызвать свой плагин по callplugin из макроса?
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

только Px хороший чел,
а остальные жлобы... плин! почему бы не посоветовать???
блюдете тайну??? и скрываете от остальных тонкости :(

P.S. или вам топик не понравился?
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Учим меня писать плагины :)

Post by Yegor »

Ну зачем же так... исходники ведь открыты :)

2) например так (если версия delphi < 2009, то вместо PChar поставить PWideChar)

Code: Select all

function GetDataPtr(hDlg: THandle; Id: Integer): PChar;
begin
  Result := PChar(Info.SendDlgMessage(hDlg, DM_GETCONSTTEXTPTR, Id, 0));
end;
3) передавай nil в этом параметре.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

просто я уже сам разобрался (две недели ждать ответа это не айс, или в этой теме Творцы плагинов совсем не общаются?)
и на счет пункта 3
и насчет пункта 2 (спасибо, конечно, за ответ, Yegor), я сделал чуть по другому потому, что текст я хотел видеть и после DialogFreee:

Code: Select all

function GetItemText(const hDlg:THandle; ID:integer):PFarChar;
  begin
    GetMem(Result,(API.SendDlgMessage(hDlg,DM_GETTEXTLENGTH,ID,0)+1)*SizeOf(TFarChar));
    API.SendDlgMessage(hDlg,DM_GETTEXTPTR,ID,LONG_PTR(Result));
  end;
поправьте меня если я не прав!
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Учим меня писать плагины :)

Post by Yegor »

Если вы сделали GetMem, то скорее вам нужно использовать DM_GETTEXT с соответствующей структурой FarDialogItemData в качестве параметра, а не DM_GETTEXTPTR. А сейчас каша какая-то...
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

Yegor wrote:Если вы сделали GetMem, то скорее вам нужно использовать DM_GETTEXT с соответствующей структурой FarDialogItemData в качестве параметра, а не DM_GETTEXTPTR. А сейчас каша какая-то...
При использовании DM_GETTEXT приходится использовать кроме GetMem еще и Move, это имхо лишнее... И (почему каша? ) этот вариант стабильно работает на различных системах и Фарах разных версий...

Плиз, разъясни...
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1329
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Учим меня писать плагины :)

Post by Yegor »

Прошу прощения, не досмотрел, вы используете DM_GETTEXTPTR, а не DM_GETCONSTTEXTPTR. Все нормально.
Единственное что, можно проверить что длина не ноль, чтобы не вызывать лишний раз SendDlgMessage, да и GetMem тоже.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

А метасимволы "!.!" надо самому разбирать в ручную?
SimSU ··· ·· -- ··· ··-
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Учим меня писать плагины :)

Post by Max Rusov »

SUSim wrote:А метасимволы "!.!" надо самому разбирать в ручную?
Пока что да.
http://forum.farmanager.com/viewtopic.p ... 538#p68538
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

чтото на мантисе такой хотелки не нашел... плохо искал?
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13860
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Учим меня писать плагины :)

Post by John Doe »

Нету. А с чего вы взяли что она там есть?
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

Имхо, полезная хотелка...
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Учим меня писать плагины :)

Post by SUSim »

Для того чтобы создать пункт меню который вызывает подменю имя этого пункта надо формировать в ручную (дбавлять знак ">")?
SimSU ··· ·· -- ··· ··-
Post Reply

Return to “Разработка плагинов”