Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 15:40   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
Смущение Восстановить правильные значения CMYK при изменение одного из значений

Так вот проблема в следующем:
На форме есть четыре SpinEdit'а (вкладка Samples).
Каждое из них имеет имя: CMYKcyan, CMYKmagenta, CMYKyellow и CMYKblack.
При старте программы Value каждого элемента=0, но CMYKblack=100 (черный цвет). (это модель CMYK, а не CMYK 255!)
Задача такова, что если я поставлю скажем CMYKcyan на 10, то CMYKblack останется быть 100, что неверно, когда правильно 90.

Если быть короче то нужен код, который при изменении одного значения менял другие значения, чтобы не было таких ошибок.
hon вне форума Ответить с цитированием
Старый 16.08.2012, 15:46   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

OnChange чем не подходит? Можно один на всех и по Sender определять откуда вызван или отдельный для каждого. Не устроит - можно в OnExit
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2012, 15:51   #3
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
OnChange чем не подходит? Можно один на всех и по Sender определять откуда вызван или отдельный для каждого. Не устроит - можно в OnExit
Вопрос не в этом. Я понимаю что чье значение было изменено важно. Но мне нужен именно код.
hon вне форума Ответить с цитированием
Старый 16.08.2012, 16:01   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А че код? Сложно написать процедуру, которая принимает значение
Цитата:
скажем CMYKcyan на 10
и автоматически просчитывает нужные значения для остальных?

Цитата:
то CMYKblack останется быть 100, что неверно, когда правильно 90.
Что за набор не связанных слов?
Человек_Борща вне форума Ответить с цитированием
Старый 16.08.2012, 16:10   #5
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А че код? Сложно написать процедуру?
Не знаю как писать. Нет идеи как писать код.
hon вне форума Ответить с цитированием
Старый 16.08.2012, 16:14   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

О_О
[ПСЕВДОCODE]
процедура ПриветМир(Параметр1:Строка).
Начало
Компонент1.Значение = Параметр1.
Компонент2.Значение = Компонент1.Значение + 10 - 4.
Компонент3.Значение = Компонент1.Значение + Компонент2.Значение - 27 + Параметр1.
конец.
[/CODE]

Вот вам пример.
Человек_Борща вне форума Ответить с цитированием
Старый 16.08.2012, 16:31   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Пример для 2 спинэдитов с одним обработчиком
Код:
procedure TForm1.SpinEditChange(Sender: TObject);
var xSpinEdit: TSpinEdit;
begin
  if Sender=SpinEdit1 then xSpinEdit:=SpinEdit2
                      else xSpinEdit:=SpinEdit1;
  xSpinEdit.OnChange:=nil;
  xSpinEdit.Value:=255-TSpinEdit(Sender).Value;
  xSpinEdit.OnChange:=SpinEditChange;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2012, 21:17   #8
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Мне это не нужно. Мне нужен код который восстанавливал значения CMYK. Это связано только с CMYK, тут то что у меня спинэдит, а не эдит не имеет разницы. Работа только с цветовым пространством.

Обьясняю задачу еще раз:

У вас есть 4 спинэдита. Каждый отвечает за конкретные цвет CMYK. Сейчас стоит черный цвет, тоесть 0,0,0,100. Мы увеличиваем cyan на 10. Получаем 10,0,0,100. А правильно должно быть 10,0,0,90. КАК избежать этой ошибки?
hon вне форума Ответить с цитированием
Старый 16.08.2012, 21:22   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
КАК избежать этой ошибки?
А я что предложил? Все, кроме конкретного расчета для какого спинэдита и на сколько изменить значенние. Ну если знаете как должно быть правильно, то это и есть готовая формула, осталось только рассчитанные значения поместить в нужные места. В чем проблема?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.08.2012, 21:41   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я понял, что автор либо сам не знает, что хочет. Либо думает, что все телепаты и из головы вытянут его обьяснения. И да, можно человеческим языком ищложить, что вам надо?
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RGB в CMYK и CMYK в RGB могут конвертироваться без потери качества? hon Мультимедиа в Delphi 5 19.08.2012 14:41
проблема при копировании одного столбца из одного файла в другой файл tanunya Помощь студентам 0 24.02.2012 21:30
Изменение значения числа при увеличении разрядности PARTOS Microsoft Office Excel 5 25.02.2011 20:56
Изменение значений одного выпадающего списка, при измнении значения другого Ground Microsoft Office Access 5 07.09.2010 22:00
удалилось окошечко, в котором отображались значения переменных во время отладки, как его восстановить? Jonnie Общие вопросы C/C++ 2 19.03.2009 21:15