Вверх ↑
Этот топик читают: Гость
Ответов: 1925
Рейтинг: 172
#16: 2009-04-25 21:55:57 ЛС | профиль | цитата
Вот Диалог выбора цвета. Только он не работает - выдаёт ошибку при нажатии ОК. Я так и не смог найти причину. Может быть, кто-то посмотрит и поможет. А так - много дополнительных свойств по сравнению со стандартным.
карма: 9
0
файлы: 1ColorDialogEx_10.rar [2.7KB] [323]
Администрация
Ответов: 15294
Рейтинг: 1518
#17: 2009-04-26 00:19:05 ЛС | профиль | цитата
3042 писал(а):
Я так и не смог найти причину



#pas
FColorDialogEx.OnCanClose := onCanClose;
карма: 26
0
Ответов: 1925
Рейтинг: 172
#18: 2009-04-26 15:12:58 ЛС | профиль | цитата

procedure THIColorDialogEx.onCanClose;
var dt:TData;
begin
_hi_OnEvent(_event_OnCanClose,ChooseColor.rgbResult);
if ReadInteger(dt,_data_Close,0) = 0 then ACanClose := true
else ACanClose := false;
end;


Вот здесь что-то не ладится, потому что когда комментирую:



procedure THIColorDialogEx.onCanClose;
var dt:TData;
begin
_hi_OnEvent(_event_OnCanClose,ChooseColor.rgbResult);
{if ReadInteger(dt,_data_Close,0) = 0 then ACanClose := true
else ACanClose := false;}
end;

, то всё в порядке, никаких ошибок.
Однако в SDialogEx я использовал точно такую же конструкцию, и всё работало!

Причём ошибка возникает тогда, когда к _data_Close ничего не подключено, но если подключить:

Add(ColorDialogEx,10603938,287,140)
{
Title="Диалог выбра цвета - 3042"
Color=12639424
HelpButton=1
Point(CustomColors)
Point(OnChangeColor)
Point(OnChangeCustomColors)
Point(doColor)
Point(Close)
link(Close,12264157:Value,[])
}
Add(Memory,12264157,287,84)
{
Default=Integer(1)
}
, то всё работает, ведь вышеприведённый код (где ничего не закоментировано)

[size=-2]------ Добавлено в 15:12
А если ещё точнее, то оршибка здесь:

ReadInteger(dt,_data_Close,0);[/code]
Если написать так:
[quote]procedure THIColorDialogEx.onCanClose;
var dt:TData;
begin
_hi_OnEvent(_event_OnCanClose,ChooseColor.rgbResult);
ReadInteger(dt,_data_Close,0);
{if ReadInteger(dt,_data_Close,0) = 0 then ACanClose := true
else ACanClose := false;}
end;[/quote],
то будет ошибка. Почему же число не хочет считываться?
карма: 9
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#19: 2009-04-26 15:37:40 ЛС | профиль | цитата
Поставь dtNull(dt) перед ReadInteger и попробуй.
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#20: 2009-04-26 15:38:37 ЛС | профиль | цитата
3042, читаем сначало это Код

3042 писал(а):
Почему же число не хочет считываться?

потому что делать надо по аналогии с методами, которые в пакете уже несколько лет присутствуют и никаких проблем не вызывают.

#pas
function THIMainForm._onClose;
begin
...
if Accept and(ToIntegerEvent(_data_Close)<>0) then exit;
...
end;

карма: 26
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#21: 2009-04-26 15:47:48 ЛС | профиль | цитата
Тюфу, блин, действительно зачем там ReadInteger, когда есть ToIntegerEvent только для верхних точек
карма: 22

0
Ответов: 8888
Рейтинг: 823
#22: 2009-04-26 16:24:55 ЛС | профиль | цитата
nesco, вставте в заготовки для компонентов и IC всего несколько строчек-коментарий:

#pas
//ReadInteger(_Data,_data_ИмяВерхнейТочки,_prop_Свойство) - так читаются данные отовсюду;
//ToInteger(_Data) - так читаются данные только из потока
//....... и т. д. для всех точек и типов данных.
карма: 19

0
Ответов: 1925
Рейтинг: 172
#23: 2009-04-26 16:35:32 ЛС | профиль | цитата
Да, действительно, всё в порядке, спасибо за совет.

Правда, там ещё остался небольшой глюк, если можно так сказать: через массив невозможно задать цвета в наборе. Получить можно, а задать - нет (см. пример в архиве). Но, возможно, это невозможно в принципе. Но тогда - компонент, в принципе, готов.
карма: 9
0
файлы: 1ColorDialogEx_1b.rar [2.9KB] [302]
Администрация
Ответов: 15294
Рейтинг: 1518
#24: 2009-04-26 16:36:14 ЛС | профиль | цитата
Леонид, все особенности использование IC в комментарии не напишешь
------------ Дoбавленo в 16.38:
3042 писал(а):
Но тогда - компонент, в принципе, готов.

я бы так не сказал. Как минимум от этого состояния его отделяет правильная передача указателя на панель, которая строится на использовании менеджера, а не на поиске элементов по заголовку. Все визуальные элементы экспортируют интерфейс IControlManager откуда сразу можно получить указатель на объект - ctrlpoint
карма: 26
0
Ответов: 1925
Рейтинг: 172
#25: 2009-04-26 21:12:02 ЛС | профиль | цитата
Dilma писал(а):
интерфейс IControlManager откуда сразу можно получить указатель на объект - ctrlpoint


Я не знаком с этой технологией. Где можно узнать о ней, как её применять? Может быть, в кодах каких-нибудь компонентов?
карма: 9
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#26: 2009-04-26 21:30:20 ЛС | профиль | цитата
3042 писал(а):
Может быть, в кодах каких-нибудь компонентов?



Add(RedrawManager,11454834,91,553)
{
}

карма: 22

0
Ответов: 1925
Рейтинг: 172
#27: 2009-04-27 10:50:16 ЛС | профиль | цитата
Вот. Тестируйте.
карма: 9
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#28: 2009-04-27 11:41:26 ЛС | профиль | цитата
При выборе Define custom color курсором мыши изменяются только значения цвета в цветовом пространстве HSL, а в RGB - всегда белый цвет
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 1925
Рейтинг: 172
#29: 2009-04-27 11:55:47 ЛС | профиль | цитата
---
карма: 9
0
файлы: 1ColorDialogEx_.rar [12.9KB] [336]
Главный модератор
Ответов: 2997
Рейтинг: 395
#30: 2009-04-27 12:23:25 ЛС | профиль | цитата
Теперь, на первый взгляд, работает.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
30
Сообщение
...
Прикрепленные файлы
(файлы не залиты)