Вверх ↑
Ответов: 41
Рейтинг: 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