<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mediawiki.oblteh/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Devexpress_%D0%B8_Wine</id>
		<title>Devexpress и Wine - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://mediawiki.oblteh/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Devexpress_%D0%B8_Wine"/>
		<link rel="alternate" type="text/html" href="http://mediawiki.oblteh/mediawiki/index.php?title=Devexpress_%D0%B8_Wine&amp;action=history"/>
		<updated>2026-05-01T07:56:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>http://mediawiki.oblteh/mediawiki/index.php?title=Devexpress_%D0%B8_Wine&amp;diff=25&amp;oldid=prev</id>
		<title>Admin: Новая страница: «== Особенности установки Wine ==    == Решение проблемы в cxLookupComboBox ==  === Описание ===  Во всех ком...»</title>
		<link rel="alternate" type="text/html" href="http://mediawiki.oblteh/mediawiki/index.php?title=Devexpress_%D0%B8_Wine&amp;diff=25&amp;oldid=prev"/>
				<updated>2012-01-18T10:54:08Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «== Особенности установки Wine ==    == Решение проблемы в cxLookupComboBox ==  === Описание ===  Во всех ком...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Особенности установки Wine ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Решение проблемы в cxLookupComboBox ==&lt;br /&gt;
&lt;br /&gt;
=== Описание ===&lt;br /&gt;
&lt;br /&gt;
Во всех комбобоксах не получается выбрать значение с помощью мыши.&lt;br /&gt;
&lt;br /&gt;
=== Решение ===&lt;br /&gt;
Ниже решение от Богомолова Дмитрия:&lt;br /&gt;
&lt;br /&gt;
Глубинный анализ показал проблему в TcxControl.MouseDown, а именно в процедуре смены фокуса (не понимаю, для чего это сделано, разве что для перетаскивания элементов). По сути проблема с фокусом подтверждается &amp;quot;морганием&amp;quot; заголовка окна при выполнении щелчка по выпадающей таблице.&lt;br /&gt;
&lt;br /&gt;
В файле cxControls.pas необходимо найти строку 2958, в ней будет вызов SetFocus. По сути, эта процедура передает фокус активному элементу. При щелчке по стрелочке в cxLookupComboBox она отрабатывает без проблем, но щелчок по выпадающей таблице приводит к тому, что процедура SetFocus не выполняется ни под виндой, ни в Linux (тестировал добавлением определенных операций в TcxContainer.SetFocus, который вызывается как раз в той самой 2958 строке cxControls.pas). Противно то, что не вызывается никаких исключений, процедура просто не выполняется и переходит к следующей строке. Мне это кажется некорректным поведением, но тут уже моих познаний об особенностях компиляторов ObjectPascal не хватает для дальнейшего изучения.&lt;br /&gt;
&lt;br /&gt;
Решение по сути сводится к блокировке SetFocus для проблемного случая. Я заблокировал эту строку для класса TcxCustomLookupDBGrid и никаких проблем в поведении не нашел. Т.е. необходимо строку 2958 в cxControls.pas заменить на блок:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
      // to workaround the bug in Wine with inline cxLookupGrid (Dmitry Bogomolov)&lt;br /&gt;
      if Self.ClassName &amp;lt;&amp;gt; 'TcxCustomLookupDBGrid' then&lt;br /&gt;
      begin&lt;br /&gt;
        SetFocus;&lt;br /&gt;
      end;&lt;br /&gt;
      //&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В идеале можно отловить какие-то особенные свойства чтобы не завязываться на конкретный класс, а решить проблему глобально, но сразу скажу, что расположенный несколькими строками ниже &amp;quot;workaround the bug in VCL&amp;quot; не относится к возникшей у нас проблеме и проверяемые параметры не заводят программу в этот блок в нашем случае.&lt;br /&gt;
&lt;br /&gt;
* Необходимо перекомпилировать модуль cxEditorsD11.bpl&lt;br /&gt;
&lt;br /&gt;
Проверено на следующих версиях:&lt;br /&gt;
* Ubuntu 11.04&lt;br /&gt;
* Wine 1.3.24&lt;br /&gt;
&lt;br /&gt;
=== Предыдущее решение ===&lt;br /&gt;
 Модуль cxLookupGrid.pas, закомментарим вызов inherited&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
procedure TcxCustomLookupGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);&lt;br /&gt;
var&lt;br /&gt;
  AHitInfo: TcxLookupGridHitInfo;&lt;br /&gt;
begin&lt;br /&gt;
//zhukov&lt;br /&gt;
//  inherited MouseDown(Button, Shift, X, Y);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Wine]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>