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

Вниз

Давненько я багрепортов не слал :)   Найти похожие ветки 

 
homm ©   (2007-05-27 13:13) [0]

Код практически из соседней ветки «выбор мышкой компонента».

Procedure OnMDn(Sender: PControl; var Mouse: TMouseEventData);
begin
 ShowQuestionEx("Атас!", "OK/Cancel", nil);
end;

procedure TForm1.Button1Click(Sender: PObj);
var
 Panel: PControl;
begin
 Panel := NewPanel( Form1.Form, esRaised).PlaceDown;
 Panel.OnMouseDown := TOnMouse( MakeMethod( Panel, @OnMDn));
 Form.Width := Form.Width-1;
end;


Последовательность действий:
1) Нажимаем на Button1;
(Кстати, тут-же баг второй, насчет выделеной стороки. Без нее новый контрол не появляется на форме)
2) Нажимаем на вновь созданую панельку.
3) видим диалог, нажимаем ОК.
4) Повторяем 2)
5) А вот тут уже облом, повторить 3) не получиться, т.к. в ShowQuestionEx есть такие строчки:
   {$IFNDEF NO_CHECK_STAYONTOP}
   CurForm := Applet.ActiveControl;
   DoStayOnTop := CurForm.StayOnTop;
   {$ENDIF  NO_CHECK_STAYONTOP}


И что примечательно, при втором вызове ShowQuestionEx, Applet.ActiveControl = nil!

ЗЫ: Хотел поругаться на новый алигн. :) Вовремя заметил что дело не в нем, а в костыле, вставленном для старого :))))
ЗЗЫ: Насчет обновления KOLGrushcontrols. Если его еше никто не обновил (Владимир, MTsv DN), обновите пожалуйста, сами.
Еще раз повторю, что нужно сделать:
в функции DrawControlState
Было:
Bitmap := NewBitMap(W, H);
Стало:
if UseDIB then
  Bitmap := NewDIBBitMap(W, H, pf32bit);
else
  Bitmap := NewBitMap(W, H);


Было:
{$IFDEF NOT_IMMIDIATLYONLY}
   if UseDIB then  begin
       TBM := NewDIBBitmap(W, H, pf32bit);
       Bitmap.Draw(TBM.Canvas.Handle, 0, 0);
       Bitmap.Free;
       Bitmap := TBM;
   end;
   {$ENDIF NOT_IMMIDIATLYONLY}

Стало:
{ пусто }
:))


 
Vladimir Kladov   (2007-05-27 16:41) [1]

Я что-то не понял. А первый параметр - где? (вместо @Self который)


 
homm ©   (2007-05-27 17:10) [2]

Мда, туго оно без практики :))

Procedure OnMDn(Self: PControl; Sender: PControl; var Mouse: TMouseEventData);

Так? Инвариантно. Applet.ActiveControl пустой, и все слетает.


 
Vladimir Kladov   (2007-05-27 17:26) [3]

У меня все нормально. Applet на форму положить надо (я-то это сразу сделал).


 
homm ©   (2007-05-27 17:34) [4]

> Applet на форму положить надо

Действительно, это все решает. А все-же интересно, почему появляеться такая ошибка, и нельзя ли ее без аплета решить?


 
Vladimir Kladov   (2007-05-27 17:37) [5]

Потому что Applet.fCurrentControl присваивается в процедуре формы в ответ на WM_SETFOCUS. А если нет applet"а, он что туда присваивать должен, себя самого, что ли.


 
AndreyRus   (2007-05-27 18:14) [6]

Хм. Опять разговоры за applet на форме... Я вот тоже его не использую в надежде на то, что это позволит хоть немного уменьшить код. Может быть я заблуждаюсь?


 
Vladimir Kladov   (2007-05-27 18:32) [7]

Проверить ведь нетрудно, на сколько. Правило простое: если форм > 1, то Applet желателен. Помимо прочих желаний (скрывать кнопку на таскбаре, работать с TTrayIcon, ловить все сообщения в AppletOnMessage и т.п.). ShowQuestion - это тоже форма.


 
AndreyRus   (2007-05-27 19:21) [8]

