Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

Задание 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 вся ветка

Текущий архив: 2007.04.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.062 c
15-1173723374
Ringo
2007-03-12 21:16
2007.04.15
Вэб-камеры по всему миру.


2-1175016208
Express
2007-03-27 21:23
2007.04.15
Вопрос по WMI?


15-1173783456
Костя
2007-03-13 13:57
2007.04.15
Вузы


15-1174497274
Другой
2007-03-21 20:14
2007.04.15
Старые пивные этикетки (фото)


1-1171985703
webpauk
2007-02-20 18:35
2007.04.15
Уничтожение компонента изнутри