ColorPicker

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
timself
Сообщения: 16
Зарегистрирован: 15 мар 2007, 01:28

Не могу сообразить как сделать. Возможно там всё элементарно, а я просто туплю, но тем не менее...
Для наглядности я всё изобразил на скриншоте. Там вид окна, код и суть вопроса.

Скриншот: http://www.ljplus.ru/img4/f/a/fatherlan ... ros-01.gif

Прошу взглянуть, если не затруднит.
tim-soft.narod.ru
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

У ColorBox усть такое свойство Color, думаю здесь всё аналогично..


Темы нужно осмысленнее называть.
Аватара пользователя
timself
Сообщения: 16
Зарегистрирован: 15 мар 2007, 01:28

Смысл в том, что непонятно какой именно панели нужно передавать цвет. Они вроде как "ананимные" (Sender as TPanel). Вот в чем загвоздка.
Как разрулить то...?
tim-soft.narod.ru
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Пишем ColorBox.Color - разрулено.
(Sender as ColorBox).Color - разрулено.
Или более конкретно формулируем мысль
Аватара пользователя
timself
Сообщения: 16
Зарегистрирован: 15 мар 2007, 01:28

(Sender as TPanel).Color := ColorPicker.SelColor;
Этот метод не работает !!!!!!!! (проверено)
Панел перестает быть сендером как только выводится ColorPicker.
Непонятно какой именно панели передавать выбранный в ColorPicker цвет.
tim-soft.narod.ru
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

А догнал реч идёт о том чтоб передать цвет панели заданный цвет из диолога, т.е. перекрасить её...
Тут вариант только один до вызова сохранить имя элемента например (или ещё варианты к примеру взять контрол под мышкой... ) , после выбора найти и перекрасить его.


Формулировать задачи адекватней нужно..
Аватара пользователя
timself
Сообщения: 16
Зарегистрирован: 15 мар 2007, 01:28

Проблема решена.
В конце концов сделал так:

Код: Выделить всё

...
ColorPicker: TColorPickerButton;
...
var
  Form1: TForm1;
  pan: HWND;
...
procedure TForm1.SetPicker(Sender: TObject);
begin
  pan:= (Sender as TPanel).Handle;
  ColorPicker.Height:=(Sender as TPanel).Height;
  ColorPicker.Left:=(Sender as TPanel).Left;
  ColorPicker.Top:=(Sender as TPanel).Top;
  ColorPicker.DroppedDown:= True;
end;
...
// обшее OnClick для всех панелей...
procedure TForm1.Panel1Click(Sender: TObject);
begin
  SetPicker(Sender);
end;
...
procedure TForm1.ColorPickerChange(Sender: TObject);
begin
  (FindControl(pan) as TPanel).Color:= ColorPicker.SelectionColor;
end;
...
tim-soft.narod.ru
Аватара пользователя
timself
Сообщения: 16
Зарегистрирован: 15 мар 2007, 01:28

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Код: Выделить всё

procedure TForm1.PanelNClick(Sender: TObject);
begin
  ...
  ColorPicker.Tag:=integer(Sender as TPanel);
end;

procedure TForm1.ColorPickerChange(Sender: TObject);
begin
  (TObject(ColorPicker.Tag) as TPanel).Color:=ColorPicker.SelectionColor;
end;
tim-soft.narod.ru
sasha3050
Сообщения: 26
Зарегистрирован: 04 окт 2008, 23:13

Пожалуйста помогите очень нужно!!!!!!!!!Написать программу на Paskal, которая вычисляет среднюю длину слов в файле, который содержит текст.В данном случае будет считатьтся любая строка символов, которая начинается и заканчивается одним с следующих елеметов: пробел, запятая, точка, начало строки и конец строки.В программе должна быть обозначена функция, которая получает в качестве аргумента поток ввода с файла.
Ответить