![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Code completion [D6, Win2k]
Sokoloff © (2002-07-04 17:19:00)Люди, необходимо сделать "Code completion" как в delphi.
То что нужно добавить ListBox я знаю, вопрос в другом.
ListBox обрезается по форме, т.е. видна только часть listbox-а в пределах формы.
Как можно сделать видимой часть listbox-а за пределами формы?
tsarevep (2002-07-05 10:13:00) [1]А вообще есть куча библиотек с этими данными. Когда то я тоже пробывал. Но вопрос за вопросом возникал по мере продвижения и багов все больше и больше. Просто скачай какую нибудь библиотеку с исходными кодами. Например R&A Lib, и посмотри как это делается!
Юрий Зотов (2002-07-04 19:40:00) [2]Проставьте ListBox"у стиль WS_POPUP. Или посмотрите, как открывает список ComboBox.
Volj (2002-07-04 19:39:00) [3]"Не проще тогда создать форму с borderStyle:=bsNone"
Конечно, проще.
"А как сделано выпадающий список у Combobox"
А зачем в контексте задачи?
Sokoloff (2002-07-04 19:37:00) [4]Неправильно я написал, после всех манипуляций в панели задач появляется еще одна (без иконки и названия) и если ее активизировать то listbox начинает реагировать на мыш и клаву.
Главная форма при этом становиться неактивной.
Не проще тогда создать форму с borderStyle:=bsNone?
А как сделано выпадающий список у Combobox?
Я пытался разобраться в исходниках, но IMHO там черт ногу сломит.
Volj (2002-07-04 19:28:00) [5]
windows.SetFocus(form1.ListBox1.Handle)
Sokoloff (2002-07-04 19:26:00) [6]Извините за назойливость, но еще проблема теперь listbox не риагирует на внешние раздражители (мыш и клавиатура). Надо ставить хуки, или можно проще сделать?
Volj (2002-07-04 19:14:00) [7]"листбокс уходит по нее" -
Попробуй:
SetWindowPos(form1.ListBox1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
Sokoloff (2002-07-04 19:05:00) [8]Спасибо, за ответ.
procedure listset;
begin
//form1.ListBox1.Parent := nil;
SetParent(form1.ListBox1.Handle, HWND_DESKTOP);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
listset;
end;
Правильно я вас понял?
Но, если написать Parent:=nil, выпадает ошибка "Control "ListBox1" has no parent window".
Без этой строки все ок.
Еще вопрос, поменял я парента, потом кликаю на форме и листбокс уходит по нее, при щелчке на листбоксе он не всплывает вперед. Как его выдвинуть?
Игорь Шевченко (2002-07-04 17:42:00) [9]При вызове ListBox"а ему надо сказать SetParent(HWND_DESKTOP), тогда он может вылезать за пределы формы. Перед этим сказать Parent := nil