View previous topic :: View next topic |
Author |
Message |
vlarx
Joined: 22 Oct 2009 Posts: 5
|
(Separately) Posted: Thu Oct 22, 2009 17:39 Post subject: Использование контентных функций в wfx-плагине |
|
|
Привет всем!!
Только начал осваивать написание плагинов для TC, пишу wfx на Delphi. С основными функциями разобрался, с контентными функциями никак не получается..
Нужные мне колонки настроил функцией FsContentGetDefaultView - отображаются нормально.
Как я понял, значения для файлов в этих колонках должны передаваться Коммандеру функцией FsContentGetValue. FsContentGetSupportedField и FsContentGetValue описал и экспортировал, но они не вызываются Коммандером при просмотре моих файлов в wfx-плагине.
Помогите найти грабли.. |
|
Back to top |
|
|
vlarx
Joined: 22 Oct 2009 Posts: 5
|
(Separately) Posted: Thu Oct 22, 2009 17:43 Post subject: |
|
|
P.S. Коммандер: Total Commander 7.50a |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
|
Back to top |
|
|
vlarx
Joined: 22 Oct 2009 Posts: 5
|
(Separately) Posted: Fri Oct 23, 2009 08:38 Post subject: |
|
|
Code: |
function FsContentGetSupportedField(FieldIndex:integer;FieldName,Units:pchar; maxlen:integer):integer; stdcall;
begin
MessageBoxA(0, PChar('Test FsContentGetSupportedField'), '', 0);
Units[0]:=#0;
if (FieldIndex<0) or (FieldIndex>=2) then begin
Result:=FT_NOMOREFIELDS;
Exit;
end;
StrLCopy(FieldName, _Fields[FieldIndex], MaxLen);
Result:=ft_string;
end;
function FsContentGetValue(fn: pchar; FieldIndex, UnitIndex: integer;
FieldValue: PChar; maxlen, flags: integer): integer; stdcall;
begin
MessageBoxA(0, PChar('Test FsContentGetValue'), '', 0);
case FieldIndex of
0: StrLCopy(FieldValue, PChar('Test 1'), MaxLen);
1: StrLCopy(FieldValue, PChar('Test 2'), MaxLen);
end;
if (Result=FT_STRING) and (lstrlen(FieldValue)=0) then
Result:= FT_FIELDEMPTY;
end;
function FsContentGetDefaultView(ViewContents,ViewHeaders,ViewWidths,
ViewOptions:pchar;maxlen:integer):bool; stdcall;
begin
result:=true;
StrPCopy(ViewContents,'[fs.'+_Fields[0]+']\n[fs.'+_Fields[1]+']');
StrPCopy(ViewHeaders,_Fields[0]+'\n'+_Fields[1]);
StrPCopy(ViewWidths,'100,25,75,85');
end;
//..
exports
FsContentGetDefaultView,
FsContentGetSupportedField,
FsContentGetValue,
FsInit,
FsFindFirst,
FsFindNext,
FsGetDefRootName,
FsFindClose;
|
FsContentGetDefaultView отрабатывает нормально, показывая то, что мне нужно.
Сообщений "Test FsContentGetSupportedField" и "Test FsContentGetValue" не появляется при показе папок и файлов в плагине. При каком событии или условии Коммандер должен вызывать эти функции?
Может что-то специальное нужно указать в FsFindFirst, FsFindNext? |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Fri Oct 23, 2009 10:02 Post subject: |
|
|
Этот код работает, нужные вызовы делаются. Справку сейчас посмотреть не могу (она в неподдерживаемых семёркой hlp-файлах), потому предлагаю сделать вот что: взять исходники TWinamp (http://wincmd.ru/plugring/TWinAmp3.html) и начать сравнивать вызовы функций.
По крайней мере я так и сделал - заменил функции в TWinamp твоим кодом (с некоторой подгонкой, естественно), всё заработало с первого раза. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
vlarx
Joined: 22 Oct 2009 Posts: 5
|
(Separately) Posted: Fri Oct 23, 2009 10:16 Post subject: |
|
|
Спасибо, щас буду пробовать... |
|
Back to top |
|
|
vlarx
Joined: 22 Oct 2009 Posts: 5
|
(Separately) Posted: Fri Oct 23, 2009 11:11 Post subject: |
|
|
Всё, грабли нашёл!
Тут я немного слукавил, написав в функции FsContentGetDefaultView Code: | StrPCopy(ViewContents,'[fs.'+_Fields[0]+']\n[fs.'+_Fields[1]+']'); |
На самом деле вместо fs у меня было имя моего плагина, вот фукнкции, видимо, и не вызывались... В справке этот момент приводится как пример, особого внимания не уделяется...
Щас нужные функции вызываются... |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|