Вверх ↑
Ответов: 37
Рейтинг: 0
#1: 2020-11-24 08:40:47 ЛС | профиль | цитата
Flapiotun, Леонид, Gunta -- большое спасибо за Ваши подсказки! То, что можно решить через варианты имен файла я понял.
В исходнике диалога сохранения hiSDialog.pas:

procedure THISDialog._work_doFileName;
begin
_prop_FileName := ReadString(_Data, _data_FileName, '');
end;

procedure THISDialog._work_doFilter;
begin
_prop_Filter := ToString(_Data);
end;
Насколько я в состоянии понять, _prop_Filter := ToString(_Data); срабатывает только один раз за сессию программы?
Срабатывает конечно и вот такой уродливый костыль:


Add(MainForm,9675713,84,70)
{
Width=440
Height=172
Point(onMouseDown)
link(onMouseDown,14966239:doEvent,[])
}
Add(Memo,3116927,399,70)
{
Left=170
Top=5
Width=245
Height=55
Strings=#17:Это пример текста|15:для сохранения.|0:|
Point(doSave)
}
Add(PopupMenu,9965293,182,98)
{
Menu=#15:сохранить в txt|15:сохранить в bat|15:сохранить в ini|15:сохранить в str|15:сохранить в vbs|
TranspIcon=1
link(onClick,11261969:doEvent,[])
}
Add(SDialog,3434106,301,98)
{
Filter="текстовый файл|*.txt"
Title="Сохранить Буфер в Файл"
Point(doFileName)
Point(FileName)
link(onExecute,15921331:doWork2,[])
}
Add(IndexToChanel,14966239,133,91)
{
link(onEvent2,9965293:doPopupHere,[])
}
Add(IndexToChanel,11261969,231,98)
{
Count=5
link(onEvent1,3434106:doExecute,[])
link(onEvent2,8893836:doExecute,[(282,111)(282,139)])
link(onEvent3,15066912:doExecute,[(282,118)(282,174)])
link(onEvent4,15721733:doExecute,[(282,125)(282,209)])
link(onEvent5,5965969:doExecute,[(282,132)(282,244)])
}
Add(SDialog,8893836,301,133)
{
Filter="файл пакетной обработки|*.bat"
Title="Сохранить Буфер в Файл"
Point(doFileName)
Point(FileName)
link(onExecute,4510774:doWork2,[])
}
Add(SDialog,15066912,301,168)
{
Filter="файл настроек|*.ini"
Title="Сохранить Буфер в Файл"
Point(doFileName)
Point(FileName)
link(onExecute,13056378:doWork2,[])
}
Add(SDialog,15721733,301,203)
{
Filter="список строк|*.str"
Title="Сохранить Буфер в Файл"
Point(doFileName)
Point(FileName)
link(onExecute,15547887:doWork2,[])
}
Add(SDialog,5965969,301,238)
{
Filter="файл скрипта|*.vbs"
Title="Сохранить Буфер в Файл"
Point(doFileName)
Point(FileName)
link(onExecute,15547887:doWork3,[(354,244)])
}
Add(HubEx,15921331,350,98)
{
link(onEvent,3116927:doSave,[])
}
Add(HubEx,4510774,350,133)
{
Angle=3
link(onEvent,15921331:doWork3,[])
}
Add(HubEx,13056378,350,168)
{
Angle=3
link(onEvent,4510774:doWork3,[])
}
Add(HubEx,15547887,350,203)
{
Angle=3
link(onEvent,13056378:doWork3,[])
}

Но именно затем, чтобы избежать этого ужаса я и полез в настройки фильтра сохранения.
Gunta, Ваш вариант у таких "программистов" как я вызывает "легкий" шок. . В очень общих чертах я понимаю, что происходит в схеме. Но решение мне кажется сверхрадикальным. Спасибо. (По Вашей ссылке скачиватся файл без расширения, для тех кто будет смотреть это -- zip.)
карма: 0

0