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

Вниз

Задание StateImage для эл-тов TKOLTreeView при создании формы.   Найти похожие ветки 

 
Unknown Mystic ©   (2006-03-22 14:23) [0]

Мне нужно при создании формы заполнить TKOLTreeView некоторыми элементами, часть из которых должна быть отмечена галочкой. По идее все это просто:

Node := TreeView.TVInsert( 0, 0, "Item1" );
TreeView.TVItemStateImg[Node] := 2;

только из CreateForm это работает на половину - элементы создаются, а галки - не ставятся :(
Если же "повесить" тот же код, скажем, на нажатие кнопки, то все работает нормально.

Подскажите пожалуйста, как это побороть?


 
Vladimir Kladov   (2006-03-22 16:49) [1]

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


 
Unknown Mystic ©   (2006-03-22 22:11) [2]


> попробуйте в OnShow

Не получается...


>  тогда в OnShow послать себе сообщение и в OnMessage уже
> тогда по этому сообщению


Это как? Примерно так?
В OnShow:
SendMessage(Applet.GetWindowHandle, 99999, 0, 0);

А в OnMessage:
if Msg.message = 99999 then
begin
 Node := TreeView.TVInsert( 0, 0, "Item1" );
 TreeView.TVItemStateImg[Node] := 2;
end;
Result := FALSE;

Сообщение форма получает, но галки все равно нет... :(
Тоже самое, если сообщение слать не форме, а TreeView"у...


 
Vladimir Kladov   (2006-03-23 15:20) [3]

SendMessage выполняется немедленно - смысл-то какой? PostMessage надо.


 
Unknown Mystic ©   (2006-03-24 01:11) [4]

Исправил на PostMessage... Результат тот же - галок нет...


 
Vladimir Kladov   (2006-03-24 18:28) [5]

если код срабатывает (проверяли?), тогда не знаю. Еще раз пошлите, через 2 сообщения. Видимо, сообщение приходит все еще слишком рано. Я иногда такие штуки даже на таймер сажал, запуская в OnShow. Сначала надо добиться, чтобы заработало вообще, а потом уже можно варьировать.


 
Unknown Mystic ©   (2006-03-25 02:37) [6]

Код создающий элемент и ставящий галку работает и с кнопки и с таймера, даже если его выполнять при самом первом срабатывании таймера и от интервала не зависит (галочки выставляются при любом) (Таймер MCK"шный и Enabled = True выставлял в инспекторе объектов)

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

Последовательность из 2, 3, 5 сообщений не помогла...

С таймером, как я писал выше все нормально... Только вот не хочется его в проект пихать... Там у меня таймеры не используются...


 
Unknown Mystic ©   (2006-08-18 13:44) [7]

Пол года вот пользовался таймером, а сейчас предпринял еще одну попытку...
Решил добавить PostMessage, как можно позже. Самое позднее, что я нашел - функция Run в kol.pas. Получилось вот что:

procedure Run( var AppletWnd: PControl );
begin
 AppletRunning := True;
 Applet := AppletWnd;
 AppletWnd.CreateWindow; //virtual!!!
 PostMessage(Applet.Handle, 99999, 0, 0); // This string was added.
 while not AppletTerminated do
 begin
   WaitMessage;
   AppletWnd.ProcessMessages;
   {$IFDEF USE_OnIdle}
   ProcessIdle( AppletWnd );
   {$ENDIF}
 end;
 if AppletWnd <> nil then
   TerminateExecution( AppletWnd );
end;


(В обработчике OnMessage тоже, что и несколькими сообщениями выше.)

Но все равно отметки не проставляются :(
Если же перед выставлением отметок вывести какое-то сообщение (например, MsgOK("...");), то пока будет нажата кнопка ок, этой задержки хватит, что бы отметки были проставлены как нужно...

В связи с этим вопрос:
Что еще может выполняться параллельно с обработкой моего сообщения?



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

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

Наверх





Память: 0.47 MB
Время: 0.037 c
9-1146341758
Pa5ha
2006-04-30 00:15
2007.04.15
Солнце на OpenGL


15-1173879490
Vlad Oshin
2007-03-14 16:38
2007.04.15
Проблема с копированием текста из delphi. крякозябы


2-1174575033
elserpiente
2007-03-22 17:50
2007.04.15
Реализация TOP в FB


4-1164385794
trubin
2006-11-24 19:29
2007.04.15
Word против waitForSingleObject


15-1174549525
Интересующийся
2007-03-22 10:45
2007.04.15
TV тюнеры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский