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;
Я ж написал, что не получится у тебя работать с константами через 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;
Все получилось
Тока что-то не понял работу всего этого. В первой процедуре идет добавление в список и все. На кнопку мемо очищается и вызывается GetColorValues со странным параметром...
Это Callback процедура... Вот так это все работает:
1) есть описание всех цветов:
const
Colors: array[0..51] of TIdentMapEntry = ( ... );
procedure GetColorValues(Proc: TGetStrProc);, и твоя, которая передается в GetColorValues, и вызывается на каждой итерации цикла. Теперь понятнее, как это печатается?
var
I: Integer;
begin
for I := Low(Colors) to High(Colors) do Proc(Colors[I].Name);
end;
Получается что к этому массиву цветов нельзя просто так обратиться. Он описан где-то как недоступный для других модулей (в секции private модуля graphics)?
а так хочется чего-то попроще
СПАСИБО БОЛЬШОЕ VOLVO