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;
Выдает список из номеров цветов, а не из их названий. Как можно взять имя цвета?
volvo
25.05.2009 21:58
Я ж написал, что не получится у тебя работать с константами через GetEnumName... Проверил? Убедился?
Вот так попробуй:
procedure TForm1.MyColorCallback(const S: string); // Опиши в классе формы begin Memo1.Lines.Add(S); end;
procedure TForm1.Button4Click(Sender: TObject); begin memo1.Clear; GetColorValues(MyColorCallback); // Описано в модуле Graphics end;
Client
25.05.2009 22:02
Все получилось Тока что-то не понял работу всего этого. В первой процедуре идет добавление в список и все. На кнопку мемо очищается и вызывается GetColorValues со странным параметром...
Цитата
Описано в модуле Graphics
А как посмотреть? CTRL+F1?
volvo
25.05.2009 22:27
Это 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, хоть что-то...
Client
25.05.2009 22:40
Получается что к этому массиву цветов нельзя просто так обратиться. Он описан где-то как недоступный для других модулей (в секции private модуля graphics)?
volvo
25.05.2009 22:42
Цитата
Он описан где-то как недоступный для других модулей (в секции private модуля graphics)?
Ну сам посуди, если б он был доступен, стали бы делать специальные средства доступа к нему? (только не в секции Private, а в Implementation)
Client
25.05.2009 22:51
а так хочется чего-то попроще СПАСИБО БОЛЬШОЕ VOLVO
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.