Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

WM_THEMECHANGED   Найти похожие ветки 

 
Jon ©   (2007-10-08 22:43) [0]

When a combobox (not simple or read-only) recieves a WM_THEMECHANGED message, all its text becomes selected. If there are many comboboxes on the form, they all are selected which looks messy. Is this a bug?


 
Vladimir Kladov ©   (2007-10-09 16:16) [1]

1st: with visual_xp_styles? (if Yes, this seems is answer to MTsvDN)
2nd: what is in VCL (if 1st <> true)?


 
Jon   (2007-10-09 16:59) [2]

(1) Same result with and without GRAPHCTL_XPSTYLES defined.

From kol.pas:

{$IFDEF GRAPHCTL_XPSTYLES}
{$I visual_xp_styles.inc}
{$ENDIF}


(2) In VCL text remains unselected at theme changed.

I tested by starting and stopping themes service from command line whie application active.


 
Jon ©   (2007-10-13 02:46) [3]

For a temporary fix, I use in Form.OnMessage handler:


function FormMessage(Dummy: Pointer; var Msg: tagMSG; var Rslt: Integer): Boolean;
var
 Counter: Integer
begin
 Result := False;
 case Msg.message of
   WM_THEMECHANGED:
   begin
     for Counter := 0 to Form.ChildCount -1 do
       if Form.Children[Counter].SubClassName = "obj_COMBOBOX" then
       begin
         Form.Children[Counter].SelStart := 0;
         Form.Children[Counter].SelLength := 0;
       end;
   end;
 end;
end;


But I believe that there must be a more elegant solution.


 
Vladimir Kladov ©   (2007-10-13 07:20) [4]

There is another bad thingn with changing theme, but I don"t know yet how to fix it: transparency disappears for GRush controls. But I do not think that this is a big problem at all: the MS Inernet Explorer has even more troubles with changng theme. Thing holes of 1 or 2 pixels are appearing sometimes between its panels, buttons are away from toolbars, etc. and only restart of Windows fixes the problem.


 
homm ©   (2007-10-13 08:48) [5]

Во первых, Владимир, прошу прощения, я Ваше письмо видел, но забыл про него.

2007 Борланд Студия нагло вылетает с формулировкой Out of memory при смене темы :)

По моим тестам WM_THEMECHANGED посылает только когда меняется XP Theme. Мне это не подходит. Есть ли сообщение, которое шлется при изминении обычной темы???


 
homm ©   (2007-10-13 09:10) [6]

Понял, WM_THEMECHANGED шлется по всем окнам в случае смены темы XP, в случае смены обычной темы, шлется только окнам первого уровня.

Я вот теперь припоминаю, когда разрабатывал граши, просил у Вас, Владимир, какой-то способ доставить это сообщение от формы до родителей, Вы отказали.

А вообще, майкросовт, хитрые. Когда им что-то нужно, делают все через жопу, отправляют сообщения всем окнам, а когда им не дужно, то только избранным, типо не наше дело, разбирайтесь сами с этим сообщением.


 
Vladimir Kladov ©   (2007-10-13 14:02) [7]

Да каких-то поблем нет, прицепляется к Appletу еще один динамический обработчик, и дальще лучше уже не рассылкой сообщений, а либо рекурсивным спуском либо, еще лучше, держать список всех контролов, ждущих этого сообщения, и вызывать свой метод.

Что, кроме тем ХР, есть ещё обычные темы. А они нужны, разве WM_DESKTOPCHANGED или как оно там, не достаточно.


 
Jon ©   (2007-10-14 21:58) [8]

This is a better solution for comboboxes:

 ComboBox.OnMessage := TOnMessage(MakeMethod(nil,@ComboMessage));

...

function ComboMessage(Dummy: Pointer; var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
 Result := False;
 case Msg.message of
   WM_THEMECHANGED:
     PostMessage(Msg.hwnd,CB_SETEDITSEL,0,MakeLParam(Word(-1),Word(-1)));
 end;
end;



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1213621467
Terr
2008-06-16 17:04
2008.08.03
Бесплатна ли программа


2-1215269099
lewka
2008-07-05 18:44
2008.08.03
Перенос значения переменной


2-1214939769
maxon
2008-07-01 23:16
2008.08.03
Как создать и работать с двухмерным динамическим масивом?


3-1203485088
bagryan
2008-02-20 08:24
2008.08.03
коннект со второго раза


2-1215351389
Аврам
2008-07-06 17:36
2008.08.03
onclick and oncheckclick





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский