Цитата:
Сообщение от dr. F.I.N.
Вот тебе процедурка без всяких задурений с типом объектов.
Код:
uses
TypInfo;
function CheckRedFont(ParentControl: TObject; CheckSelf: Boolean = false): Boolean;
var
i: Integer;
PropInfo: PPropInfo;
begin
Result := false;
if CheckSelf
then
begin
PropInfo := GetPropInfo(ParentControl.ClassInfo, 'Font');
if PropInfo <> nil
then Result := Result and (TFont(GetOrdProp(ParentControl, 'Font')).Color = clRed);
end;
if ParentControl is TControl
then
for i := 0 to TControl(ParentControl).ComponentCount - 1 do
begin
if TControl(ParentControl).Components[i] is TControl
then Result := CheckRedFont(TControl(ParentControl).Components[i], true)
else
begin
PropInfo := GetPropInfo(TControl(ParentControl).Components[i].ClassInfo, 'Font');
if PropInfo <> nil
then Result := Result and (TFont(GetOrdProp(TControl(ParentControl).Components[i], 'Font')).Color = clRed);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckRedFont(form1)
then
ShowMessage('red');
end;
|
Спасибо за процедурку та же рекурсия просто более универсальная для .font.color, но у меня ещё есть компоненты в которых нужно проверить .TControlEmptyDataInfoEh.Font.Color и свойство Not VarIsNull(.Value)
и + ко всему обнаружил невидимые SpeedButton's на текстовом поле ввода которые имеют красный цвет