IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Список цветов
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


var
ATypeInfo: PTypeInfo;
i:Tcolor;
begin
memo1.Clear;
ATypeInfo := TypeInfo(Tcolor);
for i:=high(tcolor)-40 to high(tcolor) do
memo1.Lines.Add(GetEnumName(ATypeInfo, ord(i)));
end;
или
var
i:Tcolor;
begin
memo1.Clear;
for i:=high(tcolor)-40 to high(tcolor) do
memo1.Lines.Add(colortostring(i));
end;
Выдает список из номеров цветов, а не из их названий. Как можно взять имя цвета?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
сообщение
Сообщение #2


Гость






Я ж написал, что не получится у тебя работать с константами через GetEnumName... Проверил? Убедился? smile.gif

Вот так попробуй:
procedure TForm1.MyColorCallback(const S: string); // Опиши в классе формы
begin
Memo1.Lines.Add(S);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
memo1.Clear;
GetColorValues(MyColorCallback); // Описано в модуле Graphics
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Все получилось
Тока что-то не понял работу всего этого. В первой процедуре идет добавление в список и все. На кнопку мемо очищается и вызывается GetColorValues со странным параметром...
Цитата
Описано в модуле Graphics
А как посмотреть? CTRL+F1?

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Это Callback процедура... Вот так это все работает:

1) есть описание всех цветов:
const
Colors: array[0..51] of TIdentMapEntry = ( ... );

2) есть сама процедура GetColorValues:
procedure GetColorValues(Proc: TGetStrProc);
var
I: Integer;
begin
for I := Low(Colors) to High(Colors) do Proc(Colors[I].Name);
end;
, и твоя, которая передается в GetColorValues, и вызывается на каждой итерации цикла. Теперь понятнее, как это печатается?

Цитата
А как посмотреть? CTRL+F1?
Если исходники доступны - то Ctrl + клик мышью на имени процедуры... Если нет - то Ctrl+F1, хоть что-то...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Получается что к этому массиву цветов нельзя просто так обратиться. Он описан где-то как недоступный для других модулей (в секции private модуля graphics)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Он описан где-то как недоступный для других модулей (в секции private модуля graphics)?
yes2.gif Ну сам посуди, если б он был доступен, стали бы делать специальные средства доступа к нему? (только не в секции Private, а в Implementation)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


а так хочется чего-то попроще smile.gif
СПАСИБО БОЛЬШОЕ VOLVO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.12.2020 10:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name