Все, вероятно, знают то, что я имею в виду, но разъяснить, что управление должно было бы:
Так, есть ли управление редактированием/комбинацией Delphi, которое работает как этот?
Вы можете использовать стандартную системный вызов Unix
, как OS.Fork ()
. FORK ()
создаст новый процесс с тем же сценарием. В новом процессе он вернется 0, в то время как в старом процессе он вернет идентификатор процесса нового процесса.
child_pid = os.fork()
if child_pid == 0:
print "New proc"
else:
print "Old proc"
Для библиотеки более высокого уровня, которая обеспечивает многопроцессорную поддержку, которая обеспечивает портативную абстракцию для использования нескольких процессов, модуль модуль . Есть статья на IBM DeveloperWorks, Многопроцессора с Python , с кратком введением в обе методы.
-121--1029730-Используйте функцию AutoCollition , встроенный для всех управлений редактирования Windows.
Во-первых, заполните ваши TStrings
, однако вы хотите. Затем используйте GetoleStrings
, чтобы создать TSTringsAdapter
, чтобы обернуть его. (Адаптер не претендует на право собственности на объект TStrings
, поэтому вы должны убедиться, что вы не уничтожаете его, пока адаптер все еще живет.) Адаптер дает вам интерфейс
, который вам понадобится, потому что функция автозаполнения требует интерфейса IENUMSTRING
, чтобы обеспечить соответствия завершенности. Позвоните _newenum
для этого.
Далее вызовите CoCreateInstance
для создания объекта Iautocomplete
. Позвоните своему методу INIT
, чтобы связать его с рукояткой окна вашего управления редактированием. Если вы используете поле комбо, затем отправьте его сообщение CBEM_GETEDITCONTROL
, чтобы найти базовое окно редактирования.
Вы можете остановиться в тот момент, и автозаполнение должно работать автоматически. Вы можете отключить автозаполнение, если хотите, или вы можете установить любое количество Параметров автозаполнения .
Вы говорите, что не хотите автозаполнения, но в ОС терминологии, я думаю, что вы действительно не хотите, называется Auto Papend , где остаток строки вводится в поле редактирования Автоматически как типы пользователей, но выбраны так, что дальнейшее набрав будет перезаписать его, и пользователю необходимо удалить избыток текста, если требуемое значение короче одного из матчей.
Также есть Авто рекомендуется , что отображает раскрывающийся список предложений.
Вы можете включить либо или оба варианта. Вам не нужно фильтровать список предложений самостоятельно; Автозаполненный объект фильтрует список IENUMSTRING
сама по себе.
Можно использовать стандартную TComboBox
и библиотеку faststrings (для функции stringMatches()
).
procedure TForm1.cbChange(Sender: TObject);
var
s:Integer;
tmpstr:string;
begin
//suggestions: tstringlist
cb.AutoComplete:=false;
tmpstr:=cb.Text;
cb.Items.Clear;
for s:=0 to suggestions.Count - 1 do
if StringMatches(suggestions[s],cb.Text+'*') then
cb.Items.Add(suggestions[s]);
cb.DroppedDown:=(cb.Items.Count<>0) and (Length(cb.Text)<>0);
cb.Text:=tmpstr;
cb.SelStart:=Length(cb.Text)
end;