Вопросы по LCL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Вопросы по LCL

Сообщение zub » 24.05.2011 23:15:55

Придется делать "свой" "combobox", еще вопросы:
1) Панель+кнопка или едит+кнопка и при клике распахивать то что нужно - вроде ниче сложного, но в разных темах это будет внешне отличаться от стандартного комбобокса. Может можно используя стандартный комбобокс подавить дропдавн его списка, а вместо него распахивать свой?
2) В случае едит+кнопка (этот вариант предпочтительнее, т.к. в винде по виду не отличается от комбобокса, в линуксе - отличается) как не допустить получение едитом клавиатурного фокуса?
3) Как на кнопках рисовать стрелки чтоб они не выпадали из темы оформления?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Вопросы по LCL

Сообщение Odyssey » 25.05.2011 00:25:58

zub писал(а):1) Панель+кнопка или едит+кнопка и при клике распахивать то что нужно - вроде ниче сложного, но в разных темах это будет внешне отличаться от стандартного комбобокса. ...
3) Как на кнопках рисовать стрелки чтоб они не выпадали из темы оформления?

Lazarus - Поиск - Найти в файлах,
Искать текст: ThemeServices
(*) искать в каталогах
Каталог: <путь к исходникам Lazarus>
Найти.

Дальше смотреть по методам и свойствам ThemeServices, и примерам его использования. Возможно будет не совсем то, что ожидалось, например рисуется не стрелка на кнопке, а кнопка целиком. Но в целом, проблема отрисовки нестандартных контролов с использованием стандартной темы решается как-то так.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Вопросы по LCL

Сообщение Nik » 25.05.2011 10:29:05

2zub
Очень неплохая имитация комбобокса получается из комбинации "TEdit+Button+StringGrid". Я делал такую штуку для одной из программ - нужно было в выпадающем списке сделать несколько столбцов с рисунками и сложной раскраской. В StringGrid сможете и клик по рисунку (читай - отдельному столбцу) отлавливать без проблем.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Вопросы по LCL

Сообщение zub » 25.05.2011 12:11:31

Odyssey
Спасибо, попробую.
Nik
Можно гденибудь глянуть реализацию?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Вопросы по LCL

Сообщение Nik » 25.05.2011 15:32:28

2zub
Могу показать упрощённый вариант в другой проге: http://www.megabyte-web.ru/downloads/so ... -0.8.2.exe

См. на вкладке "Валюты" / "Новая валюта". Логика там простая (обработка пары OnClick + управление Visible для StringGrid). Ну а собственно отрисовку красивых StringGrid здесь много раз обсуждали.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Вопросы по LCL

Сообщение zub » 26.05.2011 15:46:43

Nik
спасибо
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Вопросы по LCL

Сообщение zub » 14.08.2011 14:28:38

еще вопросец назрел:
как подавить OnMouseDown для контрола если было запущено контекстное меню? т.е. было запущено какое либо контекстное меню, пользователь не выбирая ничего в меню щелкает по рабочей области (или вообще гдето хрен знает где) чтоб закрыть меню, меню закрывается, но в рабочую область (или туда где пользователь щелкнул) проскакивает MouseDown и совершаются ненужные действия.
Код: Выделить всё
procedure TOGLWnd.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
begin
        if (ActivePopupMenu<>nil) then  exit;
        ...........

не прокатывает - меню к этому моменту уже закрыто((

Родился костыль - всем менюшкам в OnClose назначается инкремент счетчика закрытия и
Код: Выделить всё
procedure TOGLWnd.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: Integer);
begin
        if счетчик закрытия>0 then
                                                 begin
                                                        счетчик закрытия:=0;
                                                        exit;
                                                 end;   
        ...........

Но это некрасиво и могут пропадать клики. Вообще не баг ли что при закрытии контекстного меню выскакивает MouseDown?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Вопросы по LCL

Сообщение zub » 19.11.2012 14:07:13

Давненько небыло вопросов))
Хочу приделать к TOpenGLControl полосы прокрутки. Это можно какнибудь сделать не заводя прокладку в виде TPanel на которую сложить скролбары и опенглконтрол?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 228

Рейтинг@Mail.ru