![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Давненько я багрепортов не слал :)
homm © (2007-05-27 13:13:00)Код практически из соседней ветки «выбор мышкой компонента».
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}
Стало:
{ пусто }
:))
Coco Chanel (2007-06-18 17:23:00) [1]And some more..
<a href= ></a> *
Cristian_pp (2007-06-18 17:23:00) [2]Konnichiwa!
Check this out!
<a href= ></a>,
Vladimir Kladov (2007-05-28 15:27:00) [3]Там уже все написано. Я бы рад в MCK отслеживать и удаление, но не знаю точно, как это сделать. И вообще, не так часто приходится что-то удалять с формы. проще ее сдвинуть, чем городить код.
AndreyRus (2007-05-28 15:14:00) [4]
> пошевели формой после удаления и все...
Нужно сделать раздел в книге о KOL - "Шаманство".
D[u]fa (2007-05-28 15:12:00) [5]пошевели формой после удаления и все
Dy1 (2007-05-28 12:16:00) [6]> > autoBuild:= true; autoBuildDelay:= 500;
> Просто я нетерпеливый, сам все сделал :))
А мне приходится после удаления компонента чистить Unit1_1.inc вручную :(
homm (2007-05-27 23:31:00) [7]> Кстати, необходимость выполнения 7'ого пункта это очень
> большой глюк и повод задуматься ведь в свойствах KOLProject1
> autoBuild:= true; autoBuildDelay:= 500;
Просто я не терпеливый, сам все сделал :))
А если серьезно, то удалене никакого компонента на влечет за собой ребилда исходного текста. Это справдливо и для невизуальных компонетов.
С создание правда глюк, но как обычно, достаточно двинуть формой.
«Мама, что мы будем делать, когда она двинет собой?»
© БГ :)
AndreyRus (2007-05-27 23:12:00) [8]Точно выполнении 7'ого пункта размер увеличивается на 316 байт. Отличается от вашего, но вероятно это связанно с версией KOL. У меня 2.48
Кстати, необходимость выполнения 7'ого пункта это очень большой глюк и повод задуматься ведь в свойствах KOLProject1 autoBuild:= true; autoBuildDelay:= 500;
homm (2007-05-27 22:38:00) [9]7а) Снова билдим
Пропустил
homm (2007-05-27 22:37:00) [10]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.
AndreyRus (2007-05-27 22:30:00) [11]
> Добавляет примерно 180 байт.
Создал проект с нуля. Результат тот же - ни один байт не добавляется!
homm (2007-05-27 19:48:00) [12]> А если нет applet'а, он что туда присваивать должен, себя
> самого, что ли
А почему бы себя и не присваивать? С аплетом же, я так понимаю форма и присваевается.
homm (2007-05-27 19:30:00) [13]Добавляет примерно 180 байт.
KOLProject1.BUILD;
AndreyRus (2007-05-27 19:21:00) [14]> Проверить ведь нетрудно, на сколько.
Станное дело! Наличие applet'а на форме не добавило ни байта кода или данных!
Vladimir Kladov (2007-05-27 18:32:00) [15]Проверить ведь нетрудно, на сколько. Правило простое: если форм > 1, то Applet желателен. Помимо прочих желаний (скрывать кнопку на таскбаре, работать с TTrayIcon, ловить все сообщения в AppletOnMessage и т.п.). ShowQuestion - это тоже форма.
AndreyRus (2007-05-27 18:14:00) [16]Хм. Опять разговоры за applet на форме... Я вот тоже его не использую в надежде на то, что это позволит хоть немного уменьшить код. Может быть я заблуждаюсь?
Vladimir Kladov (2007-05-27 17:37:00) [17]Потому что Applet.fCurrentControl присваивается в процедуре формы в ответ на WM_SETFOCUS. А если нет applet'а, он что туда присваивать должен, себя самого, что ли.
homm (2007-05-27 17:34:00) [18]> Applet на форму положить надо
Действительно, это все решает. А все-же интересно, почему появляеться такая ошибка, и нельзя ли ее без аплета решить?
Vladimir Kladov (2007-05-27 17:26:00) [19]У меня все нормально. Applet на форму положить надо (я-то это сразу сделал).
homm (2007-05-27 17:10:00) [20]Мда, туго оно без практики :))
Procedure OnMDn(Self: PControl; Sender: PControl; var Mouse: TMouseEventData);
Так? Инвариантно. Applet.ActiveControl пустой, и все слетает.