Аналог компонента TComboBox

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

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

Re: Аналог компонента TComboBox

Сообщение zub » 24.01.2018 17:17:37

>>в одних текстурах. до конца января черновик опубликую.
Зачем мне в текстурах?, мне нужен лцлный наследник TCustomForm, безболезненно заменяющий TForm

Добавлено спустя 3 минуты 9 секунд:
зачем мне это нужно: http://forum.lazarus.freepascal.org/ind ... 205.0.html
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Аналог компонента TComboBox

Сообщение 7bit » 24.01.2018 17:41:27

olegy123 писал(а):Я бы не советовал изучать сразу EhLib, там много сложного..
посмотрите как расписано тут.
http://delphikingdom.com/asp/viewitem.a ... logid=1213

Интереса ради попробовал запустить тестовый примерчик в Ubuntu 16.04 gtk2. Не работает, при запуске выдает ошибку (уже не помню какая точно, с виджетами связана).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
7bit
новенький
 
Сообщения: 26
Зарегистрирован: 01.10.2011 12:35:52

Re: Аналог компонента TComboBox

Сообщение olegy123 » 25.01.2018 17:12:35

Код: Выделить всё
type


  { TListForm }

  TListForm = class(TCustomForm)

  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;

  end;

  { TMyComboBox }
  TMyComboBox = class (TEdit)
  private
    FListForm:TListForm;

  protected
//    procedure WMChar(var Message: TLMChar); message LM_CHAR;
    procedure InitializeWnd; override;

  end;

implementation

{ TListForm }

procedure TListForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
end;

procedure TListForm.CreateWnd;
begin
  inherited CreateWnd;
//  gtk_window_set_decorated()
end;

{ TMyComboBox }
procedure TMyComboBox.InitializeWnd;
var
  pos:TPoint;
begin
  inherited InitializeWnd;
  FListForm:=TListForm.CreateNew(self);
  pos:=ClientToScreen(Point(0,Height));
  FListForm.Left:=pos.x;
  FListForm.Top:=pos.y+24;
  FListForm.FormStyle:=fsSystemStayOnTop;
  FListForm.BorderStyle:=bsNone;
  FListForm.Show;
end;


пример1.jpg


Добавлено спустя 1 минуту 34 секунды:
С gtk вообще не работал так что точно какие там команды нужны для формирования окошек, я не знаю.

Добавлено спустя 2 минуты 17 секунд:
та же Popup выводится нормально, т.е. в принципе можно изучить формирования окон
У вас нет необходимых прав для просмотра вложений в этом сообщении.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Аналог компонента TComboBox

Сообщение zub » 25.01.2018 23:00:04

Уважаем чужое время и даем код который компилируется без дописывания
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Аналог компонента TComboBox

Сообщение olegy123 » 25.01.2018 23:50:14

Код: Выделить всё
var
  cb:TMyComboBox;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  cb:=TMyComboBox.Create(self);
  cb.Parent:=self;
  cb.Left:=130;
  cb.Top:=80;
end;
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Аналог компонента TComboBox

Сообщение zub » 31.01.2018 00:02:58

Время говорю сэкономить... полный текст привести... а не кучку обрывков...

Вот собственно что я имею ввиду https://imgur.com/a/NSHu4 сначала открываются комбобоксы типа линий и цвета - они честные, кустомдравные, фокус не крадут. потом открывается муляж комбобокса с выбором слоев - фокус крадется, что заметно по морганию рамки окна

Реализация этого http://svn.shamangrad.net/zcad/trunk/ca ... mbobox.pas не моя, я только туда довольно по хамски впилил взаимодействие с потрохами зкада - чтоб со стороны этих потрохов было как можно меньше забот о правильности содержимого этого "комбобокса"

Что там надо вписать в
Код: Выделить всё
procedure TZCADDropDownForm.CreateParams(var Params: TCreateParams);

или еще куда, чтоб фокус лишний раз не дергать? пусть хотябы под виндой работает как надо
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Аналог компонента TComboBox

Сообщение olegy123 » 02.02.2018 04:19:39

cb.tar.gz


Добавлено спустя 4 минуты 17 секунд:
zub писал(а):чтоб фокус лишний раз не дергать?

все зависит от видов окон(в винде одно на всех.. в gtk их вроде два normal & popup.)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Пред.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: tipaproger и гости: 26

Рейтинг@Mail.ru