> Проверить ведь нетрудно, на сколько.
Станное дело! Наличие applet"а на форме не добавило ни байта кода или данных!


 
homm ©   (2007-05-27 19:30) [9]

Добавляет примерно 180 байт.

KOLProject1.BUILD;


 
homm ©   (2007-05-27 19:48) [10]

> А если нет applet"а, он что туда присваивать должен, себя
> самого, что ли

А почему бы себя и не присваивать? С аплетом же, я так понимаю форма и присваевается.


 
AndreyRus   (2007-05-27 22:30) [11]


> Добавляет примерно 180 байт.

Создал проект с нуля. Результат тот же - ни один байт не добавляется!


 
homm ©   (2007-05-27 22:37) [12]

1) Создаем проект
2) Билдим
3) Project - Information for <project>
4) Code Size: 16876;  Data Size: 1501;
5) Кладем Applet
6) Выделяем KOLApplication
7) Делаем двойной клик по свойству BUILD
8) Project - Information for <project>
9) Code Size: 17184;  Data Size: 1504;

На пустом проекте получилось даже больше, 308.


 
homm ©   (2007-05-27 22:38) [13]

7а) Снова билдим

Пропустил


 
AndreyRus   (2007-05-27 23:12) [14]

Точно выполнении 7"ого пункта размер увеличивается на 316 байт. Отличается от вашего, но вероятно это связанно с версией KOL. У меня 2.48

Кстати, необходимость выполнения 7"ого пункта это очень большой глюк и повод задуматься ведь в свойствах KOLProject1 autoBuild:= true; autoBuildDelay:= 500;


 
homm ©   (2007-05-27 23:31) [15]

> Кстати, необходимость выполнения 7"ого пункта это очень
> большой глюк и повод задуматься ведь в свойствах KOLProject1
> autoBuild:= true; autoBuildDelay:= 500;

Просто я не терпеливый, сам все сделал :))

А если серьезно, то удалене никакого компонента на влечет за собой ребилда исходного текста. Это справдливо и для невизуальных компонетов.
С создание правда глюк, но как обычно, достаточно двинуть формой.

«Мама, что мы будем делать, когда она двинет собой?»
© БГ :)


 
Dy1 ©   (2007-05-28 12:16) [16]

> > autoBuild:= true; autoBuildDelay:= 500;
> Просто я нетерпеливый, сам все сделал :))

А мне приходится после удаления компонента чистить Unit1_1.inc вручную :(


 
D[u]fa ©   (2007-05-28 15:12) [17]

пошевели формой после удаления и все


 
AndreyRus   (2007-05-28 15:14) [18]


> пошевели формой после удаления и все...


Нужно сделать раздел в книге о KOL - "Шаманство".


 
Vladimir Kladov   (2007-05-28 15:27) [19]

Там уже все написано. Я бы рад в MCK отслеживать и удаление, но не знаю точно, как это сделать. И вообще, не так часто приходится что-то удалять с формы. проще ее сдвинуть, чем городить код.


 
Cristian_pp   (2007-06-18 17:23) [20]

Konnichiwa!
Check this out!
<a href=  ></a>,


 
Coco Chanel   (2007-06-18 17:23) [21]

And some more..
<a href=  ></a>  *



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

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

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1196096385
AntonUSAnoV
2007-11-26 19:59
2007.12.23
импорт/экспорт в MS WORD


15-1195830190
oldman
2007-11-23 18:03
2007.12.23
Что-то я не понял шуток ХР...


15-1195814417
Cyrax
2007-11-23 13:40
2007.12.23
Оптимальный способ задания ширины столбцов таблицы.


15-1195825460
Dmitry S
2007-11-23 16:44
2007.12.23
Edit+Ole Objects


15-1195725467
@!!ex
2007-11-22 12:57
2007.12.23
программирование под Linux